W806串口接收進入中斷的次數

發布於 2022-06-17 19:41:03
W806使用中斷方式接收數據,僅打開UART_INTS_RL和 UART_INTS_RTO兩個中斷

我設置了兩個變量,用來統計在接收的時候進入中斷的總次數INT_Count和接收用的次數INT_RX_Count,並且打印每次讀取FIFO中的數據個數;

現測試,發送一條153字節的數據,打印情況如下:

RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:16
RF:0
RF:9
INT_Count=19,INT_RX_Count=18

從上面打印的結果看,僅接收進入中斷18次,但其中一半讀取的是0值,我嘗試在讀取後複位RXFIFO,降低系統主頻至40MHz,情況仍然是這樣的,顯然資源浪費了
現在有兩個疑問,1.設定的16字節觸發中斷,為什麼會出現0值觸發?2.如何避免這種情況,提高效率?

查看更多

關注者
0
被浏覽
2.2k
2 個回答
ZYQ
ZYQ 2022-06-18
我已不再支持W80X任何相關問題的回複,請大家不要私信,有問題找 isme 謝謝

建議代碼問題的話,不要進行文字敘述,只看你的打印,陌生的變量理解起來真的很難的

si26
si26 2022-06-20
這家夥很懶,什麼也沒寫!

@ZYQ 感謝您的回答!只是您的回答對我來說沒有任何幫助。我大概也知道應該是代碼的問題,或者說應該是對這個U使用過程中規避一些坑的用法不熟悉;我如果貼代碼,只知道是串口部分的,具體貼哪段,如果知道了就不用在這裡尋求幫助了。所以,現在反馈的是測試過程和現象;如果您理解不了,還請原諒,個人表達能力有限。
值得慶幸的是,這個問題目前在群友4061N的幫助下已經解決!在次表示感謝!
下面我們說一下這個研究這個問題的原因,
我的串口部分程序是基於原廠固件庫修改而來的,因原廠固件庫有很多bug,0.6.0版本中斷發送方式是不能正常工作的,此處改了兩個地方,還有接收完後對指針進行減操作,在頻繁大批量傳輸時很不安全且會數據錯亂!
在校正了這些問題後,串口操作時仍然會偶爾死機的情況……由此特做了以上的測試!
官方固件對處理中斷的操作是先清中斷標識,然後讀取FIFO,會出現以上測試的情況;群友4061N的分析,是清過中斷後,由於FIFO中還存在數據,二次觸發了中斷!
最終,在讀取完FIFO後再清一次中斷,即可解決雙倍中斷的情況!
希望各位在使用串口的時候特別注意!
至於我在項目中出現的死機情況是否跟此有關,後續會做進一步測試,到時再告知大家,謝謝!
再次感謝群友4061N的幫助!

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