stm32f103單片機做通信控制,發送的數據總是不對。抄了網上各種發送程序,禁止編譯器優化等都試遍了。實在不知道錯在哪里,請網友幫忙指教。比如說我要發送的數據:0x5a 0xa5 0x03 0x10 0x20 0x30 ;
上面0x5a 0xa5是幀頭,0x03是后面要發送的數據量(這里是3個), 0x10 0x20 0x30 就是要發送的數據了。
下面的圖片是我試著從發送一個字節到發送7個字節時收到了數據截圖,好給大伙分析;
最先發送一個字節,是外圍接了一個按鈕,按一次發送一次。
圖9.jpg (57.87 KB, 下載次數: 69)
下載附件
2021-5-6 15:31 上傳
發送一個字節后串口助手接收到正確的數據
圖10.jpg (103.96 KB, 下載次數: 71)
下載附件
2021-5-6 15:31 上傳
從一次發送兩個字節開始接收就不對了
圖11.jpg (58.38 KB, 下載次數: 70)
下載附件
2021-5-6 15:31 上傳
第一次按按鈕,接收到的是0x5a。沒錯,第一次只能收到一個字節,按道理應該接收到0x5a 0xa5。從第二次開始接收到的數據時0xa5 0x5a,這是一次收到了兩個字節但反了順序。不知道程序錯在哪里,求指點!
圖12.jpg (104.1 KB, 下載次數: 76)
下載附件
2021-5-6 15:31 上傳
后面是發送3個字節
圖13.jpg (58.01 KB, 下載次數: 67)
下載附件
2021-5-6 15:31 上傳
沒讓我失望,接收的還是2個字節。但從這里開始,接收到的都已經不是原來發送了的數據了。發送的0x5a 0xa5 0x03已經變成了0x5a 0x3f兩個字節了。
圖14.jpg (104.63 KB, 下載次數: 63)
下載附件
2021-5-6 15:31 上傳
后面的我也懶得打字了,都是少了一個字節。0xa5 0x03 都變成了 0x3f。
圖15.jpg (58.2 KB, 下載次數: 68)
下載附件
2021-5-6 15:31 上傳
圖16.jpg (104.49 KB, 下載次數: 93)
下載附件
2021-5-6 15:31 上傳
圖17.jpg (58.11 KB, 下載次數: 74)
下載附件
2021-5-6 15:31 上傳
圖18.jpg (104.63 KB, 下載次數: 62)
下載附件
2021-5-6 15:31 上傳
圖19.jpg (57.91 KB, 下載次數: 63)
下載附件
2021-5-6 15:31 上傳
圖20.jpg (104.83 KB, 下載次數: 62)
下載附件
2021-5-6 15:31 上傳
圖21.jpg (58.23 KB, 下載次數: 67)
下載附件
2021-5-6 15:31 上傳
圖22.jpg (104.85 KB, 下載次數: 70)
下載附件
2021-5-6 15:31 上傳
請大神們幫我分析一下問題出在哪里了?
|