今天再給大家分享一些關于STM32串口中斷及DMA接收常見的幾個問題。
UART串口中斷接收
使能UART串口中斷之后,有接收到UART數據,進入中斷,此時要清除RXNE接收標志位:
1)通過軟件向該RXNE標志位寫入零來清零;
2)通過對 USART_DR 寄存器執行讀入操作將該位清零。
這里可以查看對應《參考手冊》,一般我們選擇第2種,通過讀取UART串口數據來清零。
1、中斷接收數據丟失
在UART串口中斷函數中,或者更高優先級中斷函數中長時間執行,導致接收丟失,所以,請勿在中斷函數中長時間執行。
特別有些人,還在中斷函數添加延時函數。實際應用中,只要不是特殊情況,比如測試某個功能可以添加延時函數,都不建議在中斷函數添加延時函數。
2、ORE上溢錯誤
ORE上溢錯誤是什么意思呢? 可能很多人不了解,簡單說就是:UART接收到有數據,沒有去取,但又來了數據,此時就會產生ORE上溢錯誤。(請看“參考手冊”)
其實,上面這種長時間在占用中斷,就會導致UART接收數據上溢。
很多人沒有在意這個,如果是使能了中斷接收,標志位沒有清除,又有ORE上溢錯誤的話,程序就會不停地進入UART中斷。(大家不妨試一下,看一下是不是你代碼一直在UART中斷里面不停運行)。
3、使能接收中斷前,先清除接收標志位
有時候,在程序初始化的時候,就會接收到數據,這個時候建議大家先清除接收標志位再使能接收中斷。類似如下:
DMA接收串口數據
使用DMA接收串口數據,相信很多朋友都知道。這個可以理解為使用隊列,或者FIFO的形式,防止因高優先級中斷而打斷,導致接收數據丟失。
但很多人都遇到過,接收不到數據,或者數據異常的情況。所以,這里同樣有需要注意的地方。
1、使能UART之前,先使能DMA相關配置
這個和清除標志位一樣的道理,使能UART之前,先使能DMA相關配置,防止在配置過程中有接收數據。
2、ORE上溢錯誤導致不能使用DMA接收數據
導致不能DMA接收不到數據的根源,有一種可能就是有ORE上溢錯誤。
若在串口初始化并使能后到 DMA 使能之前有數據來,MCU是不能接收的。如果此時數據寄存器 USART_DR 存在一個數據,再來一個數據,就會導致ORE上溢錯誤。
一旦產生上溢錯誤后,就無法再觸發 DAM 請求,即使之后再啟動 DMA 也不行,無法觸發 DMA 請求就無法將數據寄存器內的數據及時轉移走,如此陷入死鎖。這就是串口無法正常接收的原因。
所以,最后提醒大家,配置時,請一定要注意這些細節。
上一篇:STM32G474 逐波限流保護的實現
下一篇:STM32串口通信簡明知識
推薦閱讀最新更新時間:2025-03-31 08:29

設計資源 培訓 開發板 精華推薦
- STM32一文通(6) 外部中斷
- ESP32玩轉MicroPython(一) 燒入固件, 初識
- ESP32玩轉MicroPython(二) 連接WIFI網絡 webperl文件傳輸
- ESP32玩轉MicroPython(三) 延時、計時 和GPIO操作
- 玩轉 ESP32 + Arduino (一) 開發環境搭建
- 玩轉 ESP32 + Arduino (四) 電容按鍵 霍爾傳感器 外部中斷 延時 脈沖檢測
- 玩轉 ESP32 + Arduino (五) platformIO引入類庫 自開發庫 串口打印字符串
- 玩轉 ESP32 + Arduino (六) 硬件定時器, IIC, SPI
- 玩轉 ESP32 + Arduino (八) U8G2驅動OLED
- STEVAL-ILL046V1,基于 ST1CC40 HB LED 驅動器的評估板,采用 QFN 封裝,具有抑制功能
- 【P2009001】MQ系列氣體傳感器模塊
- 大概是最小最便宜的CH552g BadUSB
- 適合上手DIY的開源萬用表
- 用于射頻功率放大器的 NCP6360 Mini Buck 轉換器的典型應用
- XR79120EVB,用于 XR79120 22V、20A 同步降壓 COT 電源模塊的評估套件
- OP184ESZ 2.5V 參考在單 3V 電源上運行的典型應用
- NCN5140BSCGEVB:NCN5140S KNX 系統級封裝 8 按鈕開關認證評估板
- 自動點錫筆
- STEVAL-IDS001V3,基于 SPIRIT1 的演示板,433 MHz 頻段中的低數據速率、短距離 USB 加密狗收發器
- ST SensorTile物聯網開發套件來啦!免費申請搶鮮體驗等你來~
- 您的電源符合能耗標準嗎?關注PI InnoSwitch3系列,答題贏好禮!
- 最能打的國產芯們
- 【已結束】R&S 直播【PCI Express Gen 3 一致性測試(含demo演示)】
- 有獎直播:新科技、新課堂、新學期~ ADI軟件定義無線電ADALM-Pluto入門實戰
- 你評論,我送禮!《玩轉TI MSP430 Launchpad》TI社區與EEWORLD聯合首發!
- 有獎直播|完美替代傳統汽車鑰匙?探索英飛凌數字鑰匙解決方案
- LYTSwitch-1 LED驅動器 天生小體積,應用高效率,圍觀有好禮!
- 是德科技有獎問答活動之三,極限溫度測試示波器探頭方案,答題闖關贏好禮!