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

STM32H725ZGT6 USART10中断失效,疑中断表文档勘误求助

排查STM32H725ZGT6 USART10中断无法触发的问题

针对你遇到的USART10轮询正常但中断不触发的问题,可以按以下步骤逐一排查:

  • 确认UART中断使能位是否正确配置
    STM32H7系列UART支持FIFO模式,若开启FIFO(USART10->CR3 & USART_CR3_FIFOEN为1),RX中断需使能RXFNEIE位(USART10->CR1 |= USART_CR1_RXFNEIE);若未开启FIFO,才需要使能RXNEIE位(USART10->CR1 |= USART_CR1_RXNEIE)。很多时候是混淆了这两个位导致中断不触发。

  • 验证NVIC配置的准确性
    你当前设置NVIC_ISER4的第28位对应中断号156,这个是正确的(ISER4管理中断号128-159,128+28=156)。但需确认:

    • 有没有误操作NVIC_ICER4寄存器关闭了该中断;
    • 中断优先级配置是否合理(即使优先级低也应该能触发,但若配置了错误的抢占优先级导致被锁死则例外,可暂时设为最高优先级测试)。
  • 检查中断向量表与中断服务函数的绑定

    • 确认链接脚本中,USART10的中断服务函数(通常命名为USART10_IRQHandler)被正确放置在向量表的0x02B0偏移位置;
    • 中断服务函数需用编译器关键字声明,比如__attribute__((interrupt("IRQ")))(GCC)或__irq(Keil),确保编译器生成正确的中断入口代码;
    • 可在中断服务函数开头添加一个GPIO翻转操作,直接验证是否触发中断。
  • 检查UART接收相关的状态位
    手动发送一个字节后,读取USART10->ISR寄存器:

    • 若RXNE或RXFNE位未置位:说明UART接收配置存在问题,需确认USART_CR1_UE(UART使能位)是否置位,波特率、帧格式(数据位、停止位、奇偶校验)是否与发送端匹配;
    • 若RXNE/RXFNE位已置位但未触发中断:说明问题出在NVIC或向量表,需重新核对向量表偏移、ISR绑定是否正确。
  • 排除外设冲突或配置遗漏

    • 确认USART10的DMAR位(USART_CR3_DMAR)是否清零,若开启DMA接收,RXNE位会被DMA自动清除,导致中断无法触发;
    • 检查USART10的引脚复用配置是否正确,虽然轮询正常,但需确认引脚的复用功能是否正确映射到USART10(比如是否误配置为其他外设)。

内容的提问来源于stack exchange,提问作者Jeff Casey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 08:42:13