Резервная операция отложенного ожидания IRQ - PullRequest
0 голосов
/ 12 июня 2018

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

1 Ответ

0 голосов
/ 12 июня 2018

Оно очищается автоматически.
Вы можете проверить, ожидает ли оно ожидания, с помощью NVIC_GetPendingIRQ().

...