ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
824518 Топик полностью
evgeniy1294 (16.03.2018 23:43, просмотров: 201) De_user ответил De_User на Цитата "не очищайте флаг, который очищается 1, операцией |=. Очищайте простым присваиванием =. А лечение повторного входа в прерывание барьером или фиктивным чтением EXTI_PR после очистки."
Я понимаю, что вы имеете ввиду. Операция "|=" не является присваиванием, поэтому некоторые флаги она не сбросит. например ETH:  void ISR::VECTORS::ETH_IRQ() { if (ETH->DMASR & ETH_DMASR_RS) { ETH->DMASR = ETH_DMASR_RS; } if (ETH->DMASR & ETH_DMASR_TS) { ETH->DMASR = ETH_DMASR_TS; } ETH->DMASR = ETH_DMASR_NIS; if(ETH->DMASR & ETH_DMASR_AIS) { ETH->DMASR = ETH_DMASR_AIS; } return; } За совет о мнимом чтении спасибо, не знал, что так можно.