Перейти к содержанию

Регистры EXTI STM32L4

Регистры EXTI STM32L4: маска прерываний и событий, срабатывание по нарастающему и спадающему фронту, программный запуск и флаги для линий 0–31 и второго банка линий 32–40.

Линии EXTI0–EXTI15 — выводы, порт выбирается в SYSCFG_EXTICR; остальные — PVD, мониторы PVM, RTC, компараторы и прямые линии пробуждения от USB, I2C, USART, LPUART, LPTIM и SWPMI. Прямые линии не имеют выбора фронта, и их маски после сброса установлены: IMR1 = 0xFF82 0000, IMR2 = 0x87 у STM32L47x/L48x и 0x187 у L49x/L4Ax (RM0351, раздел 14.5).

Флаги PR1 и PR2 сбрасываются записью 1. У линий 0–4 свои векторы прерываний, линии 5–9 и 10–15 делят векторы EXTI9_5 и EXTI15_10.

ЭкземплярБазовый адресЕсть у
EXTI0x4001 0400всех

Регистры блока

РегистрСмещениеНазначениеПосле сброса
EXTI_IMR10x00Маска прерываний, линии 0–310xFF82 0000
EXTI_EMR10x04Маска событий, линии 0–310x0000 0000
EXTI_RTSR10x08Срабатывание по нарастающему фронту, линии 0–310x0000 0000
EXTI_FTSR10x0CСрабатывание по спадающему фронту, линии 0–310x0000 0000
EXTI_SWIER10x10Программное прерывание, линии 0–310x0000 0000
EXTI_PR10x14Флаги срабатывания, линии 0–310x0000 0000
EXTI_IMR20x20Маска прерываний, линии 32 и выше0x0000 0087 (у STM32L47x/L48x; у STM32L49x/L4Ax — 0x0000 0187)
EXTI_EMR20x24Маска событий, линии 32 и выше0x0000 0000
EXTI_RTSR20x28Срабатывание по нарастающему фронту, линии 32 и выше0x0000 0000
EXTI_FTSR20x2CСрабатывание по спадающему фронту, линии 32 и выше0x0000 0000
EXTI_SWIER20x30Программное прерывание, линии 32 и выше0x0000 0000
EXTI_PR20x34Флаги срабатывания, линии 32 и выше0x0000 0000

Конструктор значения

Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.

Значение: 0xFF820000

1111 1111 1000 0010 0000 0000 0000 0000

EXTI->IMR1 = 0xFF820000;

EXTI_IMR1 — маска прерываний, линии 0–31

Смещение 0x00, адрес 0x4001 0400, 32 бит, после сброса 0xFF82 0000. В коде: EXTI->IMR1.

31302928272625242322212019181716
IM31IM30IM29IM28IM27IM26IM25IM24IM23IM22IM21IM20IM19IM18IM17IM16
1514131211109876543210
IM15IM14IM13IM12IM11IM10IM9IM8IM7IM6IM5IM4IM3IM2IM1IM0
  • IM0–IM31 (по биту на каждый y, положение — на карте битов) — Разрешение прерывания линии y.

EXTI_EMR1 — маска событий, линии 0–31

Смещение 0x04, адрес 0x4001 0404, 32 бит, после сброса 0x0000 0000. В коде: EXTI->EMR1.

31302928272625242322212019181716
EM31EM30EM29EM28EM27EM26EM25EM24EM23EM22EM21EM20EM19EM18EM17EM16
1514131211109876543210
EM15EM14EM13EM12EM11EM10EM9EM8EM7EM6EM5EM4EM3EM2EM1EM0
  • EM0–EM31 (по биту на каждый y, положение — на карте битов) — Разрешение события линии y.

EXTI_RTSR1 — срабатывание по нарастающему фронту, линии 0–31

Смещение 0x08, адрес 0x4001 0408, 32 бит, после сброса 0x0000 0000. В коде: EXTI->RTSR1.

31302928272625242322212019181716
—RT22RT21RT20RT19RT18—RT16
1514131211109876543210
RT15RT14RT13RT12RT11RT10RT9RT8RT7RT6RT5RT4RT3RT2RT1RT0
  • RT0–RT22 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по нарастающему фронту.

EXTI_FTSR1 — срабатывание по спадающему фронту, линии 0–31

Смещение 0x0C, адрес 0x4001 040C, 32 бит, после сброса 0x0000 0000. В коде: EXTI->FTSR1.

31302928272625242322212019181716
—FT22FT21FT20FT19FT18—FT16
1514131211109876543210
FT15FT14FT13FT12FT11FT10FT9FT8FT7FT6FT5FT4FT3FT2FT1FT0
  • FT0–FT22 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по спадающему фронту.

EXTI_SWIER1 — программное прерывание, линии 0–31

Смещение 0x10, адрес 0x4001 0410, 32 бит, после сброса 0x0000 0000. В коде: EXTI->SWIER1.

31302928272625242322212019181716
—SWI22SWI21SWI20SWI19SWI18—SWI16
1514131211109876543210
SWI15SWI14SWI13SWI12SWI11SWI10SWI9SWI8SWI7SWI6SWI5SWI4SWI3SWI2SWI1SWI0
  • SWI0–SWI22 (по биту на каждый y, положение — на карте битов) — Программный запуск линии y: запись 1 устанавливает флаг в PR.
  • SWI1 (бит 1) — Программный запуск линии 1: запись 1 устанавливает флаг в PR.

EXTI_PR1 — флаги срабатывания, линии 0–31

Смещение 0x14, адрес 0x4001 0414, 32 бит, после сброса 0x0000 0000. В коде: EXTI->PR1.

