СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №7/2015

ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 30 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2015 Регистр программных прерываний и событий Регистр флагов запроса 18 18 18 18 18 18 18 18 18 18 18 18 Регистр маски прерываний Регистр выбора фронтальных сигналов Регистр выбора спадающих сигналов К контроллеру NVIC Вход Регистр маски событий 18 Шина АРВ PCLK2 Интерфейс периферии Детектор перепада сигнала Импульсный генератор Рис. 1. Структурная схема блока прерываний Современные 32-разрядные ARM-микроконтроллеры серии STM32: система прерываний В статье приведено описание системы прерываний 32-разрядных ARM-микроконтроллеров серии STM32 от компании STMicroelectronics. Рассмотрена архитектура и состав её регистров, а также приведены практические примеры программ Олег Вальпа (г. Миасс, Челябинская обл.) В ВЕДЕНИЕ Понятие прерывания (от англ. Interrupt) появилось в микропроцес- сорной технике давно и с течением вре- мени прочно в ней укрепилось. Преры- ваниям в микроконтроллерах отведена особая роль. Они позволяют микрокон- троллеру моментально реагировать на определённые события (от англ. Event), повышая тем самым его оперативность. Прерывание возникает в результате определённого ожидаемого события и временно прекращает выполнение основного кода программы, переходя к выполнениюподпрограммы, которая находится в обработчике прерывания. После завершения этой подпрограммы продолжается выполнение основного кода программы. Существует понятие внешних и вну- тренних прерываний. Внешнее преры- вание инициируется внешним событи- ем, например нажатием кнопки поль- зователем или замыканием контактов датчика. Внутреннее прерывание обу- словлено некоторым событием, связан- ным, например, с приёмом или переда- чей данных через интерфейс, заверше- нием счёта таймера и тому подобным. Различают аппаратное и программ- ное прерывания. Аппаратное прерыва- ние возникает в результате воздействия внешних сигналов или аппаратной установки регистровых флагов собы- тий. Программное прерывание фор- мируется с помощью кода программы путём программной установки флагов событий или непосредственного вызова подпрограммы обработки прерывания. О РГАНИЗАЦИЯ ПРЕРЫВАНИЙ В МИКРОКОНТРОЛЛЕРАХ STM32 В микроконтроллерах семейства STM32 [1] возможно возникновение множества событий, способных поро- дить прерывание. Как правило, эти события связанны с каким-либо бло- ком периферии. Например, если речь о таком блоке периферии, как USART, то в нём могут возникать такие события, как передача завершена, приём завер- шён, возникла ошибка чётности и тому подобные. Использование прерываний позволяет программе мгновенно реа- гировать на эти события. В случае возникновения двух разных прерываний от одного блока перифе- рии происходит одно и то же преры- вание. Например, если возникает пре- рывание при приёме байта в USART и прерывание по завершению переда- чи через этот же блок USART, то в обо- их случаях будет вызван один и тот же обработчик прерывания. Для того что- бы определить, какое из возможных прерываний произошло, необходимо проанализировать флаги состояния данного блока. Перед выходом из обра- ботчика прерывания эти флаги следует сбросить. Когда обработчик прерыва- ния отработает, управление будет пере- дано той строке кода, во время выпол- нения которой наступило прерывание. То есть основная программа продолжит работу с места прерывания. В микроконтроллерах STM32 име- ется возможность независимо разре- шать и запрещать прерывания, назна- чать им приоритет и, при необходимо- сти, вызывать прерывания программно. Если для возникшего прерывания в программе нет обработчика, то будет вызван системный обработчик по умол- чанию. Наличие механизма приоритетно- сти прерываний позволяет выполнять их обработку в соответствии со значи- мостью. Более приоритетное прерыва- ние в микроконтроллерах STM32 име- ет меньший номер. Например, если воз- никнет прерывание с приоритетом 7, управление программы будет пере- дано его обработчику. Если в процес- се выполнения кода обработчика воз- никнет новое прерывание с приорите- том меньше 7, то исполнение текущего обработчика прервётся, и управление будет передано обработчику более высокоприоритетного прерывания. © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy