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

Регистры EXTI STM32G4

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

Линии EXTI0–EXTI15 — выводы, порт выбирается в SYSCFG_EXTICR; остальные — периферия: PVD, RTC, компараторы, мониторы PVM, а прямые линии (USB, I2C, USART, LPUART, LPTIM, UCPD) не имеют выбора фронта и будят микроконтроллер из Stop (RM0440, таблица 101).

Значение после сброса масок IMR1 и IMR2 руководство не даёт числом: «прямые линии — 1, остальные — 0, см. таблицу 101». Таблица 102 карты регистров печатает IMR1 = 0xFF82 0000, что с таблицей 101 не сходится, поэтому страница значение после сброса для IMR1 и IMR2 не показывает — прочитайте регистр на своём кристалле. Флаги в PR1 и PR2 сбрасываются записью 1.

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

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

РегистрСмещениеНазначениеПосле сброса
EXTI_IMR10x00Маска прерываний, линии 0–31—
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 и выше—
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. Поля, которые вы не меняете, берутся из значения после сброса.

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

EXTI->IMR1 = 0x00000000;

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

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

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

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

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

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

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

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

31302928272625242322212019181716
RT31RT30RT29—RT22RT21RT20RT19—RT17RT16
1514131211109876543210
RT15RT14RT13RT12RT11RT10RT9RT8RT7RT6RT5RT4RT3RT2RT1RT0
  • RT31 (бит 31) — Срабатывание линии 31 по нарастающему фронту (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • RT0–RT30 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по нарастающему фронту.

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

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

31302928272625242322212019181716
FT31FT30FT29—FT22FT21FT20FT19—FT17FT16
1514131211109876543210
FT15FT14FT13FT12FT11FT10FT9FT8FT7FT6FT5FT4FT3FT2FT1FT0
  • FT31 (бит 31) — Срабатывание линии 31 по спадающему фронту (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • FT0–FT30 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по спадающему фронту.

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

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

31302928272625242322212019181716
SWI31SWI30SWI29—SWI22SWI21SWI20SWI19—SWI17SWI16
1514131211109876543210
SWI15SWI14SWI13SWI12SWI11SWI10SWI9SWI8SWI7SWI6SWI5SWI4SWI3SWI2SWI1SWI0
  • SWI31 (бит 31) — Программный запуск линии 31: запись 1 устанавливает флаг в PR (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • SWI0–SWI30 (по биту на каждый y, положение — на карте битов) — Программный запуск линии y: запись 1 устанавливает флаг в PR.
  • SWI1 (бит 1) — Программный запуск линии 1: запись 1 устанавливает флаг в PR.

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

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

31302928272625242322212019181716
PIF31PIF30PIF29—PIF22PIF21PIF20PIF19—PIF17PIF16
1514131211109876543210
PIF15PIF14PIF13PIF12PIF11PIF10PIF9PIF8PIF7PIF6PIF5PIF4PIF3PIF2PIF1PIF0
  • PIF31 (бит 31) — Флаг срабатывания линии 31; сбрасывается записью 1 (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • PIF0–PIF30 (по биту на каждый y, положение — на карте битов) — Флаг срабатывания линии y; сбрасывается записью 1.
  • PIF1 (бит 1) — Флаг срабатывания линии 1; сбрасывается записью 1.

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

Смещение 0x20, адрес 0x4001 0420, 32 бит. В коде: EXTI->IMR2.

31302928272625242322212019181716
—
1514131211109876543210
—IM42IM41IM40IM39IM38IM37IM36IM35IM34IM33IM32
  • IM42 (бит 10) — Разрешение прерывания линии 42 (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484).
  • IM34–IM41 (по биту на каждый y, положение — на карте битов) — Разрешение прерывания линии y.
  • IM35 (бит 3) — Разрешение прерывания линии 35 (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484, STM32G491, STM32G4A1).
  • IM33 (бит 1) — Разрешение прерывания линии 33 (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • IM32 (бит 0) — Разрешение прерывания линии 32 (только у STM32G473, STM32G474, STM32G483, STM32G484).

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

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

31302928272625242322212019181716
—
1514131211109876543210
—EM42EM41EM40EM39EM38EM37EM36EM35EM34EM33EM32
  • EM42 (бит 10) — Разрешение события линии 42 (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484).
  • EM35 (бит 3) — Разрешение события линии 35 (только у STM32G471, STM32G473, STM32G474, STM32G483, STM32G484).
  • EM34–EM41 (по биту на каждый y, положение — на карте битов) — Разрешение события линии y.
  • EM33 (бит 1) — Разрешение события линии 33 (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • EM32 (бит 0) — Разрешение события линии 32 (только у STM32G473, STM32G474, STM32G483, STM32G484).

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

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

31302928272625242322212019181716
—
1514131211109876543210
—RT41RT40RT39RT38—RT33RT32
  • RT38–RT41 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по нарастающему фронту.
  • RT33 (бит 1) — Срабатывание линии 33 по нарастающему фронту (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • RT32 (бит 0) — Срабатывание линии 32 по нарастающему фронту (только у STM32G473, STM32G474, STM32G483, STM32G484).

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

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

31302928272625242322212019181716
—
1514131211109876543210
—FT41FT40FT39FT38—FT33FT32
  • FT38–FT41 (по биту на каждый y, положение — на карте битов) — Срабатывание линии y по спадающему фронту.
  • FT33 (бит 1) — Срабатывание линии 33 по спадающему фронту (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • FT32 (бит 0) — Срабатывание линии 32 по спадающему фронту (только у STM32G473, STM32G474, STM32G483, STM32G484).

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

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

31302928272625242322212019181716
—
1514131211109876543210
—SWI41SWI40SWI39SWI38—SWI33SWI32
  • SWI38–SWI41 (по биту на каждый y, положение — на карте битов) — Программный запуск линии y: запись 1 устанавливает флаг в PR.
  • SWI33 (бит 1) — Программный запуск линии 33: запись 1 устанавливает флаг в PR (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • SWI32 (бит 0) — Программный запуск линии 32: запись 1 устанавливает флаг в PR (только у STM32G473, STM32G474, STM32G483, STM32G484).

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

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

31302928272625242322212019181716
—
1514131211109876543210
—PIF41PIF40PIF39PIF38—PIF33PIF32
  • PIF38–PIF41 (по биту на каждый y, положение — на карте битов) — Флаг срабатывания линии y; сбрасывается записью 1.
  • PIF33 (бит 1) — Флаг срабатывания линии 33; сбрасывается записью 1 (только у STM32G473, STM32G474, STM32G483, STM32G484).
  • PIF32 (бит 0) — Флаг срабатывания линии 32; сбрасывается записью 1 (только у STM32G473, STM32G474, STM32G483, STM32G484).

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

Как разрешить прерывание от кнопки на PC13 STM32G474?

SYSCFG->EXTICR[3] = SYSCFG_EXTICR4_EXTI13_PC; EXTI->FTSR1 |= EXTI_FTSR1_FT13; EXTI->IMR1 |= EXTI_IMR1_IM13; NVIC_EnableIRQ(EXTI15_10_IRQn). В обработчике проверьте EXTI->PR1 & EXTI_PR1_PIF13 и сбросьте флаг записью 1.

Почему у линии I2C1 нет бита в RTSR1?

Это прямая линия: событие приходит от самого I2C, фронт выбирать не нужно. Достаточно разрешить её в IMR1 или EMR1, чтобы пробуждаться из Stop по адресу на шине.

Источники

  1. STMicroelectronics. RM0440: Reference manual (Rev 9) — раздел 15.5: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-g4 v1.2.6: заголовки CMSIS stm32g431xx.h, stm32g441xx.h, stm32g471xx.h, stm32g473xx.h, stm32g474xx.h, stm32g483xx.h, stm32g484xx.h, stm32g491xx.h, stm32g4a1xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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