31302928272625242322212019181716
—PIF22PIF21PIF20PIF19PIF18—PIF16
1514131211109876543210
PIF15PIF14PIF13PIF12PIF11PIF10PIF9PIF8PIF7PIF6PIF5PIF4PIF3PIF2PIF1PIF0
  • PIF0–PIF22 (по биту на каждый y, положение — на карте битов) — Флаг срабатывания линии y; сбрасывается записью 1.
  • PIF1 (бит 1) — Флаг срабатывания линии 1; сбрасывается записью 1.

EXTI_IMR2 — маска прерываний, линии 32 и выше

Смещение 0x20, адрес 0x4001 0420, 32 бит, после сброса 0x0000 0087 (у STM32L47x/L48x; у STM32L49x/L4Ax — 0x0000 0187). В коде: EXTI->IMR2.

31302928272625242322212019181716
—
1514131211109876543210
—IM40IM39IM38IM37IM36IM35IM34IM33IM32
  • IM40 (бит 8) — Разрешение прерывания линии 40 (только у STM32L496, STM32L4A6).
  • IM39 (бит 7) — Разрешение прерывания линии 39 (только у STM32L476, STM32L486, STM32L496, STM32L4A6).
  • IM32–IM38 (по биту на каждый y, положение — на карте битов) — Разрешение прерывания линии y.
  • IM35 (бит 3) — Разрешение прерывания линии 35 (только у STM32L475, STM32L476, STM32L485, STM32L486, STM32L496, STM32L4A6).

EXTI_EMR2 — маска событий, линии 32 и выше

Смещение 0x24, адрес 0x4001 0424, 32 бит, после сброса 0x0000 0000. В коде: EXTI->EMR2.

31302928272625242322212019181716
—
1514131211109876543210
—EM40EM39EM38EM37EM36EM35EM34EM33EM32
  • EM40 (бит 8) — Разрешение события линии 40 (только у STM32L496, STM32L4A6).
  • EM39 (бит 7) — Разрешение события линии 39 (только у STM32L476, STM32L486, STM32L496, STM32L4A6).
  • EM32–EM38 (по биту на каждый y, положение — на карте битов) — Разрешение события линии y.
  • EM35 (бит 3) — Разрешение события линии 35 (только у STM32L475, STM32L476, STM32L485, STM32L486, STM32L496, STM32L4A6).

EXTI_RTSR2 — срабатывание по нарастающему фронту, линии 32 и выше

Смещение 0x28, адрес 0x4001 0428, 32 бит, после сброса 0x0000 0000. В коде: EXTI->RTSR2.

31302928272625242322212019181716
—
1514131211109876543210
—RT38RT37RT36RT35—
  • RT36–RT38 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по нарастающему фронту.
  • RT35 (бит 3) — Срабатывание линии 35 по нарастающему фронту (только у STM32L475, STM32L476, STM32L485, STM32L486, STM32L496, STM32L4A6).

EXTI_FTSR2 — срабатывание по спадающему фронту, линии 32 и выше

Смещение 0x2C, адрес 0x4001 042C, 32 бит, после сброса 0x0000 0000. В коде: EXTI->FTSR2.

31302928272625242322212019181716
—
1514131211109876543210
—FT38FT37FT36FT35—
  • FT36–FT38 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по спадающему фронту.
  • FT35 (бит 3) — Срабатывание линии 35 по спадающему фронту (только у STM32L475, STM32L476, STM32L485, STM32L486, STM32L496, STM32L4A6).

EXTI_SWIER2 — программное прерывание, линии 32 и выше

Смещение 0x30, адрес 0x4001 0430, 32 бит, после сброса 0x0000 0000. В коде: EXTI->SWIER2.

31302928272625242322212019181716
—
1514131211109876543210
—SWI38SWI37SWI36SWI35—
  • SWI36–SWI38 (по биту на каждый y, положение — на карте битов) — Программный запуск линии y: запись 1 устанавливает флаг в PR.
  • SWI35 (бит 3) — Программный запуск линии 35: запись 1 устанавливает флаг в PR (только у STM32L475, STM32L476, STM32L485, STM32L486, STM32L496, STM32L4A6).

EXTI_PR2 — флаги срабатывания, линии 32 и выше

Смещение 0x34, адрес 0x4001 0434, 32 бит, после сброса 0x0000 0000. В коде: EXTI->PR2.

31302928272625242322212019181716
—
1514131211109876543210
—PIF38PIF37PIF36PIF35—
  • PIF36–PIF38 (по биту на каждый y, положение — на карте битов) — Флаг срабатывания линии y; сбрасывается записью 1.
  • PIF35 (бит 3) — Флаг срабатывания линии 35; сбрасывается записью 1 (только у STM32L475, STM32L476, STM32L485, STM32L486, STM32L496, STM32L4A6).

Частые вопросы

Как разбудить STM32L4 из Stop 2 кнопкой на PC13?

SYSCFG->EXTICR[3] = SYSCFG_EXTICR4_EXTI13_PC, FTSR1 и IMR1 для линии 13, NVIC_EnableIRQ(EXTI15_10_IRQn). Любой разрешённый вход EXTI будит из Stop 0, 1 и 2.

Почему прерывание LPUART1 срабатывает без настройки EXTI?

Линия LPUART1 прямая, и её бит IMR1 установлен после сброса. Если пробуждение от LPUART не нужно, сбросьте бит в IMR1.

Источники

  1. STMicroelectronics. RM0351: Reference manual (Rev 11) — раздел 14.5: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-l4 v1.7.5: заголовки CMSIS stm32l471xx.h, stm32l475xx.h, stm32l476xx.h, stm32l485xx.h, stm32l486xx.h, stm32l496xx.h, stm32l4a6xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры STM32L4

Калькуляторы и статьи