Внешние события и прерывания

Контроллер внешних событий и прерываний EXTI является по сути расширителем NVIC. Он имеет 23 детектора уровня, для генерации событий/прерываний. Каждая линия может быть независимо настроена на свой тип сигнала(уровень или импульс). Первые 16 линий отданы портам в/в. Вот их то мы и будем рассматривать.

Так как портом у нас несколько(9) то каждую из линий можно подключить только к одной линии одного порта. Т.е по сути можно воспользоваться 16 выводами в сумме. Как указано в дш чтобы распределять м/у портам линии внешних событий используя системную настройку - SYSCFG->EXTIx. Необходимо помнить что пользоватся внешними прерываниями можно только тогда когда линия порта находится в состоянии ввода.

Начнем с создания базовой директории:

nis@jane ~/stm32/f4examples $ mkdir 04-exti

nis@jane ~/stm32/f4examples $ cd 04-exti/

После создадим базовый проект:

nis@jane ~/stm32/f4examples/04-exti $ cp -av ../03-systick/00-base/ .

Для начала возьмем относительно простой пример - включение светодиода при нажатии кнопки и выключение при отпускании.

Имея текущее представление попробуем использовать навыки для более сложного примера - усовершенствуем пример Мигание светодиодов со сменой режима по новому, добавив в него обработку нажатия кнопки по прерыванию.