5.1.1. Альтернативные функции

Регистры альтернативных функций управляют переключением линии ввода-вывода между ПВВ и одним из встроенных УВВ. Чтобы схемотехническое проектирование было более гибким, линии ввода-вывода УВВ могут быть связаны с одним из нескольких выводов МК.

Опоздавшее высокоприоритетное прерывание отложит выполнение низкоприоритетного прерывания, не выполняя при этом каких-либо дополнительных операций над стеком

Альтернативные функции у МК STM32 управляются через регистр переназначения и отладки. Каждое из цифровых УВВ (УСАПП,CAN, таймеры, I2C и SPI) имеет одно- или двухбитное поле, которое позволяет назначить работу с различной комбинацией выводов. После выбора альтернативных функций выводов, необходимо в конфигурационных регистрах ПВВ переключить назначение вывода с линии ввода-вывода на альтернативную функцию. Регистр переназначения также управляет конфигурацией выводов отладочного JTAG-порта. Сразу после сброса, порт JTAG активизируется с отключенной функцией трассировки данных. JTAG можно переключить в режим двухпроводного отладочного интерфейса, а неиспользуемые выводы использовать в качестве линий ввода-вывода общего назначения.

5.1.2. Сигнализация событий

Процессор Cortex имеет возможность генерации импульса сигнализации событий, предназначенный для возобновления работы отдельного микроконтроллера, находящегося в экономичном режиме работы. Обычно, импульс сигнализации событий подается на вход возобновления работы второго МК STM32. Этот импульс генерируется при выполнении команды SEV из набора инструкций Thumb-2. Чтобы связать импульс сигнализации с конкретным выводом ПВВ, предусмотрен регистр управления событиями. Регистр управления событиями содержит поля для выбора порта и его линии ввода-вывода. После выбора линии ввода-вывода, необходимо завершить настройку установкой бита разрешения сигнализации событий.

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

Блок внешних прерываний имеет 19 линий прерываний, которые связываются с векторами прерываний посредством КВВП. Из них 16 линий связаны с линиями ПВВ и могут генерировать прерывание по нарастающему или подающему фронту, или же по обоим фронтам. Оставшиеся три линии связаны с линией прерывания ЧРВ, линией возобновления работы порта USB и выходом сигнализации блока контроля напряжения питания. КВВП предоставляет отдельные векторы прерываний для линий внешних прерываний (EXTI) 0-4, ЧРВ, блока контроля напряжения питания и блока USB. Остальные линии EXTI разделены на две группы, линии 5-9 и линии 10-15, которые связаны с двумя дополнительными векторами прерываний. Блок внешних прерываний играет важную роль для управления энергопотреблением МК STM32. Данный блок является асинхронным и, поэтому, может использоваться для возобновления работы микроконтроллера, находящегося в режиме STOP, когда оба основных генератора отключены. EXTI может генерировать прерывание, как для выхода из состояния Wait в режиме прерываний, так и для выхода из состояния Wait в режиме событий.

МК STM32 имеют 16 линий внешних прерываний, которые можно подключить к любой из линий ввода-вывода

Каждую из 16 линий EXTI можно связать с соответствующей линией ввода-вывода любого из портов. Для этого предусмотрены четыре конфигурационных регистра. Данные регистры разделены на четырехбитные поля, связанные с каждой линией EXTI. С помощью данного поля каждую линию EXTI можно связать с любым из пяти ПВВ, например, линию EXTI0 можно связать с линией 0 порта A, B, C, D или E. Такой подход позволяет использовать любой из выводов МК в качестве линии прерывания. Функцию EXTI можно также использовать в связке с альтернативной функцией, активизированной на внешнем выводе.

//Назначение функций внешних прерываний линиям ПВВ

AFIO->EXTICR[0] = 0x00000000;

//Разрешение источников внешних прерываний

EXTI->IMR = 0x00000001;

//Разрешение возобновления при внешних событиях

EXTI->EMR = 0x00000000;

//Выбор падающего фронта в качестве источника запуска

EXTI->FTSR = 0x00000001;

//Выбор нарастающего фронта в качестве источника запуска

EXTI->RTSR = 0x00000000;

//Разрешение источников прерываний в КВВП

NVIC->Enable[0] = 0x00000040;

NVIC->Enable[1] = 0x00000000;

У МК STM32 имеется 16 линий прерывания, которые можно подключить к любой линии ввода-вывода. После подключения, выводы внешних прерываний могут генерировать прерывание по падающему и/или нарастающему фронту

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

Соседние файлы в папке ПЦиПУ. материалы для Курсового проекта Тютякин А.В.