Микропроцессорные средства и системы управления: учебное пособие / А. В. Мануковский, А. Ж. Саринова.

NVICInitStructure.NVICIRQChannelSubPriority = OxOF; // Разрешение прерывания NVICInitStructure.NVIC IRQChannelCmd = ENABLE; // Применение параметров NVIC_Init(&NVIC InitStructure); }} Как уже говорилось выше, все вектора прерываний определены в файле startup stm32fl0x_md_vl.s, а обработчики прерываний реализуются в файле stm32fl0x_it.c. Наш обработчик прерывания довольно прост: при нажатии на пользовательскую кнопку синего цвета происходит срабатывание внешнего прерывания по возрастающему фронту. В самом обработчике прерывания происходит переключение состояния светодиода и очищается флаг прерывания: void EXTIOIRQHandler(void) { if (EXTI_GetITStatus(USER BUTTON EXTI LINE) != RESET) { // Переключение состояния светодиода STM32vldiscovery_LEDToggle(LED3); // Сброс флага прерывания EXTI_ClearITPendingBit(USER BUTTON EXTI LINE); }} Можно скомпилировать данный пример - Project ® Rebuilt all, загрузить ПО в память микроконтроллера Project ® Download and Debug (Ctrl+D) и проанализировать исполнение кода в режиме отладки. При нажатии на пользовательскую кнопку свегодиод должен загораться или гаснуть. Но он будет вести себя не совсем предсказуемо, так как в данном примере не реализована функция устранения дребезга контактов кнопки.

RkJQdWJsaXNoZXIy MTExODQxMg==