我正在使用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 Devices Generic User Guide:
待处理中断保持挂起状态,直到满足以下条件之一:
处理器进入中断的ISR。这改变了状态 从挂起到活动的中断。
据我所知,这意味着当我们进入ISR时,中断暂挂状态会自动清除,并且可能对NVIC_ClearPendingIRQ
的调用是多余的。是吗?
答案 0 :(得分:0)
自动清除。
您可以使用NVIC_GetPendingIRQ()
检查它是否处于待处理状态。