STM32的USART的RXNE不能置位或無法置位的原因


最近剛接觸STM32的USART,發現問題還真是不少,本來覺得沒什么,卻是耽誤了好久,這次遇到的問題是:STM32的USART的RXNE不能置位或無法置位。

是仿真的時候發現這個問題的,我用自發自收,發現發送的太快了,接收數據的數目就不對了,延遲200ms啊,再慢也應該發出去了,就查原因到一直進入發送中斷,接收中斷進不去,但是DR接收的數據正常,就是RXNE不置位。

自己解決無果,求助網絡:

1.http://www.wisearm.com/articles/201305652.html

《《原文:今天我用IARv5.5和自寫固件庫對STM32進行調試,通過串口助手發送數據0x55,0xAA。查看了寄存器狀態USART1_DR已經為正確,但是USART1_SR中的RXNE沒有被置位。USART1_SR仍為初始化時的0XC0。為什么USART1_SR中的RXNE沒有置位?我一直在找原因,在搜索了好多篇文檔之后,我終於在參考手冊中找到了以下答案。

ORE:過載錯誤

當RXNE還是1的時候,當前被接收在移位寄存器中的數據要往RDR寄存器中傳送時,硬件將該位置位。如果USART_CR1中的RXNEIE為1的話,則產生中斷。由軟件序列將其清零(先讀USART_SR,然后讀USART_CR)。

0:沒有過載錯誤;

1:檢測到過載錯誤。

注意:該位被置位時,RDR寄存器中的值不會丟失,但是移位寄存器中的數據會被覆蓋。如果EIE位被設置,在多緩沖器通信模式下,ORE標志置位會產生中斷的。》》

應該不是此文提到的情況,因為ORE沒有置位,所以應該不是產生溢出,但是如果以后又出問題可以借鑒。

2.http://bbs.21ic.com/icview-359588-1-1.html

《《原文:“打開Peripherals下的USART窗口” 就有可能把標志位清0了。按理,關閉USART窗口 應該就行了。》》

結果出乎預料,竟是USART監視窗口出的問題,關閉此窗口后,仿真正常!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM