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

Регистры SYSCFG STM32F0

Регистры SYSCFG STM32F0: какая память видна с адреса 0, переназначение каналов DMA, режим Fast-mode Plus выводов I2C, порт для каждой линии EXTI и подключение аварийных сигналов к входу останова таймеров.

SYSCFG STM32F0 объединяет то, что у STM32F1 было в AFIO, и настройки, которых там не было. MEM_MODE переносит на адрес 0x0000 0000 флеш-память, системную память с загрузчиком или SRAM; у Cortex-M0 нет регистра VTOR, поэтому программа, работающая не с начала флеш-памяти (за загрузчиком), копирует таблицу векторов в начало SRAM и переключает MEM_MODE на SRAM (RM0091, раздел 9.1.1).

Регистры EXTICR выбирают порт для линий EXTI0–EXTI15. У STM32F03x, F04x, F05x и F07x биты *_DMA_RMP переносят запросы DMA периферии на другой канал, если стандартный уже занят; у STM32F09x вместо них есть регистр DMA_CSELR.

Регистр CFGR2 подключает к входу аварийного останова TIM1, TIM15, TIM16 и TIM17 сигналы ошибки чётности SRAM, LOCKUP ядра и PVD. Каждое подключение снимается только сбросом микроконтроллера. SYSCFG тактируется битом SYSCFGCOMPEN в RCC_APB2ENR.

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

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

РегистрСмещениеНазначениеПосле сброса
SYSCFG_CFGR10x00Отображение памяти, Fast-mode Plus и переназначения0x0000 000X (X — память, выбранная режимом загрузки)
SYSCFG_EXTICR10x08Источники линий EXTI0–EXTI30x0000
SYSCFG_EXTICR20x0CИсточники линий EXTI4–EXTI70x0000
SYSCFG_EXTICR30x10Источники линий EXTI8–EXTI110x0000
SYSCFG_EXTICR40x14Источники линий EXTI12–EXTI150x0000
SYSCFG_CFGR20x18Сигналы аварийного останова таймеров и чётность SRAM0x0000 (при системном сбросе)

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

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

Значение: 0x00000000

0000 0000 0000 0000 0000 0000 0000 0000

SYSCFG->CFGR1 = 0x00000000;

SYSCFG_CFGR1 — отображение памяти, Fast-mode Plus и переназначения

Смещение 0x00, адрес 0x4001 0000, 32 бит, после сброса 0x0000 000X (X — память, выбранная режимом загрузки). В коде: SYSCFG->CFGR1.

