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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3390|回復: 4
打印 上一主題 下一主題
收起左側

stm32f103單片機串口連續發送多字節程序求分析問題

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


發送一個字節后串口助手接收到正確的數據


從一次發送兩個字節開始接收就不對了


第一次按按鈕,接收到的是0x5a。沒錯,第一次只能收到一個字節,按道理應該接收到0x5a  0xa5。從第二次開始接收到的數據時0xa5  0x5a,這是一次收到了兩個字節但反了順序。不知道程序錯在哪里,求指點!


后面是發送3個字節


沒讓我失望,接收的還是2個字節。但從這里開始,接收到的都已經不是原來發送了的數據了。發送的0x5a  0xa5  0x03已經變成了0x5a  0x3f兩個字節了。


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
















請大神們幫我分析一下問題出在哪里了?

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

使用道具 舉報

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

使用道具 舉報

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

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

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

}
modbus通信的部分,
回復

使用道具 舉報

地板
ID:889094 發表于 2021-5-6 20:21 | 只看該作者
51的過來學習一下,確定兩邊的波特率是一樣的?
回復

使用道具 舉報

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

謝謝!我現在只是想把功能實現,上面是在開關步進電機。現在外地出差還沒試你說可以正常用的程序,我看了一下大概率是不正常的,因為那段程序我已經試過了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久天堂 | 最新91在线 | 99久久国产综合精品麻豆 | 黑人巨大精品欧美一区二区一视频 | www午夜视频 | 在线观看国产三级 | 丁香五月网久久综合 | 成人免费三级电影 | 久久精品国产免费一区二区三区 | 精品国产乱码久久久久久a丨 | 日韩在线不卡 | 国产精品欧美精品日韩精品 | 国产精品久久久久久久久久久久冷 | 久久久精品网 | 在线观看中文字幕dvd播放 | 亚洲免费精品 | 国产成人精品久久二区二区 | 亚洲人免费视频 | 中文字幕一区二区三区乱码在线 | 中文字幕亚洲一区 | av网站在线免费观看 | 久久一区二区av | 日本天天操 | 91精品国产自产精品男人的天堂 | 成人毛片视频免费 | 99精品99久久久久久宅男 | 九九热在线免费观看 | 国产精品久久久久久久久久免费看 | 精品国产一区二区三区观看不卡 | 日韩视频在线观看一区二区 | 黄色网址免费在线观看 | 成人免费看片 | 国产欧美精品一区二区三区 | 国产高清视频在线 | 免费成人高清 | 国产成人午夜精品影院游乐网 | 精品在线观看入口 | 日本精品一区二区三区在线观看视频 | 精品久久久网站 | 国产精品一区二区欧美黑人喷潮水 | 国产精品毛片久久久久久久 |