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

Регистры RCC STM32F1

Регистры RCC STM32F1: включение генераторов HSI, HSE и PLL, выбор системной частоты и делителей шин, тактирование и сброс каждого периферийного блока, резервный домен с LSE и RTC, причины последнего сброса.

Блок RCC выбирает, от чего работает микроконтроллер, и раздаёт тактирование периферии. Системную частоту SYSCLK дают три источника: внутренний RC-генератор HSI на 8 МГц, внешний кварц или генератор HSE на 4–16 МГц (у connectivity line STM32F105/107 — 3–25 МГц) и умножитель PLL. Ещё два генератора работают на часы и сторожевой таймер: внутренний LSI на 40 кГц и часовой кварц LSE на 32,768 кГц (RM0008, раздел 7.2).

После сброса STM32F1 работает от HSI. Чтобы получить 72 МГц от кварца 8 МГц, включают HSE (бит HSEON) и ждут HSERDY, выбирают HSE источником PLL с множителем 9, включают PLL и ждут PLLRDY, ставят задержку флеш-памяти в FLASH_ACR и делитель APB1 на 2 — шина APB1 работает не быстрее 36 МГц, — и только потом переключают SW на PLL. Частота PLL не должна превышать 72 МГц.

Каждый периферийный блок включается своим битом в RCC_AHBENR, RCC_APB2ENR или RCC_APB1ENR: пока бит не установлен, блок не тактируется и запись в его регистры не действует. Биты регистров RSTR удерживают блок в сбросе. У STM32F105/107 есть ещё PLL2, PLL3 и делители PREDIV1 и PREDIV2 в регистре RCC_CFGR2 — их описывает отдельная глава RM0008 (раздел 8.3).

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

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

РегистрСмещениеНазначениеПосле сброса
RCC_CR0x00Управление генераторами и PLL0x0000 XX83 (X — не определено)
RCC_CFGR0x04Выбор SYSCLK, делители шин, выход MCO0x0000 0000
RCC_CIR0x08Прерывания готовности генераторов0x0000 0000
RCC_APB2RSTR0x0CСброс периферии шины APB20x00000 0000
RCC_APB1RSTR0x10Сброс периферии шины APB10x0000 0000
RCC_AHBENR0x14Тактирование периферии шины AHB0x0000 0014
RCC_APB2ENR0x18Тактирование периферии шины APB20x0000 0000
RCC_APB1ENR0x1CТактирование периферии шины APB10x0000 0000
RCC_BDCR0x20Резервный домен: LSE и часы RTC0x0000 0000 (сбрасывается сбросом домена резервного питания)
RCC_CSR0x24Генератор LSI и флаги причины сброса0x0C00 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания)
RCC_AHBRSTR0x28Сброс периферии шины AHB0x0000 0000
RCC_CFGR20x2CPLL2, PLL3 и делители PREDIV у connectivity line0x0000 0000

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

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

Значение: 0x00000083

0000 0000 0000 0000 0000 0000 1000 0011

RCC->CR = 0x00000083;

RCC_CR — управление генераторами и PLL

Смещение 0x00, адрес 0x4002 1000, 32 бит, после сброса 0x0000 XX83 (X — не определено). В коде: RCC->CR.

31302928272625242322212019181716
—PLL3RDYPLL3ONPLL2RDYPLL2ONPLLRDYPLLON—CSSONHSEBYPHSERDYHSEON
1514131211109876543210
HSICALHSITRIM—HSIRDYHSION
  • PLL3RDY (бит 29) — Флаг захвата PLL3 (устанавливается аппаратно) (только у STM32F105, STM32F107).
  • PLL3ON (бит 28) — Включение PLL3 (только у STM32F105, STM32F107).
  • PLL2RDY (бит 27) — Флаг захвата PLL2 (устанавливается аппаратно) (только у STM32F105, STM32F107).
  • PLL2ON (бит 26) — Включение PLL2 (только у STM32F105, STM32F107).
  • PLLRDY (бит 25) — Флаг захвата PLL (устанавливается аппаратно).
  • PLLON (бит 24) — Включение PLL.
  • CSSON (бит 19) — Включение системы контроля тактирования CSS: при отказе HSE — прерывание NMI и переход SYSCLK на HSI.
  • HSEBYP (бит 18) — Обход генератора HSE: на OSC_IN подаётся готовый тактовый сигнал вместо кварца.
  • HSERDY (бит 17) — Флаг готовности HSE (устанавливается аппаратно).
  • HSEON (бит 16) — Включение генератора HSE.
  • HSICAL (биты 15:8) — Заводская калибровка HSI (только чтение).
  • HSITRIM (биты 7:3) — Подстройка частоты HSI, добавляется к заводской калибровке.
  • HSIRDY (бит 1) — Флаг готовности HSI (устанавливается аппаратно).
  • HSION (бит 0) — Включение внутреннего генератора HSI.

RCC_CFGR — выбор SYSCLK, делители шин, выход MCO

Смещение 0x04, адрес 0x4002 1004, 32 бит, после сброса 0x0000 0000. В коде: RCC->CFGR.

31302928272625242322212019181716
—MCO—USBPREPLLMULLPLLXTPREPLLSRC
1514131211109876543210
ADCPREPPRE2PPRE1HPRESWSSW
  • MCO (биты 27:24) — Сигнал на выходе MCO (вывод PA8) (только у STM32F105, STM32F107).
    MCOЗначениеМакрос CMSIS
    0000Нет сигналаRCC_CFGR_MCO_NOCLOCK
    0100SYSCLKRCC_CFGR_MCO_SYSCLK
    0101HSIRCC_CFGR_MCO_HSI
    0110HSERCC_CFGR_MCO_HSE
    0111PLL / 2RCC_CFGR_MCO_PLLCLK_DIV2
    1000PLL2RCC_CFGR_MCO_PLL2CLK
    1001PLL3 / 2RCC_CFGR_MCO_PLL3CLK_DIV2
    1010XT1 — генератор 3–25 МГц (для Ethernet)RCC_CFGR_MCO_EXT_HSE
    1011PLL3 (для Ethernet)RCC_CFGR_MCO_PLL3CLK
  • MCO (биты 26:24) — Сигнал на выходе MCO (вывод PA8) (только у STM32F101, STM32F102, STM32F103).
    MCOЗначениеМакрос CMSIS
    000Нет сигналаRCC_CFGR_MCO_NOCLOCK
    100SYSCLKRCC_CFGR_MCO_SYSCLK
    101HSIRCC_CFGR_MCO_HSI
    110HSERCC_CFGR_MCO_HSE
    111PLL / 2RCC_CFGR_MCO_PLLCLK_DIV2
  • USBPRE (бит 22) — Делитель частоты PLL для USB: должен получиться 48 МГц (только у STM32F102, STM32F103).
    USBPREЗначение
    0PLL / 1,5 (PLL на 72 МГц)
    1PLL без деления (PLL на 48 МГц)
  • OTGFSPRE (бит 22) — Делитель VCO PLL для USB OTG FS: должен получиться 48 МГц (только у STM32F105, STM32F107).
    OTGFSPREЗначение
    0VCO PLL / 3 (PLL на 72 МГц)
    1VCO PLL / 2 (PLL на 48 МГц)
  • PLLMULL (биты 21:18) — Множитель PLL.
    PLLMULLЗначениеМакрос CMSIS
    0000×2 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL2
    0001×3 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL3
    0010×4RCC_CFGR_PLLMULL4
    0011×5RCC_CFGR_PLLMULL5
    0100×6RCC_CFGR_PLLMULL6
    0101×7RCC_CFGR_PLLMULL7
    0110×8RCC_CFGR_PLLMULL8
    0111×9RCC_CFGR_PLLMULL9
    1000×10 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL10
    1001×11 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL11
    1010×12 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL12
    1011×13 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL13
    1100×14 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL14
    1101×15 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL15
    1101×6,5 (только у STM32F105, STM32F107)RCC_CFGR_PLLMULL6_5
    1110×16 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLMULL16
  • PLLXTPRE (бит 17) — Деление HSE на 2 перед PLL (у connectivity line — младший бит PREDIV1).
    PLLXTPREЗначениеМакрос CMSIS
    0HSE без деления (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLXTPRE_HSE
    0PREDIV1 без деления (только у STM32F105, STM32F107)RCC_CFGR_PLLXTPRE_PREDIV1
    1HSE / 2 (только у STM32F101, STM32F102, STM32F103)RCC_CFGR_PLLXTPRE_HSE_DIV2
    1PREDIV1 / 2 (только у STM32F105, STM32F107)RCC_CFGR_PLLXTPRE_PREDIV1_DIV2
  • PLLSRC (бит 16) — Источник PLL: HSI / 2 или HSE (у connectivity line — выход PREDIV1).
    PLLSRCЗначение
    0HSI / 2
    1HSE (у connectivity line — выход PREDIV1)
  • ADCPRE (биты 15:14) — Делитель тактирования АЦП от PCLK2; частота АЦП — не выше 14 МГц.
    ADCPREЗначениеМакрос CMSIS
    00Деление на 2RCC_CFGR_ADCPRE_DIV2
    01Деление на 4RCC_CFGR_ADCPRE_DIV4
    10Деление на 6RCC_CFGR_ADCPRE_DIV6
    11Деление на 8RCC_CFGR_ADCPRE_DIV8
  • PPRE2 (биты 13:11) — Делитель шины APB2: PCLK2 = HCLK / делитель.
    PPRE2ЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE2_DIV1
    100Деление на 2RCC_CFGR_PPRE2_DIV2
    101Деление на 4RCC_CFGR_PPRE2_DIV4
    110Деление на 8RCC_CFGR_PPRE2_DIV8
    111Деление на 16RCC_CFGR_PPRE2_DIV16
  • PPRE1 (биты 10:8) — Делитель шины APB1: PCLK1 = HCLK / делитель.
    PPRE1ЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE1_DIV1
    100Деление на 2RCC_CFGR_PPRE1_DIV2
    101Деление на 4RCC_CFGR_PPRE1_DIV4
    110Деление на 8RCC_CFGR_PPRE1_DIV8
    111Деление на 16RCC_CFGR_PPRE1_DIV16
  • HPRE (биты 7:4) — Делитель шины AHB: HCLK = SYSCLK / делитель.
    HPREЗначениеМакрос CMSIS
    0000Без деленияRCC_CFGR_HPRE_DIV1
    1000Деление на 2RCC_CFGR_HPRE_DIV2
    1001Деление на 4RCC_CFGR_HPRE_DIV4
    1010Деление на 8RCC_CFGR_HPRE_DIV8
    1011Деление на 16RCC_CFGR_HPRE_DIV16
    1100Деление на 64RCC_CFGR_HPRE_DIV64
    1101Деление на 128RCC_CFGR_HPRE_DIV128
    1110Деление на 256RCC_CFGR_HPRE_DIV256
    1111Деление на 512RCC_CFGR_HPRE_DIV512
  • SWS (биты 3:2) — Источник SYSCLK в данный момент (только чтение).
    SWSЗначениеМакрос CMSIS
    00HSIRCC_CFGR_SWS_HSI
    01HSERCC_CFGR_SWS_HSE
    10PLLRCC_CFGR_SWS_PLL
  • SW (биты 1:0) — Источник системной частоты SYSCLK.
    SWЗначениеМакрос CMSIS
    00HSIRCC_CFGR_SW_HSI
    01HSERCC_CFGR_SW_HSE
    10PLLRCC_CFGR_SW_PLL

RCC_CIR — прерывания готовности генераторов

Смещение 0x08, адрес 0x4002 1008, 32 бит, после сброса 0x0000 0000. В коде: RCC->CIR.

31302928272625242322212019181716
—CSSCPLL3RDYCPLL2RDYCPLLRDYCHSERDYCHSIRDYCLSERDYCLSIRDYC
1514131211109876543210
—PLL3RDYIEPLL2RDYIEPLLRDYIEHSERDYIEHSIRDYIELSERDYIELSIRDYIECSSFPLL3RDYFPLL2RDYFPLLRDYFHSERDYFHSIRDYFLSERDYFLSIRDYF
  • CSSC (бит 23) — Сброс флага CSSF: запись 1.
  • PLL3RDYC (бит 22) — Сброс флага прерывания готовности PLL3: запись 1 (только у STM32F105, STM32F107).
  • PLL2RDYC (бит 21) — Сброс флага прерывания готовности PLL2: запись 1 (только у STM32F105, STM32F107).
  • PLLRDYC (бит 20) — Сброс флага прерывания готовности PLL: запись 1.
  • HSERDYC (бит 19) — Сброс флага прерывания готовности HSE: запись 1.
  • HSIRDYC (бит 18) — Сброс флага прерывания готовности HSI: запись 1.
  • LSERDYC (бит 17) — Сброс флага прерывания готовности LSE: запись 1.
  • LSIRDYC (бит 16) — Сброс флага прерывания готовности LSI: запись 1.
  • PLL3RDYIE (бит 14) — Разрешение прерывания по готовности PLL3 (только у STM32F105, STM32F107).
  • PLL2RDYIE (бит 13) — Разрешение прерывания по готовности PLL2 (только у STM32F105, STM32F107).
  • PLLRDYIE (бит 12) — Разрешение прерывания по готовности PLL.
  • HSERDYIE (бит 11) — Разрешение прерывания по готовности HSE.
  • HSIRDYIE (бит 10) — Разрешение прерывания по готовности HSI.
  • LSERDYIE (бит 9) — Разрешение прерывания по готовности LSE.
  • LSIRDYIE (бит 8) — Разрешение прерывания по готовности LSI.
  • CSSF (бит 7) — Флаг прерывания системы CSS: отказ HSE.
  • PLL3RDYF (бит 6) — Флаг прерывания: PLL3 готов (только у STM32F105, STM32F107).
  • PLL2RDYF (бит 5) — Флаг прерывания: PLL2 готов (только у STM32F105, STM32F107).
  • PLLRDYF (бит 4) — Флаг прерывания: PLL готов.
  • HSERDYF (бит 3) — Флаг прерывания: HSE готов.
  • HSIRDYF (бит 2) — Флаг прерывания: HSI готов.
  • LSERDYF (бит 1) — Флаг прерывания: LSE готов.
  • LSIRDYF (бит 0) — Флаг прерывания: LSI готов.

RCC_APB2RSTR — сброс периферии шины APB2

Смещение 0x0C, адрес 0x4002 100C, 32 бит, после сброса 0x00000 0000. В коде: RCC->APB2RSTR.

31302928272625242322212019181716
—TIM11RSTTIM10RSTTIM9RST—
1514131211109876543210
ADC3RSTUSART1RSTTIM8RSTSPI1RSTTIM1RSTADC2RSTADC1RSTIOPGRSTIOPFRSTIOPERSTIOPDRSTIOPCRSTIOPBRSTIOPARST—AFIORST
  • TIM11RST (бит 21) — Сброс таймера TIM11: 1 — блок удерживается в сбросе (только у STM32F101xG, STM32F103xG).
  • TIM10RST (бит 20) — Сброс таймера TIM10: 1 — блок удерживается в сбросе (только у STM32F101xG, STM32F103xG).
  • TIM9RST (бит 19) — Сброс таймера TIM9: 1 — блок удерживается в сбросе (только у STM32F101xG, STM32F103xG).
  • ADC3RST (бит 15) — Сброс АЦП3: 1 — блок удерживается в сбросе (только у STM32F103xE/xG).
  • USART1RST (бит 14) — Сброс USART1: 1 — блок удерживается в сбросе.
  • TIM8RST (бит 13) — Сброс таймера TIM8: 1 — блок удерживается в сбросе (только у STM32F103xE/xG).
  • SPI1RST (бит 12) — Сброс SPI1: 1 — блок удерживается в сбросе.
  • TIM1RST (бит 11) — Сброс таймера TIM1: 1 — блок удерживается в сбросе.
  • ADC2RST (бит 10) — Сброс АЦП2: 1 — блок удерживается в сбросе (только у STM32F103, STM32F105, STM32F107).
  • ADC1RST (бит 9) — Сброс АЦП1: 1 — блок удерживается в сбросе.
  • IOPGRST (бит 8) — Сброс порта G: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG).
  • IOPFRST (бит 7) — Сброс порта F: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG).
  • IOPERST (бит 6) — Сброс порта E: 1 — блок удерживается в сбросе (только у STM32F101xB/xE/xG, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • IOPDRST (бит 5) — Сброс порта D: 1 — блок удерживается в сбросе.
  • IOPCRST (бит 4) — Сброс порта C: 1 — блок удерживается в сбросе.
  • IOPBRST (бит 3) — Сброс порта B: 1 — блок удерживается в сбросе.
  • IOPARST (бит 2) — Сброс порта A: 1 — блок удерживается в сбросе.
  • AFIORST (бит 0) — Сброс AFIO: 1 — блок удерживается в сбросе.

RCC_APB1RSTR — сброс периферии шины APB1

Смещение 0x10, адрес 0x4002 1010, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1RSTR.

31302928272625242322212019181716
—DACRSTPWRRSTBKPRSTCAN2RSTCAN1RST—USBRSTI2C2RSTI2C1RSTUART5RSTUART4RSTUSART3RSTUSART2RST—
1514131211109876543210
SPI3RSTSPI2RST—WWDGRST—TIM14RSTTIM13RSTTIM12RSTTIM7RSTTIM6RSTTIM5RSTTIM4RSTTIM3RSTTIM2RST
  • DACRST (бит 29) — Сброс ЦАП: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • PWRRST (бит 28) — Сброс интерфейса управления питанием PWR: 1 — блок удерживается в сбросе.
  • BKPRST (бит 27) — Сброс резервных регистров BKP: 1 — блок удерживается в сбросе.
  • CAN2RST (бит 26) — Сброс CAN2: 1 — блок удерживается в сбросе (только у STM32F105, STM32F107).
  • CAN1RST (бит 25) — Сброс CAN1: 1 — блок удерживается в сбросе (только у STM32F103, STM32F105, STM32F107).
  • USBRST (бит 23) — Сброс USB: 1 — блок удерживается в сбросе (только у STM32F102, STM32F103).
  • I2C2RST (бит 22) — Сброс I2C2: 1 — блок удерживается в сбросе (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • I2C1RST (бит 21) — Сброс I2C1: 1 — блок удерживается в сбросе.
  • UART5RST (бит 20) — Сброс UART5: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • UART4RST (бит 19) — Сброс UART4: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • USART3RST (бит 18) — Сброс USART3: 1 — блок удерживается в сбросе (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • USART2RST (бит 17) — Сброс USART2: 1 — блок удерживается в сбросе.
  • SPI3RST (бит 15) — Сброс SPI3: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • SPI2RST (бит 14) — Сброс SPI2: 1 — блок удерживается в сбросе (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • WWDGRST (бит 11) — Сброс оконного сторожевого таймера WWDG: 1 — блок удерживается в сбросе.
  • TIM14RST (бит 8) — Сброс таймера TIM14: 1 — блок удерживается в сбросе (только у STM32F101xG, STM32F103xG).
  • TIM13RST (бит 7) — Сброс таймера TIM13: 1 — блок удерживается в сбросе (только у STM32F101xG, STM32F103xG).
  • TIM12RST (бит 6) — Сброс таймера TIM12: 1 — блок удерживается в сбросе (только у STM32F101xG, STM32F103xG).
  • TIM7RST (бит 5) — Сброс таймера TIM7: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • TIM6RST (бит 4) — Сброс таймера TIM6: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • TIM5RST (бит 3) — Сброс таймера TIM5: 1 — блок удерживается в сбросе (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • TIM4RST (бит 2) — Сброс таймера TIM4: 1 — блок удерживается в сбросе (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • TIM3RST (бит 1) — Сброс таймера TIM3: 1 — блок удерживается в сбросе.
  • TIM2RST (бит 0) — Сброс таймера TIM2: 1 — блок удерживается в сбросе.

RCC_AHBENR — тактирование периферии шины AHB

Смещение 0x14, адрес 0x4002 1014, 32 бит, после сброса 0x0000 0014. В коде: RCC->AHBENR.

31302928272625242322212019181716
—ETHMACRXEN
1514131211109876543210
ETHMACTXENETHMACEN—OTGFSEN—SDIOEN—FSMCEN—CRCEN—FLITFEN—SRAMENDMA2ENDMA1EN
  • ETHMACRXEN (бит 16) — Тактирование приёмника Ethernet MAC (только у STM32F107).
  • ETHMACTXEN (бит 15) — Тактирование передатчика Ethernet MAC (только у STM32F107).
  • ETHMACEN (бит 14) — Тактирование Ethernet MAC (только у STM32F107).
  • OTGFSEN (бит 12) — Тактирование USB OTG FS (только у STM32F105, STM32F107).
  • SDIOEN (бит 10) — Тактирование SDIO (только у STM32F103xE/xG).
  • FSMCEN (бит 8) — Тактирование FSMC (только у STM32F101xE/xG, STM32F103xE/xG).
  • CRCEN (бит 6) — Тактирование блока CRC.
  • FLITFEN (бит 4) — Тактирование интерфейса флеш-памяти в режиме сна.
  • SRAMEN (бит 2) — Тактирование SRAM в режиме сна.
  • DMA2EN (бит 1) — Тактирование DMA2 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • DMA1EN (бит 0) — Тактирование DMA1.

RCC_APB2ENR — тактирование периферии шины APB2

Смещение 0x18, адрес 0x4002 1018, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB2ENR.

31302928272625242322212019181716
—TIM11ENTIM10ENTIM9EN—
1514131211109876543210
ADC3ENUSART1ENTIM8ENSPI1ENTIM1ENADC2ENADC1ENIOPGENIOPFENIOPEENIOPDENIOPCENIOPBENIOPAEN—AFIOEN
  • TIM11EN (бит 21) — Тактирование таймера TIM11 (только у STM32F101xG, STM32F103xG).
  • TIM10EN (бит 20) — Тактирование таймера TIM10 (только у STM32F101xG, STM32F103xG).
  • TIM9EN (бит 19) — Тактирование таймера TIM9 (только у STM32F101xG, STM32F103xG).
  • ADC3EN (бит 15) — Тактирование АЦП3 (только у STM32F103xE/xG).
  • USART1EN (бит 14) — Тактирование USART1.
  • TIM8EN (бит 13) — Тактирование таймера TIM8 (только у STM32F103xE/xG).
  • SPI1EN (бит 12) — Тактирование SPI1.
  • TIM1EN (бит 11) — Тактирование таймера TIM1.
  • ADC2EN (бит 10) — Тактирование АЦП2 (только у STM32F103, STM32F105, STM32F107).
  • ADC1EN (бит 9) — Тактирование АЦП1.
  • IOPGEN (бит 8) — Тактирование порта G (только у STM32F101xE/xG, STM32F103xE/xG).
  • IOPFEN (бит 7) — Тактирование порта F (только у STM32F101xE/xG, STM32F103xE/xG).
  • IOPEEN (бит 6) — Тактирование порта E (только у STM32F101xB/xE/xG, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • IOPDEN (бит 5) — Тактирование порта D.
  • IOPCEN (бит 4) — Тактирование порта C.
  • IOPBEN (бит 3) — Тактирование порта B.
  • IOPAEN (бит 2) — Тактирование порта A.
  • AFIOEN (бит 0) — Тактирование AFIO.

RCC_APB1ENR — тактирование периферии шины APB1

Смещение 0x1C, адрес 0x4002 101C, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1ENR.

31302928272625242322212019181716
—DACENPWRENBKPENCAN2ENCAN1EN—USBENI2C2ENI2C1ENUART5ENUART4ENUSART3ENUSART2EN—
1514131211109876543210
SPI3ENSPI2EN—WWDGEN—TIM14ENTIM13ENTIM12ENTIM7ENTIM6ENTIM5ENTIM4ENTIM3ENTIM2EN
  • DACEN (бит 29) — Тактирование ЦАП (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • PWREN (бит 28) — Тактирование интерфейса управления питанием PWR.
  • BKPEN (бит 27) — Тактирование резервных регистров BKP.
  • CAN2EN (бит 26) — Тактирование CAN2 (только у STM32F105, STM32F107).
  • CAN1EN (бит 25) — Тактирование CAN1 (только у STM32F103, STM32F105, STM32F107).
  • USBEN (бит 23) — Тактирование USB (только у STM32F102, STM32F103).
  • I2C2EN (бит 22) — Тактирование I2C2 (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • I2C1EN (бит 21) — Тактирование I2C1.
  • UART5EN (бит 20) — Тактирование UART5 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • UART4EN (бит 19) — Тактирование UART4 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • USART3EN (бит 18) — Тактирование USART3 (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • USART2EN (бит 17) — Тактирование USART2.
  • SPI3EN (бит 15) — Тактирование SPI3 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • SPI2EN (бит 14) — Тактирование SPI2 (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • WWDGEN (бит 11) — Тактирование оконного сторожевого таймера WWDG.
  • TIM14EN (бит 8) — Тактирование таймера TIM14 (только у STM32F101xG, STM32F103xG).
  • TIM13EN (бит 7) — Тактирование таймера TIM13 (только у STM32F101xG, STM32F103xG).
  • TIM12EN (бит 6) — Тактирование таймера TIM12 (только у STM32F101xG, STM32F103xG).
  • TIM7EN (бит 5) — Тактирование таймера TIM7 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • TIM6EN (бит 4) — Тактирование таймера TIM6 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • TIM5EN (бит 3) — Тактирование таймера TIM5 (только у STM32F101xE/xG, STM32F103xE/xG, STM32F105, STM32F107).
  • TIM4EN (бит 2) — Тактирование таймера TIM4 (только у STM32F101xB/xE/xG, STM32F102xB, STM32F103xB/xE/xG, STM32F105, STM32F107).
  • TIM3EN (бит 1) — Тактирование таймера TIM3.
  • TIM2EN (бит 0) — Тактирование таймера TIM2.

RCC_BDCR — резервный домен: LSE и часы RTC

Смещение 0x20, адрес 0x4002 1020, 32 бит, после сброса 0x0000 0000 (сбрасывается сбросом домена резервного питания). В коде: RCC->BDCR.

31302928272625242322212019181716
—BDRST
1514131211109876543210
RTCEN—RTCSEL—LSEBYPLSERDYLSEON
  • BDRST (бит 16) — Программный сброс резервного домена.
  • RTCEN (бит 15) — Включение часов RTC.
  • RTCSEL (биты 9:8) — Источник тактирования часов RTC; меняется только сбросом резервного домена.
    RTCSELЗначениеМакрос CMSIS
    00Нет тактированияRCC_BDCR_RTCSEL_NOCLOCK
    01LSERCC_BDCR_RTCSEL_LSE
    10LSIRCC_BDCR_RTCSEL_LSI
    11HSE / 128RCC_BDCR_RTCSEL_HSE
  • LSEBYP (бит 2) — Обход генератора LSE: внешний тактовый сигнал вместо кварца.
  • LSERDY (бит 1) — Флаг готовности LSE.
  • LSEON (бит 0) — Включение часового генератора LSE.

RCC_CSR — генератор LSI и флаги причины сброса

Смещение 0x24, адрес 0x4002 1024, 32 бит, после сброса 0x0C00 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания). В коде: RCC->CSR.

31302928272625242322212019181716
LPWRRSTFWWDGRSTFIWDGRSTFSFTRSTFPORRSTFPINRSTF—RMVF—
1514131211109876543210
—LSIRDYLSION
  • LPWRRSTF (бит 31) — Причина сброса: вход в режим пониженного потребления.
  • WWDGRSTF (бит 30) — Причина сброса: оконный сторожевой таймер WWDG.
  • IWDGRSTF (бит 29) — Причина сброса: независимый сторожевой таймер IWDG.
  • SFTRSTF (бит 28) — Причина сброса: программный сброс.
  • PORRSTF (бит 27) — Причина сброса: включение питания (POR/PDR).
  • PINRSTF (бит 26) — Причина сброса: вывод NRST.
  • RMVF (бит 24) — Сброс флагов причины сброса: запись 1.
  • LSIRDY (бит 1) — Флаг готовности LSI.
  • LSION (бит 0) — Включение внутреннего генератора LSI.

RCC_AHBRSTR — сброс периферии шины AHB

Смещение 0x28, адрес 0x4002 1028, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32F105, STM32F107. В коде: RCC->AHBRSTR.

31302928272625242322212019181716
—
1514131211109876543210
—ETHMACRST—OTGFSRST—
  • ETHMACRST (бит 14) — Сброс Ethernet MAC: 1 — блок удерживается в сбросе (только у STM32F107).
  • OTGFSRST (бит 12) — Сброс USB OTG FS: 1 — блок удерживается в сбросе.

RCC_CFGR2 — pLL2, PLL3 и делители PREDIV у connectivity line

Смещение 0x2C, адрес 0x4002 102C, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32F105, STM32F107. В коде: RCC->CFGR2.

31302928272625242322212019181716
—I2S3SRCI2S2SRCPREDIV1SRC
1514131211109876543210
PLL3MULPLL2MULPREDIV2PREDIV1
  • I2S3SRC (бит 18) — Тактирование I2S3: SYSCLK или VCO PLL3.
    I2S3SRCЗначение
    0SYSCLK
    1VCO PLL3 (2 × PLL3CLK)
  • I2S2SRC (бит 17) — Тактирование I2S2: SYSCLK или VCO PLL3.
    I2S2SRCЗначение
    0SYSCLK
    1VCO PLL3 (2 × PLL3CLK)
  • PREDIV1SRC (бит 16) — Источник PREDIV1: HSE или PLL2.
    PREDIV1SRCЗначениеМакрос CMSIS
    0HSERCC_CFGR2_PREDIV1SRC_HSE
    1PLL2RCC_CFGR2_PREDIV1SRC_PLL2
  • PLL3MUL (биты 15:12) — Множитель PLL3.
    PLL3MULЗначениеМакрос CMSIS
    0110×8RCC_CFGR2_PLL3MUL8
    0111×9RCC_CFGR2_PLL3MUL9
    1000×10RCC_CFGR2_PLL3MUL10
    1001×11RCC_CFGR2_PLL3MUL11
    1010×12RCC_CFGR2_PLL3MUL12
    1011×13RCC_CFGR2_PLL3MUL13
    1100×14RCC_CFGR2_PLL3MUL14
    1110×16RCC_CFGR2_PLL3MUL16
    1111×20RCC_CFGR2_PLL3MUL20
  • PLL2MUL (биты 11:8) — Множитель PLL2.
    PLL2MULЗначениеМакрос CMSIS
    0110×8RCC_CFGR2_PLL2MUL8
    0111×9RCC_CFGR2_PLL2MUL9
    1000×10RCC_CFGR2_PLL2MUL10
    1001×11RCC_CFGR2_PLL2MUL11
    1010×12RCC_CFGR2_PLL2MUL12
    1011×13RCC_CFGR2_PLL2MUL13
    1100×14RCC_CFGR2_PLL2MUL14
    1110×16RCC_CFGR2_PLL2MUL16
    1111×20RCC_CFGR2_PLL2MUL20
  • PREDIV2 (биты 7:4) — Делитель PREDIV2 перед PLL2 и PLL3.
    PREDIV2ЗначениеМакрос CMSIS
    0000Без деленияRCC_CFGR2_PREDIV2_DIV1
    0001Деление на 2RCC_CFGR2_PREDIV2_DIV2
    0010Деление на 3RCC_CFGR2_PREDIV2_DIV3
    0011Деление на 4RCC_CFGR2_PREDIV2_DIV4
    0100Деление на 5RCC_CFGR2_PREDIV2_DIV5
    0101Деление на 6RCC_CFGR2_PREDIV2_DIV6
    0110Деление на 7RCC_CFGR2_PREDIV2_DIV7
    0111Деление на 8RCC_CFGR2_PREDIV2_DIV8
    1000Деление на 9RCC_CFGR2_PREDIV2_DIV9
    1001Деление на 10RCC_CFGR2_PREDIV2_DIV10
    1010Деление на 11RCC_CFGR2_PREDIV2_DIV11
    1011Деление на 12RCC_CFGR2_PREDIV2_DIV12
    1100Деление на 13RCC_CFGR2_PREDIV2_DIV13
    1101Деление на 14RCC_CFGR2_PREDIV2_DIV14
    1110Деление на 15RCC_CFGR2_PREDIV2_DIV15
    1111Деление на 16RCC_CFGR2_PREDIV2_DIV16
  • PREDIV1 (биты 3:0) — Делитель PREDIV1 перед PLL.
    PREDIV1ЗначениеМакрос CMSIS
    0000Без деленияRCC_CFGR2_PREDIV1_DIV1
    0001Деление на 2RCC_CFGR2_PREDIV1_DIV2
    0010Деление на 3RCC_CFGR2_PREDIV1_DIV3
    0011Деление на 4RCC_CFGR2_PREDIV1_DIV4
    0100Деление на 5RCC_CFGR2_PREDIV1_DIV5
    0101Деление на 6RCC_CFGR2_PREDIV1_DIV6
    0110Деление на 7RCC_CFGR2_PREDIV1_DIV7
    0111Деление на 8RCC_CFGR2_PREDIV1_DIV8
    1000Деление на 9RCC_CFGR2_PREDIV1_DIV9
    1001Деление на 10RCC_CFGR2_PREDIV1_DIV10
    1010Деление на 11RCC_CFGR2_PREDIV1_DIV11
    1011Деление на 12RCC_CFGR2_PREDIV1_DIV12
    1100Деление на 13RCC_CFGR2_PREDIV1_DIV13
    1101Деление на 14RCC_CFGR2_PREDIV1_DIV14
    1110Деление на 15RCC_CFGR2_PREDIV1_DIV15
    1111Деление на 16RCC_CFGR2_PREDIV1_DIV16

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

Как включить тактирование USART1 в STM32F103?

Установите бит USART1EN в регистре RCC_APB2ENR: RCC->APB2ENR |= RCC_APB2ENR_USART1EN. Выводы USART1 — порт A, поэтому нужен и IOPAEN в том же регистре. USART2 и USART3 тактируются от шины APB1 — их биты в RCC_APB1ENR.

Почему STM32F103 не стартует после переключения на PLL 72 МГц?

Частые причины — не выставлена задержка флеш-памяти (2 такта ожидания в FLASH_ACR для 48–72 МГц), шина APB1 оставлена без делителя и получила 72 МГц вместо допустимых 36, или переключение сделано до установки флага PLLRDY. Порядок и значения удобно проверить в калькуляторе тактирования STM32.

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

По флагам регистра RCC_CSR: PINRSTF — сброс выводом NRST, PORRSTF — включение питания, SFTRSTF — программный сброс, IWDGRSTF и WWDGRSTF — сторожевые таймеры, LPWRRSTF — сброс при входе в режим пониженного потребления. Флаги сохраняются до записи 1 в бит RMVF.

Источники

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

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

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

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