STM32串列埠接收中斷溢位問題解決

2021-10-09 07:49:12 字數 1008 閱讀 9111

在使用乙個串列埠發資料的感測器過程中,發現程式第一次進入串列埠中斷之後不再執行主函式的內容,中斷中的內容也不執行。查詢大量資料後發現:串列埠在接收資料過多時,會出現串列埠溢位錯誤,並進入溢位中斷(ore中斷)。接下來是錯誤產生原因以及解決方法。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-pp2hoo7x-1604211398964)(./images/20170729232506459.jpg)]

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-sizyq4kl-1604211398966)(./images/20170729231657590.jpg)]

ore標誌位在usart_sr暫存器,但值得注意的是,當我們開啟串列埠接收中斷時,同時也就開啟了ore中斷。

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-ja6yfl6o-1604211398968)(./images/20170729232227447.jpg)]

[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-71rdvtj1-1604211398971)(./images/20170729233221720.jpg)]

清除ore位的方法:順序執行對usart_sr和usart_dr暫存器的讀操作。

注意:在此使用usart_clearitpendingbit(usart1, usart_it_ore)清除ore位是沒有任何作用的。還有ore中斷只能使用usart_getflagstatus(usart1, usart_flag_ore) 讀到(沒有使能usart_it_err中斷時)

解決方法:

if

(usart_getflagstatus

(usart2, usart_flag_ore)

!= reset)if(

usart_getitstatus

(usart2, usart_it_rxne)

!= reset)

STM32F103串列埠接收中斷溢位問題分析

stm32f103串列埠接收中斷溢位問題分析 本人目前正在做的機械人專案中,存在如下問題 1 小車舵機容易燒毀 分析原因 舵機不能堵轉,堵轉電流瞬間變大,將舵機燒毀,懷疑舵機質量問題以及存在舵機連桿機構不順滑導致堵轉的問題。2 小車手動模式能夠正常長時間執行,一旦上位機bringup指令啟動,建圖d...

STM32串列埠接收中斷BUG

除錯串列埠時,發現串列埠會出現頻繁跳中斷,導致無法執行主迴圈的問題!除錯發現是串列埠中斷硬體bug 1.usart itconfig usart 1,usart it rxne,enable 使能了接收中斷,那麼ore中斷也同時被開啟了。2.ore中斷只能使用usart getflagstatus ...

STM32串列埠通訊中斷接收

串列埠的時序和工作原理就不寫了,主要寫如何應用 串列埠的設定除了gpio外,需要設定的引數有波特率 資料位 停止位,校驗方式 gpio輸出配置af pp復用推挽輸出 gpio出入配置in flaoting浮空輸入 usart的配置為115200的波特率,8位資料長度,1位停止位,無校驗,無硬體流控制...