久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3412|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

stm32f103單片機(jī)串口連續(xù)發(fā)送多字節(jié)程序求分析問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
stm32f103單片機(jī)做通信控制,發(fā)送的數(shù)據(jù)總是不對(duì)。抄了網(wǎng)上各種發(fā)送程序,禁止編譯器優(yōu)化等都試遍了。實(shí)在不知道錯(cuò)在哪里,請(qǐng)網(wǎng)友幫忙指教。比如說(shuō)我要發(fā)送的數(shù)據(jù):0x5a  0xa5  0x03  0x10  0x20  0x30  ;
上面0x5a  0xa5是幀頭,0x03是后面要發(fā)送的數(shù)據(jù)量(這里是3個(gè)), 0x10  0x20  0x30  就是要發(fā)送的數(shù)據(jù)了。
下面的圖片是我試著從發(fā)送一個(gè)字節(jié)到發(fā)送7個(gè)字節(jié)時(shí)收到了數(shù)據(jù)截圖,好給大伙分析;
最先發(fā)送一個(gè)字節(jié),是外圍接了一個(gè)按鈕,按一次發(fā)送一次。


發(fā)送一個(gè)字節(jié)后串口助手接收到正確的數(shù)據(jù)


從一次發(fā)送兩個(gè)字節(jié)開(kāi)始接收就不對(duì)了


第一次按按鈕,接收到的是0x5a。沒(méi)錯(cuò),第一次只能收到一個(gè)字節(jié),按道理應(yīng)該接收到0x5a  0xa5。從第二次開(kāi)始接收到的數(shù)據(jù)時(shí)0xa5  0x5a,這是一次收到了兩個(gè)字節(jié)但反了順序。不知道程序錯(cuò)在哪里,求指點(diǎn)!


后面是發(fā)送3個(gè)字節(jié)


沒(méi)讓我失望,接收的還是2個(gè)字節(jié)。但從這里開(kāi)始,接收到的都已經(jīng)不是原來(lái)發(fā)送了的數(shù)據(jù)了。發(fā)送的0x5a  0xa5  0x03已經(jīng)變成了0x5a  0x3f兩個(gè)字節(jié)了。


后面的我也懶得打字了,都是少了一個(gè)字節(jié)。0xa5  0x03 都變成了 0x3f。
















請(qǐng)大神們幫我分析一下問(wèn)題出在哪里了?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:91471 發(fā)表于 2021-5-6 15:59 | 只看該作者
求一份可以一次正確發(fā)送多字節(jié)的程序范例,稍微改一下還能發(fā)送MODBUS協(xié)議的多字節(jié)程序。
回復(fù)

使用道具 舉報(bào)

板凳
ID:538157 發(fā)表于 2021-5-6 19:29 | 只看該作者
恕我太菜看不出什么問(wèn)題來(lái),但是從你程序的大括號(hào)上看,我發(fā)現(xiàn)你的程序一直在初始化硬件,然后再發(fā)送,我建議你把硬件的初始化配置只執(zhí)行一次,發(fā)送部分放在一個(gè)while(1)循環(huán)里,最好加一個(gè)按鍵條件判斷發(fā)送,方便調(diào)試。最后,我把一個(gè)確定沒(méi)有問(wèn)題的函數(shù)給你,你應(yīng)該也是標(biāo)準(zhǔn)庫(kù)寫的,你看看試一試。
/*****************  發(fā)送一個(gè)字節(jié) **********************/
void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)//選擇哪一個(gè)串口,選擇發(fā)送哪一個(gè)數(shù)據(jù)
{
        /* 發(fā)送一個(gè)字節(jié)數(shù)據(jù)到USART */
        USART_SendData(pUSARTx,ch);
               
        /* 等待發(fā)送數(shù)據(jù)寄存器為空 */
        while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);       
}

/****************** 發(fā)送指定長(zhǎng)度的數(shù)組 ************************/
void Usart_SendArray( USART_TypeDef * pUSARTx, uint8_t *array, uint16_t num)//選擇哪一個(gè)串口,數(shù)組名或者指針,數(shù)據(jù)長(zhǎng)度即有幾個(gè)發(fā)送的數(shù)據(jù)
{
  uint8_t i;
       
        for(i=0; i<num; i++)
  {
            /* 發(fā)送一個(gè)字節(jié)數(shù)據(jù)到USART */
            Usart_SendByte(pUSARTx,array[i]);       

  }
        /* 等待發(fā)送完成 */
        while(USART_GetFlagStatus(pUSARTx,USART_FLAG_TC)==RESET);

}
modbus通信的部分,
回復(fù)

使用道具 舉報(bào)

地板
ID:889094 發(fā)表于 2021-5-6 20:21 | 只看該作者
51的過(guò)來(lái)學(xué)習(xí)一下,確定兩邊的波特率是一樣的?
回復(fù)

使用道具 舉報(bào)

5#
ID:91471 發(fā)表于 2021-5-9 10:35 | 只看該作者
xu2509674896 發(fā)表于 2021-5-6 19:29
恕我太菜看不出什么問(wèn)題來(lái),但是從你程序的大括號(hào)上看,我發(fā)現(xiàn)你的程序一直在初始化硬件,然后再發(fā)送,我建 ...

謝謝!我現(xiàn)在只是想把功能實(shí)現(xiàn),上面是在開(kāi)關(guān)步進(jìn)電機(jī)。現(xiàn)在外地出差還沒(méi)試你說(shuō)可以正常用的程序,我看了一下大概率是不正常的,因?yàn)槟嵌纬绦蛭乙呀?jīng)試過(guò)了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精品成人在线视频 | 欧美久久久电影 | 国产自产21区 | 国产香蕉视频 | 丁香久久 | 91欧美| 精品成人在线观看 | 亚洲成色777777在线观看影院 | 精品一区二区三区视频在线观看 | 黄色国产| 成人久久久久久久久 | 国产综合精品一区二区三区 | 国产女人第一次做爰毛片 | 成人免费看片 | 色天天综合| 欧美精品一区三区 | 亚洲成人免费 | 色综合久久久久 | 综合色播| 中文字幕在线播放不卡 | 噜久寡妇噜噜久久寡妇 | 亚洲精品一区二区三区蜜桃久 | 亚洲第一在线 | 中国一级特黄毛片大片 | 日本电影韩国电影免费观看 | 中文字幕av高清 | 国产精品1 | 最新中文字幕第一页视频 | 成人av看片 | 国产乱码精品一区二区三区五月婷 | 免费观看a级毛片在线播放 黄网站免费入口 | 国产麻豆乱码精品一区二区三区 | 天天弄天天操 | 午夜激情在线视频 | 伊人精品在线视频 | 偷拍亚洲色图 | 成人片免费看 | 户外露出一区二区三区 | 亚洲精品黄色 | 国产不卡一区在线观看 | 亚洲国产精品成人综合久久久 |