Я работаю над проектом с 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
является избыточным.Это так?