STM32 для начинающих. Урок 4. Прерывания STM32.

Автор: | 23.08.2016

Прерывания STM32.

скачанные файлы

Прерывания — один из основных аспектов работы микроконтроллера.

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

Ещё о прерываниях можете почитать здесь.

При работе с таймерами(в этом уроке), мы уже столкнулись с прерываниями.

Общий алгоритм инициализации прерываний следующий:

  1. Разрешить генерацию прерывания устройством (Таймером, UART’ ом и так далее).
  2. Разрешить обработку прерывания контроллером NVIC.
  3. Создать обработчик данного прерывания.

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

Генерацию прерывания устройством мы можем разрешить или запретить установкой соответствующего флага, например, в случае с таймером:

Разрешить обработку прерывания контроллером NVIC:

Если же Вы хотите настроить данное прерывание более скрупулезно, указав его приоритет, то можете прибегнуть к следующему коду:

В данном коде мы разрешаем обработку прерывания EXTI0,и устанавливаем ему наивысший приоритет.

Читайте также  STM32.Встроенный датчик температуры.

Это был краткий экскурс в прерывания STM32. В следующий раз поговорим о внешних прерываниях!

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

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