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

Регистры STM32F1

Регистры периферии семейства STM32F1 — STM32F101, F102, F103, F105 и F107: адреса блоков, битовые поля с назначением, значения после сброса по RM0008 и конструктор значения с кодом на C.

Данные о регистрах взяты из заголовков CMSIS, которые ST выпускает в пакете STM32CubeF1 под лицензией Apache-2.0: структуры периферии со смещениями регистров, адреса экземпляров и макросы битовых полей. Заголовков в семействе двенадцать — по линейкам и объёму флеш-памяти, — и одна страница блока объединяет их все: поле, которого нет у части микроконтроллеров, отмечено.

Значения после сброса, назначение полей и смысл их значений — по справочному руководству RM0008. Имена в коде совпадают с CMSIS: регистр CRH порта C в программе — GPIOC->CRH, его поле MODE13 — макрос GPIO_CRH_MODE13.

Блоки периферии

Заголовки CMSIS и микроконтроллеры

ЗаголовокМикроконтроллеры
stm32f101x6.hSTM32F101C4, STM32F101C6, STM32F101R4, STM32F101R6, STM32F101T4, STM32F101T6
stm32f101xb.hSTM32F101C8, STM32F101CB, STM32F101R8, STM32F101RB, STM32F101T8, STM32F101TB, STM32F101V8, STM32F101VB
stm32f101xe.hSTM32F101RC, STM32F101RD, STM32F101RE, STM32F101VC, STM32F101VD, STM32F101VE, STM32F101ZC, STM32F101ZD, STM32F101ZE
stm32f101xg.hSTM32F101RF, STM32F101RG, STM32F101VF, STM32F101VG, STM32F101ZF, STM32F101ZG
stm32f102x6.hSTM32F102C4, STM32F102C6, STM32F102R4, STM32F102R6
stm32f102xb.hSTM32F102C8, STM32F102CB, STM32F102R8, STM32F102RB
stm32f103x6.hSTM32F103C4, STM32F103C6, STM32F103R4, STM32F103R6, STM32F103T4, STM32F103T6
stm32f103xb.hSTM32F103C8, STM32F103CB, STM32F103R8, STM32F103RB, STM32F103T8, STM32F103TB, STM32F103V8, STM32F103VB
stm32f103xe.hSTM32F103RC, STM32F103RD, STM32F103RE, STM32F103VC, STM32F103VD, STM32F103VE, STM32F103ZC, STM32F103ZD, STM32F103ZE
stm32f103xg.hSTM32F103RF, STM32F103RG, STM32F103VF, STM32F103VG, STM32F103ZF, STM32F103ZG
stm32f105xc.hSTM32F105R8, STM32F105RB, STM32F105RC, STM32F105V8, STM32F105VB, STM32F105VC
stm32f107xc.hSTM32F107RB, STM32F107RC, STM32F107VB, STM32F107VC

Карта микроконтроллеров семейства с распиновками — на странице STM32F1.

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

Где взять файл stm32f103xb.h?

Он входит в пакет STM32CubeF1 (папка Drivers/CMSIS/Device/ST/STM32F1xx/Include) и в репозиторий STMicroelectronics/cmsis-device-f1 на GitHub. Для STM32F103C8 и CB (плата Blue Pill) нужен именно xb — заголовок для 64 и 128 КБ флеш-памяти.

Почему регистры не меняются после записи?

Чаще всего не включено тактирование блока в RCC: у STM32F1 порты, AFIO, USART1, SPI1 и АЦП тактируются через RCC_APB2ENR, остальные периферийные блоки — через RCC_APB1ENR и RCC_AHBENR. Пока бит не установлен, запись в регистры блока не действует.

Источники

  1. STMicroelectronics. RM0008: Reference manual (Rev 21) — описания регистров, назначение полей и значения после сброса
  2. 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

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