СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №7/2015
ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 31 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2015 Рис. 2. Схема подключения к линиям прерываний Для управления прерываниями в микроконтроллерах семейства STM32 существует специальный блок с названием NVIC, который представ- ляет собой контроллер вложенных век- торных прерываний (от англ. Nested Vectored Interrupt Controller, NVIC). Контроллер NVIC поддерживает вло- женность прерываний и их приори- тетность. Каждому прерыванию при настройке NVIC присваивается свой приоритет. Если во время обработ- ки низкоприоритетного прерывания возникает высокоприоритетное, то оно, в свою очередь, прервёт обработ- чик низкоприоритетного прерывания. В зависимости от семейства микро- контроллера STM32 он может осущест- влять обслуживание до 68 источников прерываний и выполняет следующие функции: ● разрешение и запрет прерывания; ● назначение и изменение приоритета прерывания от максимального при- оритета 0 до минимального приори- тета 15; ● автоматическое сохранение данных при выполнении одиночного или вложенного прерывания. В библиотечномфайле stm32f10x.h [1] содержится список всех прерываний для микроконтроллеров STM32 с указа- нием их приоритетности и адреса век- тора подпрограммы обработки. Ф УНКЦИОНАЛЬНОЕ ОПИСАНИЕ Как видно из структурной схемы, при- ведённой на рисунке 1, блок прерыва- ний состоит из множества регистров конфигурации и логики формирова- ния сигнала прерывания для 18 источ- ников. В качестве этих источников пре- рываний могут выступать 16 линий GPIO, линия программируемого детек- тора напряжения PVD и линия тревоги часов реального времени RTC. Для включения механизма прерыва- ний линия прерывания должна быть сконфигурирована и разрешена. Это выполняется программированием двух регистров запуска, где выбирает- ся нужный перепад сигнала прерыва- ния, и разрешением прерывания путём записи 1 в соответствующий бит реги- стра маскирования прерывания. Ког- да произойдёт выбранный перепад на линии внешнего прерывания, генери- руется запрос на прерывание. Анало- гично устанавливается флаг запроса от соответствующей линии прерыва- ния. Данный флаг запроса можно сбро- сить записью 1 в регистр сброса пре- рывания. Запрос прерывания можно также сгенерировать программно записью 1 в регистр программного прерывания. Подключение любой из линий GPIO к 16 линиям внешних прерываний от EXTI0 до EXTI15 осуществляется в соот- ветствии со схемой, приведённой на рисунке 2. О ПИСАНИЕ РЕГИСТРОВ Карта размещения регистров бло- ка прерываний в пространстве памя- ти представлена в таблице 1. На карте также показано значение регистров после сброса. Все эти регистры являются 32-разряд- ными, но в каждом из них используют- ся только младшие 18 разрядов. Осталь- ные разряды зарезервированы. Регистр маскирования прерываний EXTI_IMR позволяет наложить битовую маску для внешних входов, разрешаю- щую или запрещающуюформирование прерываний от них. Значение 0 в раз- ряде регистра маскирует запрос пре- рывания от соответствующей внеш- ней линии, а значение 1 разрешает этот запрос. Регистр маскирования событий EXTI_EMR позволяет выполнять опера- ции маскирования для событий анало- гично регистру EXTI_IMR. Регистр EXTI_RTSR осуществля- ет задание линий, запускающихся по фронту сигнала. Регистр EXTI_FTSR позволяет задать линии, запускающиеся по срезу сигнала. Регистр программных прерываний и событий EXTI_SWIER даёт возмож- ность сформировать программное пре- рывание или событие. Запись 1 в биты этого регистра, имеющие нулевое зна- чение, установит соответствующий флаг запроса в регистре EXTI_PR. Если разрешено прерывание от этой линии в регистрах EXTI_IMR и EXTI_EMR, то Табл. 1. Карта регистров блока прерываний Сдвиг Регистр 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0x00 EXTI_IMR Резерв MR[17:0] Исх. значение 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x04 EXTI_EMR Резерв EMR[17:0] Исх. значение 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x08 EXTI_RTSR Резерв RTSR[17:0] Исх. значение 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x0C EXTI_FTSR Резерв FTSR[17:0] Исх. значение 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x10 EXTI_SWIER Резерв SWIER[17:0] Исх. значение 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x14 EXTI_PR Резерв PR[17:0] Исх. значение 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 © СТА-ПРЕСС
RkJQdWJsaXNoZXIy MTQ4NjUy