Включение светодиода при нажатии

Пример происходит из примера Ввод раздела порты в/в. С небольшой оговоркой - слежение за состоянием кнопки целиком вынесено в прерывание.

Для начала создадим проект:

nis@jane ~/stm32/f4examples/04-exti $ cp -av 00-base/ 01-led-en-if-but-pres

nis@jane ~/stm32/f4examples/04-exti $ cd 01-led-en-if-but-pres/

Мы воспользуемся выводом pa-0 на котором висит кнопка, по счастливому обстоятельству этой линии exti0 выделен целый вектор. Это в корне упрощает нашу задачу - мы ставим тип внешнего события одновременно нарастание и спад и проверяем состояние регистра GPIOA_IDR.

Для начала внесем изменения в файл инициализации startup.c.

После этого осталось инициализировать и настроить периферию, а также прерывания - для этого допишем необходимые блоки кода в main.c.

После этого можно собрать проект и загрузить его в МК:

nis@jane ~/stm32/f4examples/04-exti/01-led-en-if-but-pres $ make write

Затем можно наблюдать работу проекта: