C语言 冗余 IRQ 清除挂起操作



我正在用ARM Cortex-M0处理器做一个项目。在这个项目中,我需要提供定时器支持(CMSDK (SSE-200)定时器(。

因此,在向量表中,在由TIMER0_IRQn表示的正确条目中,我们放置了处理程序timer0_irq_handler,其中包含以下代码:

void timer0_irq_handler(void)
{
NVIC_ClearPendingIRQ(TIMER0_IRQn)
my_timer_irq_handler(TIMER0)
}

我的问题是是否需要调用NVIC_ClearPendingIRQ,因为来自 Cortex-M0 设备通用用户指南:

挂起

的中断将保持挂起状态,直到出现以下情况之一:

处理器进入中断的 ISR。这会改变状态 中断从挂起变为活动

据我了解,这意味着当我们输入 ISR 时,中断挂起状态会自动清除,并且可能对NVIC_ClearPendingIRQ调用是多余的。是吗?

它会自动清除。
您可以使用NVIC_GetPendingIRQ()检查它是否处于挂起状态。

最新更新