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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3526|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99久久久久久| 日本色婷婷 | 国产高清一区二区 | 三级视频久久 | 久久久久久久一区 | 国产成人精品一区二区三 | 精品国产伦一区二区三区观看说明 | 男女羞羞视频免费看 | 国产精品69久久久久水密桃 | 最近免费日本视频在线 | 成人无遮挡毛片免费看 | 男女视频在线观看 | 国产精品视频一区二区三区 | 成人久久久久久久久 | 亚洲一区视频 | 91精产国品一二三区 | 视频一区二区在线观看 | 国产精品视频免费 | 91伊人网 | 欧美三级不卡 | 成人国产精品久久久 | 国产免费一区 | 国产一区二区三区四区在线观看 | 久久久久久av| 五十女人一级毛片 | 欧美在线观看一区 | 欧美精| 亚洲精品在线免费看 | 欧美一区二区三区在线 | 成人精品系列 | 久久精品视频网站 | 成人欧美一区二区三区视频xxx | 欧美精品久久久久 | 色在线看 | 久久影院一区 | 男女网站免费 | 91国产视频在线观看 | 亚洲精品2区 | 日韩精品在线看 | 欧美一区二区三区四区在线 | 亚洲精品一级 |