31302928272625242322212019181716
—TIM3_DMA_RMPTIM2_DMA_RMPTIM1_DMA_RMPI2C1_DMA_RMPUSART3_DMA_RMPUSART2_DMA_RMPSPI2_DMA_RMPI2C_FMP_PA10I2C_FMP_PA9I2C_FMP_I2C2I2C_FMP_I2C1I2C_FMP_PB9I2C_FMP_PB8I2C_FMP_PB7I2C_FMP_PB6
1514131211109876543210
—TIM17_DMA_RMP2TIM16_DMA_RMP2TIM17_DMA_RMPTIM16_DMA_RMPUSART1RX_DMA_RMPUSART1TX_DMA_RMPADC_DMA_RMPIR_MOD—PA11_PA12_RMP—MEM_MODE
  • TIM3_DMA_RMP (бит 30) — Переназначение запросов DMA TIM3 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • TIM2_DMA_RMP (бит 29) — Переназначение запросов DMA TIM2 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • TIM1_DMA_RMP (бит 28) — Переназначение запросов DMA TIM1 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • I2C1_DMA_RMP (бит 27) — Переназначение запросов DMA I2C1 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • USART3_DMA_RMP (бит 26) — Переназначение запросов DMA USART3 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • USART2_DMA_RMP (бит 25) — Переназначение запросов DMA USART2 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • SPI2_DMA_RMP (бит 24) — Переназначение запросов DMA SPI2 на другой канал (только у STM32F071, STM32F072, STM32F078).
  • I2C_FMP_PA10 (бит 23) — Режим Fast-mode Plus (ток 20 мА) на выводе PA10 (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F091, STM32F098).
  • I2C_FMP_PA9 (бит 22) — Режим Fast-mode Plus (ток 20 мА) на выводе PA9 (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F091, STM32F098).
  • I2C_FMP_I2C2 (бит 21) — Режим Fast-mode Plus на выводах I2C2 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • I2C_FMP_I2C1 (бит 20) — Режим Fast-mode Plus на выводах I2C1 (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • I2C_FMP_PB9 (бит 19) — Режим Fast-mode Plus (ток 20 мА) на выводе PB9.
  • I2C_FMP_PB8 (бит 18) — Режим Fast-mode Plus (ток 20 мА) на выводе PB8.
  • I2C_FMP_PB7 (бит 17) — Режим Fast-mode Plus (ток 20 мА) на выводе PB7.
  • I2C_FMP_PB6 (бит 16) — Режим Fast-mode Plus (ток 20 мА) на выводе PB6.
  • TIM17_DMA_RMP2 (бит 14) — Переназначение запросов DMA TIM17 на другой канал (второй вариант) (только у STM32F071, STM32F072, STM32F078).
  • TIM16_DMA_RMP2 (бит 13) — Переназначение запросов DMA TIM16 на другой канал (второй вариант) (только у STM32F071, STM32F072, STM32F078).
  • TIM17_DMA_RMP (бит 12) — Переназначение запросов DMA TIM17 на другой канал (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
  • TIM16_DMA_RMP (бит 11) — Переназначение запросов DMA TIM16 на другой канал (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
  • USART1RX_DMA_RMP (бит 10) — Переназначение запросов DMA USART1 RX на другой канал (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
  • USART1TX_DMA_RMP (бит 9) — Переназначение запросов DMA USART1 TX на другой канал (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
  • ADC_DMA_RMP (бит 8) — Переназначение запросов DMA ADC на другой канал (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
  • IR_MOD (биты 7:6) — Источник огибающей для модуляции выхода IR_OUT (только у STM32F091, STM32F098).
  • PA11_PA12_RMP (бит 4) — PA11 и PA12 вместо PA9 и PA10 в корпусах на 20 и 28 выводов (только у STM32F042, STM32F048).
  • MEM_MODE (биты 1:0) — Память по адресу 0x0000 0000: флеш, системная память или SRAM.

SYSCFG_EXTICR1 — источники линий EXTI0–EXTI3

Смещение 0x08, адрес 0x4001 0008, 32 бит, после сброса 0x0000. В коде: SYSCFG->EXTICR[0].

31302928272625242322212019181716
—
1514131211109876543210
EXTI3EXTI2EXTI1EXTI0
  • EXTI3 (биты 15:12) — Порт, вывод 3 которого подключён к линии EXTI3.
    EXTI3ЗначениеМакрос CMSIS
    0000Порт A (PA3)SYSCFG_EXTICR1_EXTI3_PA
    0001Порт B (PB3)SYSCFG_EXTICR1_EXTI3_PB
    0010Порт C (PC3)SYSCFG_EXTICR1_EXTI3_PC
    0011Порт D (PD3)SYSCFG_EXTICR1_EXTI3_PD
    0100Порт E (PE3) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR1_EXTI3_PE
    0101Порт F (PF3)SYSCFG_EXTICR1_EXTI3_PF
  • EXTI2 (биты 11:8) — Порт, вывод 2 которого подключён к линии EXTI2.
    EXTI2ЗначениеМакрос CMSIS
    0000Порт A (PA2)SYSCFG_EXTICR1_EXTI2_PA
    0001Порт B (PB2)SYSCFG_EXTICR1_EXTI2_PB
    0010Порт C (PC2)SYSCFG_EXTICR1_EXTI2_PC
    0011Порт D (PD2)SYSCFG_EXTICR1_EXTI2_PD
    0100Порт E (PE2) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR1_EXTI2_PE
    0101Порт F (PF2)SYSCFG_EXTICR1_EXTI2_PF
  • EXTI1 (биты 7:4) — Порт, вывод 1 которого подключён к линии EXTI1.
    EXTI1ЗначениеМакрос CMSIS
    0000Порт A (PA1)SYSCFG_EXTICR1_EXTI1_PA
    0001Порт B (PB1)SYSCFG_EXTICR1_EXTI1_PB
    0010Порт C (PC1)SYSCFG_EXTICR1_EXTI1_PC
    0011Порт D (PD1)SYSCFG_EXTICR1_EXTI1_PD
    0100Порт E (PE1) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR1_EXTI1_PE
    0101Порт F (PF1)SYSCFG_EXTICR1_EXTI1_PF
  • EXTI0 (биты 3:0) — Порт, вывод 0 которого подключён к линии EXTI0.
    EXTI0ЗначениеМакрос CMSIS
    0000Порт A (PA0)SYSCFG_EXTICR1_EXTI0_PA
    0001Порт B (PB0)SYSCFG_EXTICR1_EXTI0_PB
    0010Порт C (PC0)SYSCFG_EXTICR1_EXTI0_PC
    0011Порт D (PD0)SYSCFG_EXTICR1_EXTI0_PD
    0100Порт E (PE0) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR1_EXTI0_PE
    0101Порт F (PF0)SYSCFG_EXTICR1_EXTI0_PF

SYSCFG_EXTICR2 — источники линий EXTI4–EXTI7

Смещение 0x0C, адрес 0x4001 000C, 32 бит, после сброса 0x0000. В коде: SYSCFG->EXTICR[1].

31302928272625242322212019181716
—
1514131211109876543210
EXTI7EXTI6EXTI5EXTI4
  • EXTI7 (биты 15:12) — Порт, вывод 7 которого подключён к линии EXTI7.
    EXTI7ЗначениеМакрос CMSIS
    0000Порт A (PA7)SYSCFG_EXTICR2_EXTI7_PA
    0001Порт B (PB7)SYSCFG_EXTICR2_EXTI7_PB
    0010Порт C (PC7)SYSCFG_EXTICR2_EXTI7_PC
    0011Порт D (PD7)SYSCFG_EXTICR2_EXTI7_PD
    0100Порт E (PE7) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR2_EXTI7_PE
    0101Порт F (PF7)SYSCFG_EXTICR2_EXTI7_PF
  • EXTI6 (биты 11:8) — Порт, вывод 6 которого подключён к линии EXTI6.
    EXTI6ЗначениеМакрос CMSIS
    0000Порт A (PA6)SYSCFG_EXTICR2_EXTI6_PA
    0001Порт B (PB6)SYSCFG_EXTICR2_EXTI6_PB
    0010Порт C (PC6)SYSCFG_EXTICR2_EXTI6_PC
    0011Порт D (PD6)SYSCFG_EXTICR2_EXTI6_PD
    0100Порт E (PE6) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR2_EXTI6_PE
    0101Порт F (PF6)SYSCFG_EXTICR2_EXTI6_PF
  • EXTI5 (биты 7:4) — Порт, вывод 5 которого подключён к линии EXTI5.
    EXTI5ЗначениеМакрос CMSIS
    0000Порт A (PA5)SYSCFG_EXTICR2_EXTI5_PA
    0001Порт B (PB5)SYSCFG_EXTICR2_EXTI5_PB
    0010Порт C (PC5)SYSCFG_EXTICR2_EXTI5_PC
    0011Порт D (PD5)SYSCFG_EXTICR2_EXTI5_PD
    0100Порт E (PE5) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR2_EXTI5_PE
    0101Порт F (PF5)SYSCFG_EXTICR2_EXTI5_PF
  • EXTI4 (биты 3:0) — Порт, вывод 4 которого подключён к линии EXTI4.
    EXTI4ЗначениеМакрос CMSIS
    0000Порт A (PA4)SYSCFG_EXTICR2_EXTI4_PA
    0001Порт B (PB4)SYSCFG_EXTICR2_EXTI4_PB
    0010Порт C (PC4)SYSCFG_EXTICR2_EXTI4_PC
    0011Порт D (PD4)SYSCFG_EXTICR2_EXTI4_PD
    0100Порт E (PE4) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR2_EXTI4_PE
    0101Порт F (PF4)SYSCFG_EXTICR2_EXTI4_PF

SYSCFG_EXTICR3 — источники линий EXTI8–EXTI11

Смещение 0x10, адрес 0x4001 0010, 32 бит, после сброса 0x0000. В коде: SYSCFG->EXTICR[2].

31302928272625242322212019181716
—
1514131211109876543210
EXTI11EXTI10EXTI9EXTI8
  • EXTI11 (биты 15:12) — Порт, вывод 11 которого подключён к линии EXTI11.
    EXTI11ЗначениеМакрос CMSIS
    0000Порт A (PA11)SYSCFG_EXTICR3_EXTI11_PA
    0001Порт B (PB11)SYSCFG_EXTICR3_EXTI11_PB
    0010Порт C (PC11)SYSCFG_EXTICR3_EXTI11_PC
    0011Порт D (PD11)SYSCFG_EXTICR3_EXTI11_PD
    0100Порт E (PE11) (только у STM32F042, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR3_EXTI11_PE
    0101Порт F (PF11) (только у STM32F031, STM32F038, STM32F051, STM32F058)SYSCFG_EXTICR3_EXTI11_PF
  • EXTI10 (биты 11:8) — Порт, вывод 10 которого подключён к линии EXTI10.
    EXTI10ЗначениеМакрос CMSIS
    0000Порт A (PA10)SYSCFG_EXTICR3_EXTI10_PA
    0001Порт B (PB10)SYSCFG_EXTICR3_EXTI10_PB
    0010Порт C (PC10)SYSCFG_EXTICR3_EXTI10_PC
    0011Порт D (PD10)SYSCFG_EXTICR3_EXTI10_PD
    0100Порт E (PE10) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR3_EXTI10_PE
    0101Порт F (PF10)SYSCFG_EXTICR3_EXTI10_PF
  • EXTI9 (биты 7:4) — Порт, вывод 9 которого подключён к линии EXTI9.
    EXTI9ЗначениеМакрос CMSIS
    0000Порт A (PA9)SYSCFG_EXTICR3_EXTI9_PA
    0001Порт B (PB9)SYSCFG_EXTICR3_EXTI9_PB
    0010Порт C (PC9)SYSCFG_EXTICR3_EXTI9_PC
    0011Порт D (PD9)SYSCFG_EXTICR3_EXTI9_PD
    0100Порт E (PE9) (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR3_EXTI9_PE
    0101Порт F (PF9)SYSCFG_EXTICR3_EXTI9_PF
  • EXTI8 (биты 3:0) — Порт, вывод 8 которого подключён к линии EXTI8.
    EXTI8ЗначениеМакрос CMSIS
    0000Порт A (PA8)SYSCFG_EXTICR3_EXTI8_PA
    0001Порт B (PB8)SYSCFG_EXTICR3_EXTI8_PB
    0010Порт C (PC8)SYSCFG_EXTICR3_EXTI8_PC
    0011Порт D (PD8)SYSCFG_EXTICR3_EXTI8_PD
    0100Порт E (PE8) (только у STM32F042, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR3_EXTI8_PE
    0101Порт F (PF8) (только у STM32F031, STM32F038, STM32F051, STM32F058)SYSCFG_EXTICR3_EXTI8_PF

SYSCFG_EXTICR4 — источники линий EXTI12–EXTI15

Смещение 0x14, адрес 0x4001 0014, 32 бит, после сброса 0x0000. В коде: SYSCFG->EXTICR[3].

31302928272625242322212019181716
—
1514131211109876543210
EXTI15EXTI14EXTI13EXTI12
  • EXTI15 (биты 15:12) — Порт, вывод 15 которого подключён к линии EXTI15.
    EXTI15ЗначениеМакрос CMSIS
    0000Порт A (PA15)SYSCFG_EXTICR4_EXTI15_PA
    0001Порт B (PB15)SYSCFG_EXTICR4_EXTI15_PB
    0010Порт C (PC15)SYSCFG_EXTICR4_EXTI15_PC
    0011Порт D (PD15)SYSCFG_EXTICR4_EXTI15_PD
    0100Порт E (PE15) (только у STM32F042, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR4_EXTI15_PE
    0101Порт F (PF15) (только у STM32F031, STM32F038, STM32F051, STM32F058)SYSCFG_EXTICR4_EXTI15_PF
  • EXTI14 (биты 11:8) — Порт, вывод 14 которого подключён к линии EXTI14.
    EXTI14ЗначениеМакрос CMSIS
    0000Порт A (PA14)SYSCFG_EXTICR4_EXTI14_PA
    0001Порт B (PB14)SYSCFG_EXTICR4_EXTI14_PB
    0010Порт C (PC14)SYSCFG_EXTICR4_EXTI14_PC
    0011Порт D (PD14)SYSCFG_EXTICR4_EXTI14_PD
    0100Порт E (PE14) (только у STM32F042, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR4_EXTI14_PE
    0101Порт F (PF14) (только у STM32F031, STM32F038, STM32F051, STM32F058)SYSCFG_EXTICR4_EXTI14_PF
  • EXTI13 (биты 7:4) — Порт, вывод 13 которого подключён к линии EXTI13.
    EXTI13ЗначениеМакрос CMSIS
    0000Порт A (PA13)SYSCFG_EXTICR4_EXTI13_PA
    0001Порт B (PB13)SYSCFG_EXTICR4_EXTI13_PB
    0010Порт C (PC13)SYSCFG_EXTICR4_EXTI13_PC
    0011Порт D (PD13)SYSCFG_EXTICR4_EXTI13_PD
    0100Порт E (PE13) (только у STM32F042, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR4_EXTI13_PE
    0101Порт F (PF13) (только у STM32F031, STM32F038, STM32F051, STM32F058)SYSCFG_EXTICR4_EXTI13_PF
  • EXTI12 (биты 3:0) — Порт, вывод 12 которого подключён к линии EXTI12.
    EXTI12ЗначениеМакрос CMSIS
    0000Порт A (PA12)SYSCFG_EXTICR4_EXTI12_PA
    0001Порт B (PB12)SYSCFG_EXTICR4_EXTI12_PB
    0010Порт C (PC12)SYSCFG_EXTICR4_EXTI12_PC
    0011Порт D (PD12)SYSCFG_EXTICR4_EXTI12_PD
    0100Порт E (PE12) (только у STM32F042, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)SYSCFG_EXTICR4_EXTI12_PE
    0101Порт F (PF12) (только у STM32F031, STM32F038, STM32F051, STM32F058)SYSCFG_EXTICR4_EXTI12_PF

SYSCFG_CFGR2 — сигналы аварийного останова таймеров и чётность SRAM

Смещение 0x18, адрес 0x4001 0018, 32 бит, после сброса 0x0000 (при системном сбросе). В коде: SYSCFG->CFGR2.

31302928272625242322212019181716
—
1514131211109876543210
—SRAM_PEF—PVD_LOCKSRAM_PARITY_LOCKLOCKUP_LOCK
  • SRAM_PEF (бит 8) — Флаг ошибки чётности SRAM; сбрасывается записью 1.
  • PVD_LOCK (бит 2) — Подключение выхода PVD к входу аварийного останова таймеров; снимается только сбросом (только у STM32F031, STM32F042, STM32F051, STM32F071, STM32F072, STM32F091).
  • SRAM_PARITY_LOCK (бит 1) — Подключение ошибки чётности SRAM к входу аварийного останова таймеров.
  • LOCKUP_LOCK (бит 0) — Подключение сигнала LOCKUP ядра (отказ в обработчике HardFault) к аварийному останову таймеров.

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

Как сделать загрузчик на STM32F0 без VTOR?

Приложение, расположенное за загрузчиком, копирует свою таблицу векторов (48 слов) в начало SRAM и переключает SYSCFG_CFGR1.MEM_MODE на SRAM (11). После этого прерывания идут по таблице в SRAM. Скрипт компоновщика должен оставить эти 192 байта SRAM свободными.

Как подключить PB3 к линии EXTI3?

Включите тактирование SYSCFG и запишите в поле EXTI3 регистра SYSCFG_EXTICR1 значение 1 (порт B): SYSCFG->EXTICR[0] = SYSCFG_EXTICR1_EXTI3_PB. Остальное — в регистрах EXTI.

Источники

  1. STMicroelectronics. RM0091: Reference manual (Rev 10) — раздел 9.1: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f0 v2.3.8: заголовки CMSIS stm32f031x6.h, stm32f038xx.h, stm32f042x6.h, stm32f048xx.h, stm32f051x8.h, stm32f058xx.h, stm32f071xb.h, stm32f072xb.h, stm32f078xx.h, stm32f091xc.h, stm32f098xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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