Вообще-то никто не мешает зачищать флаги прерываний перед запуском.
А насчет конкретного бита - он для разного кремния чуток разный -
где- то перезапускает таймер с прескалером, где-то генерирует
события в терминологии ST (которые ещё не запросы прерывания). И
сбрасывается он в разном кремнии по-разному - в одном софтверно, в
другом аппаратно. Мне как-то нужно было выдавать импульсы определенной длительности, с установленным значением "зазора" перед следующим. А приходили они асинхронно. Дело было на MSP430, но потом оно на каком-то MKSZ спокойно запустилось. Выглядело это так, что был счетчик, который в фоне атомарно увеличивался (обычно инкрементировался - там было типа деление вычитанием), а в обработчике прерывания сравнения таймера декрементировался. При этом в фоне, если значение счетчика 0 и таймер выключен, то после увеличения счетчика его тут же декрементировал, а таймер запускал по новой на выдачу собственно активной части импульса, в обработчике сравнения перезаряжался на зазор, счетчик декрементировался, а по прерыванию после зазора при значении счетчика 0 выключался, иначе перезаряжался на активную часть и т.д. Соответственно там сама выдача в порт была ногодрыгом. Устраивало.