Самый простой способ управления любым прибором - это кнопка! И тут есть простой способ: в цикле опрашивать кнопку. while(true) { // Кнопка нажата? //Что-то тут происходит HAL_Delay(какое-то значение); } И тут возникают проблемы: что будет, если кнопка нажата во время ожидания? Есть элегантное решение: прерывания! Их суть понятна из названия, они прерывают исполнение главного кода, например, бесконечного цикла в функции main(). То есть когда бы ни была нажата кнопка, на нажатие будет реакция. Настроим прерывания из STM32CubeMX Кнопка у нас настраивается в разделе GPIO. Нам нужно установить специализированный режим для пина: External Interrupt Mode with Rising edge trigger detection. Это запрограммирует реакцию прерывания на повышение напряжения на пине. Далее переходим на вкладку NVIC, там всего лишь один пункт, который и надо выбрать. После настроек можно нажимать "Генерировать". STM32CubeMx сгенерирует новый код. Сами настройки включения прерывания находятся в файле main.c В файле
Реагируем на нажатие кнопки правильно. STM32CubeMx + HAL
14 июля 201914 июл 2019
3078
1 мин