You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

STM32F407中UART2与UART3无法同时触发接收中断问题求助

STM32F407 UART2/UART3接收中断异常排查点
  • 中断服务函数逻辑错误
    检查UART3的中断服务函数是否正确调用了对应外设的中断处理接口:如果使用HAL库,必须在USART3_IRQHandler中调用HAL_UART_IRQHandler(&huart3),如果错填为huart2的句柄,会导致UART3的中断标志位无法被正常清除,中断挂起后无法再次触发。同时确认UART3的ISR中没有遗漏RXNE标志位清除操作,标准库下读取USART_DR寄存器即可自动清除RXNE标志,也可以主动调用USART_ClearFlag(USART3, USART_FLAG_RXNE)手动清除。
  • HAL库单次接收中断未重新开启
    如果使用HAL库的HAL_UART_Receive_IT()接口开启接收中断,该接口仅会触发一次接收:当配置的N个字节接收完成后,会自动关闭对应UART的RXNE中断,需要在HAL_UART_RxCpltCallback()回调函数中再次调用HAL_UART_Receive_IT(&huart3, 缓存地址, 接收长度),才能开启下一次接收中断,否则UART3只会触发一次中断。
  • NVIC优先级配置冲突
    检查两个UART的中断优先级配置:如果UART2的抢占优先级高于UART3,且UART2频繁收到数据导致中断一直触发,会导致UART3的中断长期被抢占无法响应。另外需要确认全局NVIC分组配置统一,没有出现两个外设使用不同分组的异常情况。
  • 外设控制寄存器被误修改
    检查UART2的中断服务函数、以及全局代码中是否存在误操作UART3寄存器的逻辑:比如误调用__HAL_UART_DISABLE_IT(&huart3, UART_IT_RXNE)关闭了UART3的接收中断,或是改写了USART3_CR1寄存器的RE位关闭了接收功能。

内容的提问来源于stack exchange,提问作者Pankaj Verma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 15:09:05