ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
26 апреля
824225
Dingo (16.03.2018 10:30 - 10:43, просмотров: 15351)
Очередное "что за ...?!". Прерывания EXTI на STM32. Инициализирован только один источник прерываний для обработчика EXTI9_5_IRQ с источником PD6. Ещё используется EXTI1_IRQ. Поставил макрос переключения бита в общую часть обработчика, а не в веткуEXTI_Line6 . //pin_toggle(LED_GRN); // !! А вот так наблюдал нежданичик if(EXTI_GetITStatus(EXTI_Line6) != RESET) { pin_toggle(LED_GRN); // Так задумано /* Clear the EXTI line 1 pending bit */ EXTI_ClearITPendingBit(EXTI_Line6); } Использовал сбор статистики так: st_count(EXTI->PR); if(EXTI_GetITStatus(EXTI_Line6) != RESET) { /* Clear the EXTI line 1 pending bit */ EXTI_ClearITPendingBit(EXTI_Line6); } Таки что вы думаете?
--=stat=--
 (значение; сколько раз встретилось)
 66; 593 (понятно)
 2; 320  (понятно)
 0; 1235193  (WTF?!)
 64; 1234920  (понятно)
Собственно вопрос в том, почему попадаем в тело прерывания при EXTI->PR равном нулю?
imageimage