Регистры AFIO STM32F1
Регистры AFIO STM32F1: переназначение выводов USART, SPI, I2C, CAN и таймеров в MAPR и MAPR2, отключение JTAG и SWD, выбор порта для каждой линии EXTI в EXTICR1–EXTICR4.
Блок AFIO у STM32F1 решает две задачи. Регистры MAPR и MAPR2 переносят альтернативные функции периферии на другие выводы — например, USART1 с PA9/PA10 на PB6/PB7 — и отключают отладочный интерфейс JTAG, освобождая его выводы. Регистры EXTICR1–EXTICR4 выбирают, вывод какого порта подаётся на линию внешнего прерывания: линия EXTIn может слушать вывод n любого порта, но только одного.
Перед записью в регистры AFIO нужно включить его тактирование битом AFIOEN в RCC_APB2ENR (RM0008, раздел 9.4). Набор полей MAPR зависит от линейки: у connectivity line (STM32F105/107) есть биты Ethernet, CAN2 и SPI3, у устройств high-density — переназначение триггеров АЦП. Поля, которых нет у части устройств, отмечены ниже.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| AFIO | 0x4001 0000 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| AFIO_EVCR | 0x00 | Вывод события Cortex EVENTOUT | 0x0000 0000 |
| AFIO_MAPR | 0x04 | Переназначение функций и отладочный интерфейс | 0x0000 0000 |
| AFIO_EXTICR1 | 0x08 | Источники линий EXTI0–EXTI3 | 0x0000 |
| AFIO_EXTICR2 | 0x0C | Источники линий EXTI4–EXTI7 | 0x0000 |
| AFIO_EXTICR3 | 0x10 | Источники линий EXTI8–EXTI11 | 0x0000 |
| AFIO_EXTICR4 | 0x14 | Источники линий EXTI12–EXTI15 | 0x0000 |
| AFIO_MAPR2 | 0x1C | Переназначение функций, регистр 2 | 0x0000 0000 |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.
Значение: 0x00000000
0000 0000 0000 0000 0000 0000 0000 0000
AFIO->EVCR = 0x00000000;AFIO_EVCR — вывод события Cortex EVENTOUT
Смещение 0x00, адрес 0x4001 0000, 32 бит, после сброса 0x0000 0000. В коде: AFIO->EVCR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | EVOE | PORT | PIN | ||||||||||||
- EVOE (бит 7) — Вывод сигнала Cortex EVENTOUT на выбранный вывод.
EVOE Значение 0 Выключен 1 EVENTOUT выводится на выбранный вывод - PORT (биты 6:4) — Порт для сигнала EVENTOUT.
PORT Значение Макрос CMSIS 000 Порт A (PA) AFIO_EVCR_PORT_PA 001 Порт B (PB) AFIO_EVCR_PORT_PB 010 Порт C (PC) AFIO_EVCR_PORT_PC 011 Порт D (PD) AFIO_EVCR_PORT_PD 100 Порт E (PE) AFIO_EVCR_PORT_PE - PIN (биты 3:0) — Номер вывода для сигнала EVENTOUT.
PIN Значение Макрос CMSIS 0000 Вывод 0 выбранного порта AFIO_EVCR_PIN_PX0 0001 Вывод 1 выбранного порта AFIO_EVCR_PIN_PX1 0010 Вывод 2 выбранного порта AFIO_EVCR_PIN_PX2 0011 Вывод 3 выбранного порта AFIO_EVCR_PIN_PX3 0100 Вывод 4 выбранного порта AFIO_EVCR_PIN_PX4 0101 Вывод 5 выбранного порта AFIO_EVCR_PIN_PX5 0110 Вывод 6 выбранного порта AFIO_EVCR_PIN_PX6 0111 Вывод 7 выбранного порта AFIO_EVCR_PIN_PX7 1000 Вывод 8 выбранного порта AFIO_EVCR_PIN_PX8 1001 Вывод 9 выбранного порта AFIO_EVCR_PIN_PX9 1010 Вывод 10 выбранного порта AFIO_EVCR_PIN_PX10 1011 Вывод 11 выбранного порта AFIO_EVCR_PIN_PX11 1100 Вывод 12 выбранного порта AFIO_EVCR_PIN_PX12 1101 Вывод 13 выбранного порта AFIO_EVCR_PIN_PX13 1110 Вывод 14 выбранного порта AFIO_EVCR_PIN_PX14 1111 Вывод 15 выбранного порта AFIO_EVCR_PIN_PX15
AFIO_MAPR — переназначение функций и отладочный интерфейс
Смещение 0x04, адрес 0x4001 0004, 32 бит, после сброса 0x0000 0000. В коде: AFIO->MAPR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | PTP_PPS_REMAP | TIM2ITR1_IREMAP | SPI3_REMAP | — | SWJ_CFG | MII_RMII_SEL | CAN2_REMAP | ETH_REMAP | ADC2_ETRGREG_REMAP | ADC2_ETRGINJ_REMAP | ADC1_ETRGREG_REMAP | ADC1_ETRGINJ_REMAP | TIM5CH4_IREMAP | ||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| PD01_REMAP | CAN_REMAP | TIM4_REMAP | TIM3_REMAP | TIM2_REMAP | TIM1_REMAP | USART3_REMAP | USART2_REMAP | USART1_REMAP | I2C1_REMAP | SPI1_REMAP | |||||
- PTP_PPS_REMAP (бит 30) — Вывод импульса PPS Ethernet PTP на PB5 (только у STM32F105, STM32F107).
PTP_PPS_REMAP Значение 0 PPS не выводится 1 PPS выводится на PB5 - TIM2ITR1_IREMAP (бит 29) — Источник внутреннего триггера ITR1 таймера TIM2 (только у STM32F105, STM32F107).
TIM2ITR1_IREMAP Значение 0 ITR1 от выхода PTP Ethernet 1 ITR1 от сигнала SOF USB OTG - SPI3_REMAP (бит 28) — Переназначение выводов SPI3/I2S3 (только у STM32F105, STM32F107).
SPI3_REMAP Значение 0 NSS — PA15, SCK — PB3, MISO — PB4, MOSI — PB5 1 NSS — PA4, SCK — PC10, MISO — PC11, MOSI — PC12 - SWJ_CFG (биты 26:24) — Отладочный интерфейс: JTAG и SWD.
SWJ_CFG Значение Макрос CMSIS 000 JTAG и SWD включены — состояние после сброса AFIO_MAPR_SWJ_CFG_RESET 001 JTAG и SWD включены, но без вывода NJTRST (PB4 свободен) AFIO_MAPR_SWJ_CFG_NOJNTRST 010 JTAG выключен, SWD включён: свободны PA15, PB3, PB4 AFIO_MAPR_SWJ_CFG_JTAGDISABLE 100 JTAG и SWD выключены: свободны и PA13, PA14 AFIO_MAPR_SWJ_CFG_DISABLE - MII_RMII_SEL (бит 23) — Интерфейс Ethernet PHY: MII или RMII (только у STM32F105, STM32F107).
MII_RMII_SEL Значение 0 MII 1 RMII - CAN2_REMAP (бит 22) — Переназначение выводов CAN2 (только у STM32F105, STM32F107).
CAN2_REMAP Значение 0 CAN2_RX — PB12, CAN2_TX — PB13 1 CAN2_RX — PB5, CAN2_TX — PB6 - ETH_REMAP (бит 21) — Переназначение выводов приёмника Ethernet MAC (только у STM32F105, STM32F107).
ETH_REMAP Значение 0 RX_DV/CRS_DV — PA7, RXD0 — PC4, RXD1 — PC5, RXD2 — PB0, RXD3 — PB1 1 RX_DV/CRS_DV — PD8, RXD0–RXD3 — PD9–PD12 - ADC2_ETRGREG_REMAP (бит 20) — Внешний запуск регулярных преобразований АЦП2 (только у STM32F103xE/xG).
ADC2_ETRGREG_REMAP Значение 0 Запуск от EXTI11 1 Запуск от TIM8_TRGO - ADC2_ETRGINJ_REMAP (бит 19) — Внешний запуск инжектированных преобразований АЦП2 (только у STM32F103xE/xG).
ADC2_ETRGINJ_REMAP Значение 0 Запуск от EXTI15 1 Запуск от TIM8, канал 4 - ADC1_ETRGREG_REMAP (бит 18) — Внешний запуск регулярных преобразований АЦП1 (только у STM32F103xE/xG).
ADC1_ETRGREG_REMAP Значение 0 Запуск от EXTI11 1 Запуск от TIM8_TRGO - ADC1_ETRGINJ_REMAP (бит 17) — Внешний запуск инжектированных преобразований АЦП1 (только у STM32F103xE/xG).
ADC1_ETRGINJ_REMAP Значение 0 Запуск от EXTI15 1 Запуск от TIM8, канал 4 - TIM5CH4_IREMAP (бит 16) — Внутреннее подключение канала 4 TIM5 к LSI для калибровки (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
TIM5CH4_IREMAP Значение 0 TIM5_CH4 подключён к PA3 1 На TIM5_CH4 подаётся LSI для калибровки - PD01_REMAP (бит 15) — PD0 и PD1 на выводах кварца OSC_IN и OSC_OUT.
PD01_REMAP Значение 0 Без переназначения 1 PD0 на OSC_IN, PD1 на OSC_OUT (корпуса на 36, 48 и 64 вывода) - CAN_REMAP (биты 14:13) — Переназначение выводов CAN (CAN1 у connectivity line) (только у STM32F103, STM32F105, STM32F107).
CAN_REMAP Значение Макрос CMSIS 00 CAN_RX — PA11, CAN_TX — PA12 AFIO_MAPR_CAN_REMAP_REMAP1 10 CAN_RX — PB8, CAN_TX — PB9 (нет в корпусе на 36 выводов) AFIO_MAPR_CAN_REMAP_REMAP2 11 CAN_RX — PD0, CAN_TX — PD1 AFIO_MAPR_CAN_REMAP_REMAP3 - TIM4_REMAP (бит 12) — Переназначение каналов TIM4 (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
TIM4_REMAP Значение 0 CH1–CH4 — PB6–PB9 1 CH1–CH4 — PD12–PD15 - TIM3_REMAP (биты 11:10) — Переназначение каналов TIM3.
TIM3_REMAP Значение Макрос CMSIS 00 Без переназначения: CH1 — PA6, CH2 — PA7, CH3 — PB0, CH4 — PB1 AFIO_MAPR_TIM3_REMAP_NOREMAP 10 Частичное: CH1 — PB4, CH2 — PB5, CH3 — PB0, CH4 — PB1 AFIO_MAPR_TIM3_REMAP_PARTIALREMAP 11 Полное: CH1 — PC6, CH2 — PC7, CH3 — PC8, CH4 — PC9 AFIO_MAPR_TIM3_REMAP_FULLREMAP - TIM2_REMAP (биты 9:8) — Переназначение каналов TIM2.
TIM2_REMAP Значение Макрос CMSIS 00 Без переназначения: CH1/ETR — PA0, CH2 — PA1, CH3 — PA2, CH4 — PA3 AFIO_MAPR_TIM2_REMAP_NOREMAP 01 Частичное 1: CH1/ETR — PA15, CH2 — PB3, CH3 — PA2, CH4 — PA3 AFIO_MAPR_TIM2_REMAP_PARTIALREMAP1 10 Частичное 2: CH1/ETR — PA0, CH2 — PA1, CH3 — PB10, CH4 — PB11 AFIO_MAPR_TIM2_REMAP_PARTIALREMAP2 11 Полное: CH1/ETR — PA15, CH2 — PB3, CH3 — PB10, CH4 — PB11 AFIO_MAPR_TIM2_REMAP_FULLREMAP - TIM1_REMAP (биты 7:6) — Переназначение каналов TIM1.
TIM1_REMAP Значение Макрос CMSIS 00 Без переназначения: ETR — PA12, CH1–CH4 — PA8–PA11, BKIN — PB12, CH1N–CH3N — PB13–PB15 AFIO_MAPR_TIM1_REMAP_NOREMAP 01 Частичное: ETR — PA12, CH1–CH4 — PA8–PA11, BKIN — PA6, CH1N — PA7, CH2N — PB0, CH3N — PB1 AFIO_MAPR_TIM1_REMAP_PARTIALREMAP 11 Полное: ETR — PE7, CH1 — PE9, CH2 — PE11, CH3 — PE13, CH4 — PE14, BKIN — PE15, CH1N–CH3N — PE8, PE10, PE12 AFIO_MAPR_TIM1_REMAP_FULLREMAP - USART3_REMAP (биты 5:4) — Переназначение выводов USART3 (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
USART3_REMAP Значение Макрос CMSIS 00 Без переназначения: TX — PB10, RX — PB11, CK — PB12, CTS — PB13, RTS — PB14 AFIO_MAPR_USART3_REMAP_NOREMAP 01 Частичное: TX — PC10, RX — PC11, CK — PC12, CTS — PB13, RTS — PB14 AFIO_MAPR_USART3_REMAP_PARTIALREMAP 11 Полное: TX — PD8, RX — PD9, CK — PD10, CTS — PD11, RTS — PD12 AFIO_MAPR_USART3_REMAP_FULLREMAP - USART2_REMAP (бит 3) — Переназначение выводов USART2.
USART2_REMAP Значение 0 CTS — PA0, RTS — PA1, TX — PA2, RX — PA3, CK — PA4 1 CTS — PD3, RTS — PD4, TX — PD5, RX — PD6, CK — PD7 - USART1_REMAP (бит 2) — Переназначение выводов USART1.
USART1_REMAP Значение 0 TX — PA9, RX — PA10 1 TX — PB6, RX — PB7 - I2C1_REMAP (бит 1) — Переназначение выводов I2C1.
I2C1_REMAP Значение 0 SCL — PB6, SDA — PB7 1 SCL — PB8, SDA — PB9 - SPI1_REMAP (бит 0) — Переназначение выводов SPI1.
SPI1_REMAP Значение 0 NSS — PA4, SCK — PA5, MISO — PA6, MOSI — PA7 1 NSS — PA15, SCK — PB3, MISO — PB4, MOSI — PB5
AFIO_EXTICR1 — источники линий EXTI0–EXTI3
Смещение 0x08, адрес 0x4001 0008, 32 бит, после сброса 0x0000. В коде: AFIO->EXTICR[0].
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| EXTI3 | EXTI2 | EXTI1 | EXTI0 | ||||||||||||
- EXTI3 (биты 15:12) — Порт, вывод 3 которого подключён к линии EXTI3.
EXTI3 Значение Макрос CMSIS 0000 Порт A (PA3) AFIO_EXTICR1_EXTI3_PA 0001 Порт B (PB3) AFIO_EXTICR1_EXTI3_PB 0010 Порт C (PC3) AFIO_EXTICR1_EXTI3_PC 0011 Порт D (PD3) AFIO_EXTICR1_EXTI3_PD 0100 Порт E (PE3) AFIO_EXTICR1_EXTI3_PE 0101 Порт F (PF3) AFIO_EXTICR1_EXTI3_PF 0110 Порт G (PG3) AFIO_EXTICR1_EXTI3_PG - EXTI2 (биты 11:8) — Порт, вывод 2 которого подключён к линии EXTI2.
EXTI2 Значение Макрос CMSIS 0000 Порт A (PA2) AFIO_EXTICR1_EXTI2_PA 0001 Порт B (PB2) AFIO_EXTICR1_EXTI2_PB 0010 Порт C (PC2) AFIO_EXTICR1_EXTI2_PC 0011 Порт D (PD2) AFIO_EXTICR1_EXTI2_PD 0100 Порт E (PE2) AFIO_EXTICR1_EXTI2_PE 0101 Порт F (PF2) AFIO_EXTICR1_EXTI2_PF 0110 Порт G (PG2) AFIO_EXTICR1_EXTI2_PG - EXTI1 (биты 7:4) — Порт, вывод 1 которого подключён к линии EXTI1.
EXTI1 Значение Макрос CMSIS 0000 Порт A (PA1) AFIO_EXTICR1_EXTI1_PA 0001 Порт B (PB1) AFIO_EXTICR1_EXTI1_PB 0010 Порт C (PC1) AFIO_EXTICR1_EXTI1_PC 0011 Порт D (PD1) AFIO_EXTICR1_EXTI1_PD 0100 Порт E (PE1) AFIO_EXTICR1_EXTI1_PE 0101 Порт F (PF1) AFIO_EXTICR1_EXTI1_PF 0110 Порт G (PG1) AFIO_EXTICR1_EXTI1_PG - EXTI0 (биты 3:0) — Порт, вывод 0 которого подключён к линии EXTI0.
EXTI0 Значение Макрос CMSIS 0000 Порт A (PA0) AFIO_EXTICR1_EXTI0_PA 0001 Порт B (PB0) AFIO_EXTICR1_EXTI0_PB 0010 Порт C (PC0) AFIO_EXTICR1_EXTI0_PC 0011 Порт D (PD0) AFIO_EXTICR1_EXTI0_PD 0100 Порт E (PE0) AFIO_EXTICR1_EXTI0_PE 0101 Порт F (PF0) AFIO_EXTICR1_EXTI0_PF 0110 Порт G (PG0) AFIO_EXTICR1_EXTI0_PG
AFIO_EXTICR2 — источники линий EXTI4–EXTI7
Смещение 0x0C, адрес 0x4001 000C, 32 бит, после сброса 0x0000. В коде: AFIO->EXTICR[1].
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| EXTI7 | EXTI6 | EXTI5 | EXTI4 | ||||||||||||
- EXTI7 (биты 15:12) — Порт, вывод 7 которого подключён к линии EXTI7.
EXTI7 Значение Макрос CMSIS 0000 Порт A (PA7) AFIO_EXTICR2_EXTI7_PA 0001 Порт B (PB7) AFIO_EXTICR2_EXTI7_PB 0010 Порт C (PC7) AFIO_EXTICR2_EXTI7_PC 0011 Порт D (PD7) AFIO_EXTICR2_EXTI7_PD 0100 Порт E (PE7) AFIO_EXTICR2_EXTI7_PE 0101 Порт F (PF7) AFIO_EXTICR2_EXTI7_PF 0110 Порт G (PG7) AFIO_EXTICR2_EXTI7_PG - EXTI6 (биты 11:8) — Порт, вывод 6 которого подключён к линии EXTI6.
EXTI6 Значение Макрос CMSIS 0000 Порт A (PA6) AFIO_EXTICR2_EXTI6_PA 0001 Порт B (PB6) AFIO_EXTICR2_EXTI6_PB 0010 Порт C (PC6) AFIO_EXTICR2_EXTI6_PC 0011 Порт D (PD6) AFIO_EXTICR2_EXTI6_PD 0100 Порт E (PE6) AFIO_EXTICR2_EXTI6_PE 0101 Порт F (PF6) AFIO_EXTICR2_EXTI6_PF 0110 Порт G (PG6) AFIO_EXTICR2_EXTI6_PG - EXTI5 (биты 7:4) — Порт, вывод 5 которого подключён к линии EXTI5.
EXTI5 Значение Макрос CMSIS 0000 Порт A (PA5) AFIO_EXTICR2_EXTI5_PA 0001 Порт B (PB5) AFIO_EXTICR2_EXTI5_PB 0010 Порт C (PC5) AFIO_EXTICR2_EXTI5_PC 0011 Порт D (PD5) AFIO_EXTICR2_EXTI5_PD 0100 Порт E (PE5) AFIO_EXTICR2_EXTI5_PE 0101 Порт F (PF5) AFIO_EXTICR2_EXTI5_PF 0110 Порт G (PG5) AFIO_EXTICR2_EXTI5_PG - EXTI4 (биты 3:0) — Порт, вывод 4 которого подключён к линии EXTI4.
EXTI4 Значение Макрос CMSIS 0000 Порт A (PA4) AFIO_EXTICR2_EXTI4_PA 0001 Порт B (PB4) AFIO_EXTICR2_EXTI4_PB 0010 Порт C (PC4) AFIO_EXTICR2_EXTI4_PC 0011 Порт D (PD4) AFIO_EXTICR2_EXTI4_PD 0100 Порт E (PE4) AFIO_EXTICR2_EXTI4_PE 0101 Порт F (PF4) AFIO_EXTICR2_EXTI4_PF 0110 Порт G (PG4) AFIO_EXTICR2_EXTI4_PG
AFIO_EXTICR3 — источники линий EXTI8–EXTI11
Смещение 0x10, адрес 0x4001 0010, 32 бит, после сброса 0x0000. В коде: AFIO->EXTICR[2].
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| EXTI11 | EXTI10 | EXTI9 | EXTI8 | ||||||||||||
- EXTI11 (биты 15:12) — Порт, вывод 11 которого подключён к линии EXTI11.
EXTI11 Значение Макрос CMSIS 0000 Порт A (PA11) AFIO_EXTICR3_EXTI11_PA 0001 Порт B (PB11) AFIO_EXTICR3_EXTI11_PB 0010 Порт C (PC11) AFIO_EXTICR3_EXTI11_PC 0011 Порт D (PD11) AFIO_EXTICR3_EXTI11_PD 0100 Порт E (PE11) AFIO_EXTICR3_EXTI11_PE 0101 Порт F (PF11) AFIO_EXTICR3_EXTI11_PF 0110 Порт G (PG11) AFIO_EXTICR3_EXTI11_PG - EXTI10 (биты 11:8) — Порт, вывод 10 которого подключён к линии EXTI10.
EXTI10 Значение Макрос CMSIS 0000 Порт A (PA10) AFIO_EXTICR3_EXTI10_PA 0001 Порт B (PB10) AFIO_EXTICR3_EXTI10_PB 0010 Порт C (PC10) AFIO_EXTICR3_EXTI10_PC 0011 Порт D (PD10) AFIO_EXTICR3_EXTI10_PD 0100 Порт E (PE10) AFIO_EXTICR3_EXTI10_PE 0101 Порт F (PF10) AFIO_EXTICR3_EXTI10_PF 0110 Порт G (PG10) AFIO_EXTICR3_EXTI10_PG - EXTI9 (биты 7:4) — Порт, вывод 9 которого подключён к линии EXTI9.
EXTI9 Значение Макрос CMSIS 0000 Порт A (PA9) AFIO_EXTICR3_EXTI9_PA 0001 Порт B (PB9) AFIO_EXTICR3_EXTI9_PB 0010 Порт C (PC9) AFIO_EXTICR3_EXTI9_PC 0011 Порт D (PD9) AFIO_EXTICR3_EXTI9_PD 0100 Порт E (PE9) AFIO_EXTICR3_EXTI9_PE 0101 Порт F (PF9) AFIO_EXTICR3_EXTI9_PF 0110 Порт G (PG9) AFIO_EXTICR3_EXTI9_PG - EXTI8 (биты 3:0) — Порт, вывод 8 которого подключён к линии EXTI8.
EXTI8 Значение Макрос CMSIS 0000 Порт A (PA8) AFIO_EXTICR3_EXTI8_PA 0001 Порт B (PB8) AFIO_EXTICR3_EXTI8_PB 0010 Порт C (PC8) AFIO_EXTICR3_EXTI8_PC 0011 Порт D (PD8) AFIO_EXTICR3_EXTI8_PD 0100 Порт E (PE8) AFIO_EXTICR3_EXTI8_PE 0101 Порт F (PF8) AFIO_EXTICR3_EXTI8_PF 0110 Порт G (PG8) AFIO_EXTICR3_EXTI8_PG
AFIO_EXTICR4 — источники линий EXTI12–EXTI15
Смещение 0x14, адрес 0x4001 0014, 32 бит, после сброса 0x0000. В коде: AFIO->EXTICR[3].
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| EXTI15 | EXTI14 | EXTI13 | EXTI12 | ||||||||||||
- EXTI15 (биты 15:12) — Порт, вывод 15 которого подключён к линии EXTI15.
EXTI15 Значение Макрос CMSIS 0000 Порт A (PA15) AFIO_EXTICR4_EXTI15_PA 0001 Порт B (PB15) AFIO_EXTICR4_EXTI15_PB 0010 Порт C (PC15) AFIO_EXTICR4_EXTI15_PC 0011 Порт D (PD15) AFIO_EXTICR4_EXTI15_PD 0100 Порт E (PE15) AFIO_EXTICR4_EXTI15_PE 0101 Порт F (PF15) AFIO_EXTICR4_EXTI15_PF 0110 Порт G (PG15) AFIO_EXTICR4_EXTI15_PG - EXTI14 (биты 11:8) — Порт, вывод 14 которого подключён к линии EXTI14.
EXTI14 Значение Макрос CMSIS 0000 Порт A (PA14) AFIO_EXTICR4_EXTI14_PA 0001 Порт B (PB14) AFIO_EXTICR4_EXTI14_PB 0010 Порт C (PC14) AFIO_EXTICR4_EXTI14_PC 0011 Порт D (PD14) AFIO_EXTICR4_EXTI14_PD 0100 Порт E (PE14) AFIO_EXTICR4_EXTI14_PE 0101 Порт F (PF14) AFIO_EXTICR4_EXTI14_PF 0110 Порт G (PG14) AFIO_EXTICR4_EXTI14_PG - EXTI13 (биты 7:4) — Порт, вывод 13 которого подключён к линии EXTI13.
EXTI13 Значение Макрос CMSIS 0000 Порт A (PA13) AFIO_EXTICR4_EXTI13_PA 0001 Порт B (PB13) AFIO_EXTICR4_EXTI13_PB 0010 Порт C (PC13) AFIO_EXTICR4_EXTI13_PC 0011 Порт D (PD13) AFIO_EXTICR4_EXTI13_PD 0100 Порт E (PE13) AFIO_EXTICR4_EXTI13_PE 0101 Порт F (PF13) AFIO_EXTICR4_EXTI13_PF 0110 Порт G (PG13) AFIO_EXTICR4_EXTI13_PG - EXTI12 (биты 3:0) — Порт, вывод 12 которого подключён к линии EXTI12.
EXTI12 Значение Макрос CMSIS 0000 Порт A (PA12) AFIO_EXTICR4_EXTI12_PA 0001 Порт B (PB12) AFIO_EXTICR4_EXTI12_PB 0010 Порт C (PC12) AFIO_EXTICR4_EXTI12_PC 0011 Порт D (PD12) AFIO_EXTICR4_EXTI12_PD 0100 Порт E (PE12) AFIO_EXTICR4_EXTI12_PE 0101 Порт F (PF12) AFIO_EXTICR4_EXTI12_PF 0110 Порт G (PG12) AFIO_EXTICR4_EXTI12_PG
AFIO_MAPR2 — переназначение функций, регистр 2
Смещение 0x1C, адрес 0x4001 001C, 32 бит, после сброса 0x0000 0000. В коде: AFIO->MAPR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | |||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | FSMC_NADV_REMAP | TIM14_REMAP | TIM13_REMAP | TIM11_REMAP | TIM10_REMAP | TIM9_REMAP | — | ||||||||
- FSMC_NADV_REMAP (бит 10) — Отключение сигнала FSMC_NADV (только у STM32F101xE/xG, STM32F103xE/xG).
FSMC_NADV_REMAP Значение 0 Сигнал NADV выведен (по умолчанию) 1 NADV не используется, вывод свободен - TIM14_REMAP (бит 9) — Переназначение канала TIM14 (только у STM32F101xG, STM32F103xG).
TIM14_REMAP Значение 0 CH1 — PA7 1 CH1 — PF9 - TIM13_REMAP (бит 8) — Переназначение канала TIM13 (только у STM32F101xG, STM32F103xG).
TIM13_REMAP Значение 0 CH1 — PA6 1 CH1 — PF8 - TIM11_REMAP (бит 7) — Переназначение канала TIM11 (только у STM32F101xG, STM32F103xG).
TIM11_REMAP Значение 0 CH1 — PB9 1 CH1 — PF7 - TIM10_REMAP (бит 6) — Переназначение канала TIM10 (только у STM32F101xG, STM32F103xG).
TIM10_REMAP Значение 0 CH1 — PB8 1 CH1 — PF6 - TIM9_REMAP (бит 5) — Переназначение каналов TIM9 (только у STM32F101xG, STM32F103xG).
TIM9_REMAP Значение 0 CH1 — PA2, CH2 — PA3 1 CH1 — PE5, CH2 — PE6
Частые вопросы
Как освободить выводы PA15, PB3 и PB4, занятые JTAG?
Запишите в поле SWJ_CFG регистра AFIO_MAPR значение 010: JTAG выключается, а SWD (PA13, PA14) остаётся, так что отладчик ST-Link продолжит работать. Значение 100 отключает и SWD — после этого подключиться отладчиком можно только удерживая сброс. Биты SWJ_CFG только для записи: при чтении значение не определено, поэтому меняйте их записью всего регистра с остальными битами.
Как перенести USART1 на PB6 и PB7?
Включите тактирование AFIO и установите бит USART1_REMAP в AFIO_MAPR: по RM0008 TX переходит с PA9 на PB6, RX — с PA10 на PB7.
Источники
- STMicroelectronics. RM0008: Reference manual (Rev 21) — раздел 9.4: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-f1 v4.3.5: заголовки CMSIS stm32f101x6.h, stm32f101xb.h, stm32f101xe.h, stm32f101xg.h, stm32f102x6.h, stm32f102xb.h, stm32f103x6.h, stm32f103xb.h, stm32f103xe.h, stm32f103xg.h, stm32f105xc.h, stm32f107xc.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры STM32F1
- Все регистры STM32F1Блоки периферии и заголовки CMSIS
- RCC — сброс и тактированиеRCC_CR, RCC_CFGR, RCC_CIR, RCC_APB2RSTR, RCC_APB1RSTR, RCC_AHBENR
- GPIO — порты ввода-выводаGPIOx_CRL, GPIOx_CRH, GPIOx_IDR, GPIOx_ODR, GPIOx_BSRR, GPIOx_BRR
- EXTI — контроллер внешних прерываний и событийEXTI_IMR, EXTI_EMR, EXTI_RTSR, EXTI_FTSR, EXTI_SWIER, EXTI_PR
- USART — последовательные порты USART и UARTUSART_SR, USART_DR, USART_BRR, USART_CR1, USART_CR2, USART_CR3
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_DR, I2C_SR1
- TIM — таймерыTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- DMA — контроллеры прямого доступа к памятиDMA_ISR, DMA_IFCR, DMA_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- ADC — аналого-цифровые преобразователиADC_SR, ADC_CR1, ADC_CR2, ADC_SMPR1, ADC_SMPR2, ADC_JOFR1
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — блок вычисления CRCCRC_DR, CRC_IDR, CRC_CR
- DBGMCU — регистры отладкиDBGMCU_IDCODE, DBGMCU_CR
- PWR — управление питаниемPWR_CR, PWR_CSR
- RTC — часы реального времени и резервные регистрыRTC_CRH, RTC_CRL, RTC_PRLH, RTC_PRLL, RTC_DIVH, RTC_DIVL
- DAC — цифро-аналоговый преобразовательDAC_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2
- CAN — контроллер CAN (bxCAN)CAN_MCR, CAN_MSR, CAN_TSR, CAN_RF0R, CAN_RF1R, CAN_IER