Sl (18.03.2018 12:01, просмотров: 170) ответил LightElf на Два предположения:
“1) После ClearPending поставить __DSB() 2) После __DSB() добавить принудительный сброс прерывания на NVIC” Мне кажется принудительный сброс прерывания на NVIC делать не надо.
Во первых. В programming manual написано: When the processor enters the ISR, it automatically removes the pending state from the interrupt, see Hardware and software control of interrupts on page 190.
Во вторых.
Рассмотрим такую ситуацию. Используется два внешних входа и прерывание для них EXTI15_10. Возникло EXTI10 -> вошли в подпрограмму обработки прерывания. Отработали подпрограмму. И в самом её конце помощью NVIC_ICPRx записав 1 в нужный бит сбрасываем прерывания на NVIC. В этот момент возникает EXTI11. И пока выходим из подпрограммы прерывания теряем EXTI11.