Цитата(adnega @ Nov 6 2016, 15:27)

Как правило есть два бита: периферийный и NVIC-овский. Когда периферийный срабатывает, он устанавливает NVIC-овский.
Когда дело доходит до обработчика, NVIC-овский аппаратно сбрасывается (при выходе?),
а в обработчике нужно сбросить периферийный. Если делать это в самом конце, то будет повторное вхождение в обработчик, но уже со сброшенным периферийным битом.
Поэтому всегда нужно проверять установку периферийного бита. И сбрасывать его как можно раньше, а если сбрасываешь в конце обработчика, то перед выходом добавить NOP, а еще правильнее барьер (DSB?).
Повторный вход в обработчик подтверждаю, есть такое.
Правда, я лечил просто переносом сброса наверх - дополнительная проверка не нужна.