STM32G474 HRTIM SETx1/RSTx1中断不触发HRTIM1_TIMA_IRQHandler
STM32G4 HRTIM SET/RST事件标志置位但无法触发中断排查
最高概率遗漏配置
- 检查对应事件的DMA使能位
HRTIM的事件请求路由是互斥的:如果HRTIM_TIMx_DMAEN寄存器中SET1DMAEN/RST1DMAEN/SET2DMAEN/RST2DMAEN位被置1,对应事件产生后只会发送DMA请求,不会向NVIC发送中断请求。这种场景下TIMAISR寄存器的对应中断标志会正常置位,但完全不会触发HRTIM1_TIMA_IRQHandler执行。
直接读HRTIM1_TIMA->DMAEN寄存器值,确认上述4个DMA使能位为0即可,不要完全信任HAL库的配置接口,部分版本的HAL驱动在使能SET/RST中断时,不会自动关闭对应事件的DMA请求路由。
次高频遗漏配置
- 检查对应输出通道的输出使能位
STM32G4的HRTIM外设明确要求:SET1x/RST1x/SET2x/RST2x类输出相关中断,必须在对应输出通道使能的前提下才会向NVIC发送中断请求。
核对HRTIM1->OENR寄存器的TA1OEN、TA2OEN位是否置1。哪怕不需要把HRTIM输出接到外部引脚,只要用到这类输出事件中断,就必须置位对应OEN位,否则只会置位ISR标志,不会触发中断。 - 排查中断标志提前被清除的问题
检查其他可正常触发的HRTIM中断服务逻辑,确认不存在“读取ISR寄存器后一次性清除所有置位标志”的写法。如果SET/RST事件的标志在NVIC接收到中断请求前就被其他流程提前清除,也会出现标志曾置位但不触发ISR的情况,该场景出现概率较低。
快速验证步骤
- 直接向
HRTIM1_TIMA->DMAEN寄存器写0,关闭TimerA所有事件的DMA请求 - 置位
HRTIM1->OENR的TA1OEN、TA2OEN位,使能TimerA两个输出通道 - 通过写TIMERA的SST、RST位触发软件事件,确认中断是否正常响应
内容的提问来源于stack exchange,提问作者Venkatesh Chilapur
相关产品推荐
相关产品推荐

