STM32–Контроллер внешних прерываний(событий)
18 Мая 2011
К комментариям
Сегодня попробуем поработать с контроллером внешних прерываний (событий) External interrupt/event controller (EXTI).
Функциональная схема
Как видим контроллер имеет 18 линий прерывания (событий), из них 16 линий можно подключить к линиям ввода-вывода. Генерирование прерываний (событий) возможно по нарастающему и спадающему фронту входного сигнала, так же возможно принудительно (программно) сформировать прерывания (событие) путем записи соответствующего бита регистра EXTI_SWIER:
Подключение линий ввода-вывода производится посредством 16 мультиплексоров, по одному семиканальному мультиплексору на одну линию прерывания:
К оставшимся двум линия прерывания подключены:
- линия 17 (EXTI16) – к выходу программируемого детектора напряжения (PVD)
- линия 18 (EXTI17) – к часам реального времени (RTC) (“будильник”) </ul> Все выше сказанное относиться к семейству STM32F100xx (RM0041 - Reference manual). Поэтому перейдем к представителю семейства STM32F100RB (STM32VLDISCOVERY). У данного микроконтроллера 51 линия ввода-вывода. В таблице векторов прерываний следующее распределение векторов:
- EXTI0 – индивидуальный для линии 0
- EXTI1 – индивидуальный для линии 1
- EXTI2 – индивидуальный для линии 2
- EXTI3 – индивидуальный для линии 3
- EXTI4 – индивидуальный для линии 4
- EXTI5-9 – общий для линий с 5 по 9
- EXTI10-15 – общий для линий с 10 по 15 </ul>
Пример Попробуем рассмотреть на примере работу с контроллером внешних прерываний без использования стандартных библиотек от STM. Для примера выберем линию ввода-вывода PA0, так как к ней подключена кнопка установленная на плате: Конфигурируем линию как вход: Далее согласно документации необходимо разрешить тактирование AFIO (альтернативные функции линий ввода-вывода), так как регистры управления мультиплексорами находится в данном модуле: RCC->APB2ENR |= RCC_APB2ENR_AFIOEN; далее выбираем необходимый нам вход: Выберем для детектирование оба фронта: Разрешаем генерацию прерывания от выбранной линии: Инициализация целиком: обработчик: При включении будет гореть зеленый светодиод на плате. При нажатии на кнопку гаснуть, а при отпускании снова загораться. Проект целиком: 2011-05-18-stm32-exti-demo
comments powered by Disqus