STM32 для начинающих. Урок 5. Внешние прерывания STM32.

Автор: | 30.08.2016

STM32.Внешние прерывания.

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

Контроллеры STM32, имеют в своем составе контроллер внешних прерываний EXTI. Всего у микроконтроллеров серии STM32F3 36 (EXTI0-EXTI35 соответственно) внешних прерываний, внушительно, не так ли? Первые 16 из них (EXTI0-EXTI15) могут быть настроены на работу от изменения уровня на соответствующей ножке контроллера. Однако, в отличие от тех же самых AVR, где эти ножки уже выбраны до нас, в контроллерах STM32, мы вольны сами выбрать ножки, на которые будут настроены прерывания EXTI. Рассмотрим следующую таблицу:

Как мы видим, для прерывания EXTI0 мы можем выбрать нулевой бит порта(PA0,PB0,PC0 и так далее), для EXTI1 первый бит, и так далее. Остальные прерывания EXTI16-EXTI35, подключены в следующем порядке:

Конечно же, перед началом работы внешних прерываний, контроллер EXTI, необходимо настроить. В этом нам поможет библиотека SPL . Рассмотрим следующий пример прошивки:

 

Читайте также  STM32 для начинающих. Урок 7. АЦП(ADC) STM32.

Для настройки внешних прерываний используется структура EXTI_InitTypeDef. Рассмотрим её поля подробнее:

  • EXTI_Line — Выбор линии внешнего прерывания, т.е. указываем какое прерывание настраиваем.
  • EXTI_LineCmd — Включить/Выключить текущую линию.
  • EXTI_Mode — Выбираем тип EXTI линии EXTI_Mode_Interrupt / EXTI_Mode_Event (прерывание/ событие)
  • EXTI_Trigger — Настройка триггера линии(т.е. будет ли срабатывать прерывание при переходе от 0 к 1,либо при переходе от 1 к 0, либо при любом изменении логического уровня ножки).

Командой SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource0) мы выбираем,на каком порту будет работать линия EXTI.

Теперь, в основном цикле программы, у нас будет происходить какое либо действие, например математическое. Однако, при нажатии кнопки USER контроллер переходит на функцию EXTI0_IRQHandler, которая является обработчиком прерывания EXTI0. После обработки прерывания, контроллер вновь возвращается к основному циклу.

Остальные строчки инициализации периферии станут понятны после прочтения других уроков нашего цикла.

Спасибо за внимание!Вопросы оставляйте ниже.

Другие уроки цикла.


Любое копирование, воспроизведение, цитирование материала, или его частей разрешено только с письменного согласия администрации MKPROG.RU. Незаконное копирование, цитирование, воспроизведение преследуется по закону!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *