波特率115200,MCU串口發(fā)送18個(gè)字節(jié)數(shù)據(jù),CH582中斷接收,7字節(jié)觸發(fā),UART_II_RECV_RDY里只接收到了前面7個(gè)字節(jié),中間7字節(jié)沒(méi)有接收,剩下數(shù)據(jù)在UART_II_RECV_TOUT里有接收到,就是中間的7字節(jié)數(shù)據(jù)沒(méi)有接收到,想問(wèn)一下是什么原因?qū)е碌模?/p>
中斷中UART1_RecvByte讀取fifo中字節(jié)數(shù)據(jù)后,不是會(huì)自動(dòng)清除fifo對(duì)應(yīng)字節(jié)數(shù)據(jù)嗎,為什么讀出來(lái)的數(shù)據(jù)都是重復(fù)相同的?
您好,有時(shí)間幫忙看看是哪出了問(wèn)題嗎?
可能是,代碼收到數(shù)據(jù)之后存放在了RxBuff,但是下一次過(guò)來(lái)接收數(shù)據(jù),RxBuff的數(shù)據(jù)又被覆蓋了,所以表現(xiàn)出來(lái)在RDY的數(shù)據(jù)是最后一次進(jìn)入的數(shù)據(jù)。
需要將RxBuff保存的數(shù)據(jù)進(jìn)行移位,防止覆蓋?;蛘咧苯邮褂美淌盏綌?shù)據(jù)后將數(shù)據(jù)直接發(fā)送出去,判斷是否接收數(shù)據(jù)完整。
代碼里面的len作為全局變量使用到的地方太多,如果不是特意這樣寫(xiě),建議換一個(gè)參數(shù)。
謝謝,解決了,有些變量邏輯沒(méi)處理好