Petr Belyaev
В СТМ напарывался на такой интересный момент, когда флаг прерывания снимался слишком быстро и прерывание каждый раз срабатывало 2 раза (EXTI). В ретроспективе это происходило из-за рассинхронизации тактирования периферии EXTI и ядра/NIVC, а спасало от этого либо прописать EXTI->PR = EXTI->PR перед выходом (чтение-запись), либо _MSB() или _DSB() (мог немного приврать с названием)
Сталкивался с подобной ситуацией, но в моём случае инструкции синхронизации не помогли, поскольку со сбросом флага тормозила именно периферия, а ядро считало, что завершило цикл записи. Помог пустой цикл пока флаг не обнулится, причём он успевал прокрутиться несколько раз.