使用W806 接受完數據,調用回調函數HAL_UART_RxCpltCallback 一次只有16字節,如何將一包數據都接收完成呢,有沒有相應的demo
查看更多
uart demo裡有注釋,HAL_UART_Receive_IT接口的最後一個參數,設置了多少,就是接收夠多少個字節會進回調函數,如果設置的0,就是不定長。 另外不管什麼接口,都有自己的應用層數據包協議格式,可以通過判斷包是否完整再解析,不完整就等下一次來數據再解析,這是正常的。
我設置了0不定長,但是每次接收有效數據也是16個字節,多次接收能能把一帧完整的數據接受完。現在的問題是如何把一帧數據接受完呢
可以通過查詢這個rxfifo dada timeout中斷標志位,再去接收數據,類似空閑中斷的用法。
發布 問題
分享 好友
手機 浏覽
回到 頂部
根據數據包格式,判斷是否是個完整的包,不是就等接收完整了再處理。
但是我現在需要對完整的數據包進行處理啊
@feng201272195 數據包裡總得有長度吧,根據長度判斷不夠,那就是還沒接收完整呢,等下一次再來數據再判斷是否完整。完整了再解析。
我明白這個啊,但是現在每一次16字節 我需要把這16字節進行存儲 直到有數據結束符,才算是數據完整。是否有其他的辦法呢 我諮詢了說可以通過超時定時器去打包解包