Я пишу программу для LPC1768, которая имитирует конечный автомат.В начальных состояниях программа должна быть способна обрабатывать прерывания кнопок (EINT1 EINT2).Затем прерывания отключаются на NVIC (Nested Vector Interrupt Controller), но все равно отправляются на него, становясь ожидающими.Если я снова включаю прерывания, они обрабатываются, поэтому я попытался очистить ожидающие, прежде чем сделать это.Это решает проблему, но NVIC больше не видит новые прерывания, и я не понимаю, почему.
Я отключаю прерывание, используя:
NVIC_DisableIRQ(EINT2_IRQn);
NVIC_DisableIRQ(EINT1_IRQn);
, когда пришло время сбрасывать ожиданиеи снова включите:
NVIC_ClearPendingIRQ(EINT1_IRQn);
NVIC_ClearPendingIRQ(EINT2_IRQn);
NVIC_EnableIRQ(EINT2_IRQn);
NVIC_EnableIRQ(EINT1_IRQn);
Код не был выполнен на плате, а только отлажен с использованием программного обеспечения keil uvision5.