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

Регистры RCC STM32G0

Регистры RCC STM32G0: генераторы HSI16 с делителем HSIDIV, кварцы HSE и LSE, LSI, HSI48 у STM32G0B1/C1, PLL с тремя выходами, делители AHB и APB, выходы MCO и LSCO, включение тактирования периферии, выбор источников такта и причина сброса.

После сброса STM32G0 работает от HSISYS — генератора HSI16 16 МГц через делитель HSIDIV (после сброса 1). Системная частота до 64 МГц берётся с выхода R системы PLL: частота ГУН = fвх / M × N (от 64 до 344 МГц), выход R = ГУН / R. Выход P идёт на АЦП и I2S, выход Q — на TIM1, TIM15, RNG и USB (RM0444, раздел 5.2).

Регистры тактирования разложены по шинам иначе, чем у STM32F0: порты — в RCC_IOPENR, блоки AHB — в RCC_AHBENR, все блоки APB — в двух регистрах RCC_APBENR1 и RCC_APBENR2 (шина APB одна). Для каждого блока есть бит сброса (…RSTR) и бит тактирования в режиме Sleep (…SMENR). Источники такта USART, LPUART, I2C, I2S, LPTIM, АЦП и других — в RCC_CCIPR и RCC_CCIPR2.

Перед переходом на 64 МГц нужно два такта ожидания флеш-памяти (FLASH_ACR) и диапазон напряжения 1 (PWR_CR1.VOS = 01 — значение после сброса).

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

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

РегистрСмещениеНазначениеПосле сброса
RCC_CR0x00Тактовые генераторы HSI16, HSE, HSI48 и PLL0x0000 0500 (при включении питания; другие сбросы дают то же, кроме бита HSEBYP — он сохраняется)
RCC_ICSCR0x04Калибровка и подстройка HSI160x0000 40XX (X — заводская калибровка)
RCC_CFGR0x08Источник SYSCLK, делители шин и выводы MCO0x0000 0000
RCC_PLLCFGR0x0CНастройка PLL: источник, M, N, P, Q, R0x0000 1000
RCC_CRRCR0x14Калибровка HSI480b0000 0000 0000 0000 0000 000X XXXX XXXX (X — заводская калибровка HSI48CAL)
RCC_CIER0x18Разрешение прерываний готовности генераторов0x0000 0000
RCC_CIFR0x1CФлаги прерываний генераторов0x0000 0000
RCC_CICR0x20Сброс флагов прерываний генераторов0x0000 0000
RCC_IOPRSTR0x24Сброс портов ввода-вывода0x0000 0000
RCC_AHBRSTR0x28Сброс блоков на шине AHB0x0000 0000
RCC_APBRSTR10x2CСброс блоков на шине APB, регистр 10x0000 0000
RCC_APBRSTR20x30Сброс блоков на шине APB, регистр 20x0000 0000
RCC_IOPENR0x34Тактирование портов ввода-вывода0x0000 0000
RCC_AHBENR0x38Тактирование блоков на шине AHB0x0000 0100
RCC_APBENR10x3CТактирование блоков на шине APB, регистр 10x0000 0000
RCC_APBENR20x40Тактирование блоков на шине APB, регистр 20x0000 0000
RCC_IOPSMENR0x44Тактирование портов в режиме Sleep0x0000 003F
RCC_AHBSMENR0x48Тактирование блоков AHB в режиме Sleep0x0005 1303
RCC_APBSMENR10x4CТактирование блоков APB в режиме Sleep, регистр 10xFFFF FFB7
RCC_APBSMENR20x50Тактирование блоков APB в режиме Sleep, регистр 20x0017 D801
RCC_CCIPR0x54Источники тактирования периферии0x0000 0000
RCC_CCIPR20x58Источники тактирования периферии, регистр 20x0000 0000
RCC_BDCR0x5CДомен RTC: LSE, тактирование часов и вывод LSCO0x0000 0000
RCC_CSR0x60Генератор LSI и флаги причины сброса0xXX00 0000

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

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

Значение: 0x00000500

0000 0000 0000 0000 0000 0101 0000 0000

RCC->CR = 0x00000500;

RCC_CR — тактовые генераторы HSI16, HSE, HSI48 и PLL

Смещение 0x00, адрес 0x4002 1000, 32 бит, после сброса 0x0000 0500 (при включении питания; другие сбросы дают то же, кроме бита HSEBYP — он сохраняется). В коде: RCC->CR.

31302928272625242322212019181716
—PLLRDYPLLONHSI48RDYHSI48ON—CSSONHSEBYPHSERDYHSEON
1514131211109876543210
—HSIDIVHSIRDYHSIKERONHSION—
  • PLLRDY (бит 25) — PLL захватила частоту (только чтение).
  • PLLON (бит 24) — Включение PLL; сбрасывается при входе в Stop и Standby.
  • HSI48RDY (бит 23) — Генератор HSI48 готов (только чтение) (только у STM32G0B1, STM32G0C1).
  • HSI48ON (бит 22) — Включение генератора HSI48 (только у STM32G0B1, STM32G0C1).
  • CSSON (бит 19) — Система защиты тактирования: при отказе HSE — переход на HSI и прерывание NMI.
  • HSEBYP (бит 18) — Обход генератора HSE: внешний тактовый сигнал вместо кварца.
  • HSERDY (бит 17) — Генератор HSE готов (только чтение).
  • HSEON (бит 16) — Включение генератора HSE.
  • HSIDIV (биты 13:11) — Делитель HSI16 для сигнала HSISYS: 1…128.
  • HSIRDY (бит 10) — Генератор HSI16 готов (только чтение).
  • HSIKERON (бит 9) — HSI16 работает в режиме Stop для периферии, которая от него тактируется.
  • HSION (бит 8) — Включение генератора HSI16.

RCC_ICSCR — калибровка и подстройка HSI16

Смещение 0x04, адрес 0x4002 1004, 32 бит, после сброса 0x0000 40XX (X — заводская калибровка). В коде: RCC->ICSCR.

31302928272625242322212019181716
—
1514131211109876543210
—HSITRIMHSICAL
  • HSITRIM (биты 14:8) — Подстройка HSI16 поверх заводской калибровки; шаг около 0,3 % частоты.
  • HSICAL (биты 7:0) — Заводская калибровка HSI16 (только чтение).

RCC_CFGR — источник SYSCLK, делители шин и выводы MCO

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

31302928272625242322212019181716
MCOPREMCOSELMCO2PREMCO2SEL
1514131211109876543210
—PPREHPRE—SWSSW
  • MCOPRE (биты 31:28) — Делитель сигнала на выходе MCO (только у STM32G0B1, STM32G0C1).
  • MCOPRE (биты 30:28) — Делитель сигнала на выходе MCO (только у STM32G031, STM32G041, STM32G051, STM32G061, STM32G071, STM32G081).
  • MCOSEL (биты 27:24) — Источник сигнала на выходе MCO (только у STM32G0B1, STM32G0C1).
  • MCOSEL (биты 26:24) — Источник сигнала на выходе MCO (только у STM32G031, STM32G041, STM32G051, STM32G061, STM32G071, STM32G081).
  • MCO2PRE (биты 23:20) — Делитель сигнала на выходе MCO2 (только у STM32G0B1, STM32G0C1).
  • MCO2SEL (биты 19:16) — Источник сигнала на выходе MCO2 (только у STM32G0B1, STM32G0C1).
  • PPRE (биты 14:12) — Делитель шины APB: PCLK = HCLK / 1…16.
  • HPRE (биты 11:8) — Делитель шины AHB: HCLK = SYSCLK / 1…512.
  • SWS (биты 5:3) — Текущий источник SYSCLK (только чтение).
    SWSЗначениеМакрос CMSIS
    000HSISYS (HSI16 после делителя HSIDIV)RCC_CFGR_SWS_HSISYS
    001HSERCC_CFGR_SWS_HSE
    010PLLRCLK (выход R системы PLL)RCC_CFGR_SWS_PLLRCLK
    011LSIRCC_CFGR_SWS_LSI
  • SW (биты 2:0) — Выбор источника SYSCLK.
    SWЗначениеМакрос CMSIS
    000HSISYS (HSI16 после делителя HSIDIV)RCC_CFGR_SW_HSISYS
    001HSERCC_CFGR_SW_HSE
    010PLLRCLK (выход R системы PLL)RCC_CFGR_SW_PLLRCLK
    011LSIRCC_CFGR_SW_LSI
    100LSERCC_CFGR_SW_LSE

RCC_PLLCFGR — настройка PLL: источник, M, N, P, Q, R

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

31302928272625242322212019181716
PLLRPLLRENPLLQPLLQEN—PLLPPLLPEN
1514131211109876543210
—PLLN—PLLM—PLLSRC
  • PLLR (биты 31:29) — Делитель выхода R (PLLRCLK — системная частота): 2…8.
  • PLLREN (бит 28) — Включение выхода PLLRCLK.
  • PLLQ (биты 27:25) — Делитель выхода Q (PLLQCLK): 2…8.
  • PLLQEN (бит 24) — Включение выхода PLLQCLK.
  • PLLP (биты 21:17) — Делитель выхода P (PLLPCLK — АЦП, I2S): 2…32.
  • PLLPEN (бит 16) — Включение выхода PLLPCLK.
  • PLLN (биты 14:8) — Множитель N частоты ГУН: 8…86.
  • PLLM (биты 6:4) — Делитель M на входе PLL: 1…8.
  • PLLSRC (биты 1:0) — Источник PLL.
    PLLSRCЗначениеМакрос CMSIS
    00Нет источника, PLL выключенаRCC_PLLCFGR_PLLSRC_NONE
    10HSI16RCC_PLLCFGR_PLLSRC_HSI
    11HSERCC_PLLCFGR_PLLSRC_HSE

RCC_CRRCR — калибровка HSI48

Смещение 0x14, адрес 0x4002 1014, 32 бит, после сброса 0b0000 0000 0000 0000 0000 000X XXXX XXXX (X — заводская калибровка HSI48CAL); регистр есть только у STM32G0B1, STM32G0C1. В коде: RCC->CRRCR.

31302928272625242322212019181716
—
1514131211109876543210
—HSI48CAL
  • HSI48CAL (биты 8:0) — Заводская калибровка HSI48 (только чтение).

RCC_CIER — разрешение прерываний готовности генераторов

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

31302928272625242322212019181716
—
1514131211109876543210
—PLLRDYIEHSERDYIEHSIRDYIEHSI48RDYIELSERDYIELSIRDYIE
  • PLLRDYIE (бит 5) — Прерывание по готовности PLL.
  • HSERDYIE (бит 4) — Прерывание по готовности HSE.
  • HSIRDYIE (бит 3) — Прерывание по готовности HSI.
  • HSI48RDYIE (бит 2) — Прерывание по готовности HSI48 (только у STM32G0B1, STM32G0C1).
  • LSERDYIE (бит 1) — Прерывание по готовности LSE.
  • LSIRDYIE (бит 0) — Прерывание по готовности LSI.

RCC_CIFR — флаги прерываний генераторов

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

31302928272625242322212019181716
—
1514131211109876543210
—LSECSSFCSSF—PLLRDYFHSERDYFHSIRDYFHSI48RDYFLSERDYFLSIRDYF
  • LSECSSF (бит 9) — Флаг отказа LSE.
  • CSSF (бит 8) — Флаг отказа HSE (система защиты тактирования).
  • PLLRDYF (бит 5) — Флаг прерывания по готовности PLL.
  • HSERDYF (бит 4) — Флаг прерывания по готовности HSE.
  • HSIRDYF (бит 3) — Флаг прерывания по готовности HSI.
  • HSI48RDYF (бит 2) — Флаг прерывания по готовности HSI48 (только у STM32G0B1, STM32G0C1).
  • LSERDYF (бит 1) — Флаг прерывания по готовности LSE.
  • LSIRDYF (бит 0) — Флаг прерывания по готовности LSI.

RCC_CICR — сброс флагов прерываний генераторов

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

31302928272625242322212019181716
—
1514131211109876543210
—LSECSSCCSSC—PLLRDYCHSERDYCHSIRDYCHSI48RDYCLSERDYCLSIRDYC
  • LSECSSC (бит 9) — Сброс флага LSECSSF.
  • CSSC (бит 8) — Сброс флага CSSF.
  • PLLRDYC (бит 5) — Сброс флага готовности PLL.
  • HSERDYC (бит 4) — Сброс флага готовности HSE.
  • HSIRDYC (бит 3) — Сброс флага готовности HSI.
  • HSI48RDYC (бит 2) — Сброс флага готовности HSI48 (только у STM32G0B1, STM32G0C1).
  • LSERDYC (бит 1) — Сброс флага готовности LSE.
  • LSIRDYC (бит 0) — Сброс флага готовности LSI.

RCC_IOPRSTR — сброс портов ввода-вывода

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

31302928272625242322212019181716
—
1514131211109876543210
—GPIOFRSTGPIOERSTGPIODRSTGPIOCRSTGPIOBRSTGPIOARST
  • GPIOFRST (бит 5) — Сброс порта F.
  • GPIOERST (бит 4) — Сброс порта E (только у STM32G0B1, STM32G0C1).
  • GPIODRST (бит 3) — Сброс порта D.
  • GPIOCRST (бит 2) — Сброс порта C.
  • GPIOBRST (бит 1) — Сброс порта B.
  • GPIOARST (бит 0) — Сброс порта A.

RCC_AHBRSTR — сброс блоков на шине AHB

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

31302928272625242322212019181716
—RNGRST—AESRST
1514131211109876543210
—CRCRST—FLASHRST—DMA2RSTDMA1RST
  • RNGRST (бит 18) — Сброс генератора случайных чисел RNG (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • AESRST (бит 16) — Сброс блока шифрования AES (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • CRCRST (бит 12) — Сброс блока CRC.
  • FLASHRST (бит 8) — Сброс интерфейса флеш-памяти.
  • DMA2RST (бит 1) — Сброс DMA2 (только у STM32G0B1, STM32G0C1).
  • DMA1RST (бит 0) — Сброс DMA1.

RCC_APBRSTR1 — сброс блоков на шине APB, регистр 1

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

31302928272625242322212019181716
LPTIM1RSTLPTIM2RSTDAC1RSTPWRRSTDBGRSTUCPD2RSTUCPD1RSTCECRSTI2C3RSTI2C2RSTI2C1RSTLPUART1RSTUSART4RSTUSART3RSTUSART2RSTCRSRST
1514131211109876543210
SPI3RSTSPI2RSTUSBRSTFDCANRST—USART6RSTUSART5RSTLPUART2RST—TIM7RSTTIM6RST—TIM4RSTTIM3RSTTIM2RST
  • LPTIM1RST (бит 31) — Сброс таймера LPTIM1.
  • LPTIM2RST (бит 30) — Сброс таймера LPTIM2.
  • DAC1RST (бит 29) — Сброс ЦАП (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PWRRST (бит 28) — Сброс интерфейса управления питанием PWR.
  • DBGRST (бит 27) — Сброс блока отладки DBG.
  • UCPD2RST (бит 26) — Сброс контроллера USB Type-C UCPD2 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • UCPD1RST (бит 25) — Сброс контроллера USB Type-C UCPD1 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • CECRST (бит 24) — Сброс HDMI-CEC (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • I2C3RST (бит 23) — Сброс I2C3 (только у STM32G0B1, STM32G0C1).
  • I2C2RST (бит 22) — Сброс I2C2.
  • I2C1RST (бит 21) — Сброс I2C1.
  • LPUART1RST (бит 20) — Сброс LPUART1.
  • USART4RST (бит 19) — Сброс USART4 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART3RST (бит 18) — Сброс USART3 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART2RST (бит 17) — Сброс USART2.
  • CRSRST (бит 16) — Сброс блока подстройки HSI48 (CRS) (только у STM32G0B1, STM32G0C1).
  • SPI3RST (бит 15) — Сброс SPI3 (только у STM32G0B1, STM32G0C1).
  • SPI2RST (бит 14) — Сброс SPI2.
  • USBRST (бит 13) — Сброс USB (только у STM32G0B1, STM32G0C1).
  • FDCANRST (бит 12) — Сброс FDCAN (только у STM32G0B1, STM32G0C1).
  • USART6RST (бит 9) — Сброс USART6 (только у STM32G0B1, STM32G0C1).
  • USART5RST (бит 8) — Сброс USART5 (только у STM32G0B1, STM32G0C1).
  • LPUART2RST (бит 7) — Сброс LPUART2 (только у STM32G0B1, STM32G0C1).
  • TIM7RST (бит 5) — Сброс таймера TIM7 (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM6RST (бит 4) — Сброс таймера TIM6 (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM4RST (бит 2) — Сброс таймера TIM4 (только у STM32G0B1, STM32G0C1).
  • TIM3RST (бит 1) — Сброс таймера TIM3.
  • TIM2RST (бит 0) — Сброс таймера TIM2.

RCC_APBRSTR2 — сброс блоков на шине APB, регистр 2

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

31302928272625242322212019181716
—ADCRST—TIM17RSTTIM16RSTTIM15RST
1514131211109876543210
TIM14RSTUSART1RST—SPI1RSTTIM1RST—SYSCFGRST
  • ADCRST (бит 20) — Сброс АЦП.
  • TIM17RST (бит 18) — Сброс таймера TIM17.
  • TIM16RST (бит 17) — Сброс таймера TIM16.
  • TIM15RST (бит 16) — Сброс таймера TIM15 (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM14RST (бит 15) — Сброс таймера TIM14.
  • USART1RST (бит 14) — Сброс USART1.
  • SPI1RST (бит 12) — Сброс SPI1.
  • TIM1RST (бит 11) — Сброс таймера TIM1.
  • SYSCFGRST (бит 0) — Сброс SYSCFG.

RCC_IOPENR — тактирование портов ввода-вывода

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

31302928272625242322212019181716
—
1514131211109876543210
—GPIOFENGPIOEENGPIODENGPIOCENGPIOBENGPIOAEN
  • GPIOFEN (бит 5) — Тактирование порта F.
  • GPIOEEN (бит 4) — Тактирование порта E (только у STM32G0B1, STM32G0C1).
  • GPIODEN (бит 3) — Тактирование порта D.
  • GPIOCEN (бит 2) — Тактирование порта C.
  • GPIOBEN (бит 1) — Тактирование порта B.
  • GPIOAEN (бит 0) — Тактирование порта A.

RCC_AHBENR — тактирование блоков на шине AHB

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

31302928272625242322212019181716
—RNGEN—AESEN
1514131211109876543210
—CRCEN—FLASHEN—DMA2ENDMA1EN
  • RNGEN (бит 18) — Тактирование генератора случайных чисел RNG (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • AESEN (бит 16) — Тактирование блока шифрования AES (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • CRCEN (бит 12) — Тактирование блока CRC.
  • FLASHEN (бит 8) — Тактирование интерфейса флеш-памяти.
  • DMA2EN (бит 1) — Тактирование DMA2 (только у STM32G0B1, STM32G0C1).
  • DMA1EN (бит 0) — Тактирование DMA1.

RCC_APBENR1 — тактирование блоков на шине APB, регистр 1

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

31302928272625242322212019181716
LPTIM1ENLPTIM2ENDAC1ENPWRENDBGENUCPD2ENUCPD1ENCECENI2C3ENI2C2ENI2C1ENLPUART1ENUSART4ENUSART3ENUSART2ENCRSEN
1514131211109876543210
SPI3ENSPI2ENUSBENFDCANENWWDGENRTCAPBENUSART6ENUSART5ENLPUART2EN—TIM7ENTIM6EN—TIM4ENTIM3ENTIM2EN
  • LPTIM1EN (бит 31) — Тактирование таймера LPTIM1.
  • LPTIM2EN (бит 30) — Тактирование таймера LPTIM2.
  • DAC1EN (бит 29) — Тактирование ЦАП (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PWREN (бит 28) — Тактирование интерфейса управления питанием PWR.
  • DBGEN (бит 27) — Тактирование блока отладки DBG.
  • UCPD2EN (бит 26) — Тактирование контроллера USB Type-C UCPD2 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • UCPD1EN (бит 25) — Тактирование контроллера USB Type-C UCPD1 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • CECEN (бит 24) — Тактирование HDMI-CEC (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • I2C3EN (бит 23) — Тактирование I2C3 (только у STM32G0B1, STM32G0C1).
  • I2C2EN (бит 22) — Тактирование I2C2.
  • I2C1EN (бит 21) — Тактирование I2C1.
  • LPUART1EN (бит 20) — Тактирование LPUART1.
  • USART4EN (бит 19) — Тактирование USART4 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART3EN (бит 18) — Тактирование USART3 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART2EN (бит 17) — Тактирование USART2.
  • CRSEN (бит 16) — Тактирование блока подстройки HSI48 (CRS) (только у STM32G0B1, STM32G0C1).
  • SPI3EN (бит 15) — Тактирование SPI3 (только у STM32G0B1, STM32G0C1).
  • SPI2EN (бит 14) — Тактирование SPI2.
  • USBEN (бит 13) — Тактирование USB (только у STM32G0B1, STM32G0C1).
  • FDCANEN (бит 12) — Тактирование FDCAN (только у STM32G0B1, STM32G0C1).
  • WWDGEN (бит 11) — Тактирование оконного сторожевого таймера WWDG.
  • RTCAPBEN (бит 10) — Тактирование интерфейса RTC на шине APB.
  • USART6EN (бит 9) — Тактирование USART6 (только у STM32G0B1, STM32G0C1).
  • USART5EN (бит 8) — Тактирование USART5 (только у STM32G0B1, STM32G0C1).
  • LPUART2EN (бит 7) — Тактирование LPUART2 (только у STM32G0B1, STM32G0C1).
  • TIM7EN (бит 5) — Тактирование таймера TIM7 (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM6EN (бит 4) — Тактирование таймера TIM6 (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM4EN (бит 2) — Тактирование таймера TIM4 (только у STM32G0B1, STM32G0C1).
  • TIM3EN (бит 1) — Тактирование таймера TIM3.
  • TIM2EN (бит 0) — Тактирование таймера TIM2.

RCC_APBENR2 — тактирование блоков на шине APB, регистр 2

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

31302928272625242322212019181716
—ADCEN—TIM17ENTIM16ENTIM15EN
1514131211109876543210
TIM14ENUSART1EN—SPI1ENTIM1EN—SYSCFGEN
  • ADCEN (бит 20) — Тактирование АЦП.
  • TIM17EN (бит 18) — Тактирование таймера TIM17.
  • TIM16EN (бит 17) — Тактирование таймера TIM16.
  • TIM15EN (бит 16) — Тактирование таймера TIM15 (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM14EN (бит 15) — Тактирование таймера TIM14.
  • USART1EN (бит 14) — Тактирование USART1.
  • SPI1EN (бит 12) — Тактирование SPI1.
  • TIM1EN (бит 11) — Тактирование таймера TIM1.
  • SYSCFGEN (бит 0) — Тактирование SYSCFG.

RCC_IOPSMENR — тактирование портов в режиме Sleep

Смещение 0x44, адрес 0x4002 1044, 32 бит, после сброса 0x0000 003F. В коде: RCC->IOPSMENR.

31302928272625242322212019181716
—
1514131211109876543210
—GPIOFSMENGPIOESMENGPIODSMENGPIOCSMENGPIOBSMENGPIOASMEN
  • GPIOFSMEN (бит 5) — Тактирование порта F в режиме Sleep.
  • GPIOESMEN (бит 4) — Тактирование порта E в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • GPIODSMEN (бит 3) — Тактирование порта D в режиме Sleep.
  • GPIOCSMEN (бит 2) — Тактирование порта C в режиме Sleep.
  • GPIOBSMEN (бит 1) — Тактирование порта B в режиме Sleep.
  • GPIOASMEN (бит 0) — Тактирование порта A в режиме Sleep.

RCC_AHBSMENR — тактирование блоков AHB в режиме Sleep

Смещение 0x48, адрес 0x4002 1048, 32 бит, после сброса 0x0005 1303. В коде: RCC->AHBSMENR.

31302928272625242322212019181716
—RNGSMEN—AESSMEN
1514131211109876543210
—CRCSMEN—SRAMSMENFLASHSMEN—DMA2SMENDMA1SMEN
  • RNGSMEN (бит 18) — Тактирование генератора случайных чисел RNG в режиме Sleep (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • AESSMEN (бит 16) — Тактирование блока шифрования AES в режиме Sleep (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • CRCSMEN (бит 12) — Тактирование блока CRC в режиме Sleep.
  • SRAMSMEN (бит 9) — Тактирование SRAM в режиме Sleep.
  • FLASHSMEN (бит 8) — Тактирование интерфейса флеш-памяти в режиме Sleep.
  • DMA2SMEN (бит 1) — Тактирование DMA2 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • DMA1SMEN (бит 0) — Тактирование DMA1 в режиме Sleep.

RCC_APBSMENR1 — тактирование блоков APB в режиме Sleep, регистр 1

Смещение 0x4C, адрес 0x4002 104C, 32 бит, после сброса 0xFFFF FFB7. В коде: RCC->APBSMENR1.

31302928272625242322212019181716
LPTIM1SMENLPTIM2SMENDAC1SMENPWRSMENDBGSMENUCPD2SMENUCPD1SMENCECSMENI2C3SMENI2C2SMENI2C1SMENLPUART1SMENUSART4SMENUSART3SMENUSART2SMENCRSSMEN
1514131211109876543210
SPI3SMENSPI2SMENUSBSMENFDCANSMENWWDGSMENRTCAPBSMENUSART6SMENUSART5SMENLPUART2SMEN—TIM7SMENTIM6SMEN—TIM4SMENTIM3SMENTIM2SMEN
  • LPTIM1SMEN (бит 31) — Тактирование таймера LPTIM1 в режиме Sleep.
  • LPTIM2SMEN (бит 30) — Тактирование таймера LPTIM2 в режиме Sleep.
  • DAC1SMEN (бит 29) — Тактирование ЦАП в режиме Sleep (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • PWRSMEN (бит 28) — Тактирование интерфейса управления питанием PWR в режиме Sleep.
  • DBGSMEN (бит 27) — Тактирование блока отладки DBG в режиме Sleep.
  • UCPD2SMEN (бит 26) — Тактирование контроллера USB Type-C UCPD2 в режиме Sleep (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • UCPD1SMEN (бит 25) — Тактирование контроллера USB Type-C UCPD1 в режиме Sleep (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • CECSMEN (бит 24) — Тактирование HDMI-CEC в режиме Sleep (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • I2C3SMEN (бит 23) — Тактирование I2C3 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • I2C2SMEN (бит 22) — Тактирование I2C2 в режиме Sleep.
  • I2C1SMEN (бит 21) — Тактирование I2C1 в режиме Sleep.
  • LPUART1SMEN (бит 20) — Тактирование LPUART1 в режиме Sleep.
  • USART4SMEN (бит 19) — Тактирование USART4 в режиме Sleep (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART3SMEN (бит 18) — Тактирование USART3 в режиме Sleep (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART2SMEN (бит 17) — Тактирование USART2 в режиме Sleep.
  • CRSSMEN (бит 16) — Тактирование блока подстройки HSI48 (CRS) в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • SPI3SMEN (бит 15) — Тактирование SPI3 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • SPI2SMEN (бит 14) — Тактирование SPI2 в режиме Sleep.
  • USBSMEN (бит 13) — Тактирование USB в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • FDCANSMEN (бит 12) — Тактирование FDCAN в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • WWDGSMEN (бит 11) — Тактирование оконного сторожевого таймера WWDG в режиме Sleep.
  • RTCAPBSMEN (бит 10) — Тактирование интерфейса RTC на шине APB в режиме Sleep.
  • USART6SMEN (бит 9) — Тактирование USART6 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • USART5SMEN (бит 8) — Тактирование USART5 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • LPUART2SMEN (бит 7) — Тактирование LPUART2 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • TIM7SMEN (бит 5) — Тактирование таймера TIM7 в режиме Sleep (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM6SMEN (бит 4) — Тактирование таймера TIM6 в режиме Sleep (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM4SMEN (бит 2) — Тактирование таймера TIM4 в режиме Sleep (только у STM32G0B1, STM32G0C1).
  • TIM3SMEN (бит 1) — Тактирование таймера TIM3 в режиме Sleep.
  • TIM2SMEN (бит 0) — Тактирование таймера TIM2 в режиме Sleep.

RCC_APBSMENR2 — тактирование блоков APB в режиме Sleep, регистр 2

Смещение 0x50, адрес 0x4002 1050, 32 бит, после сброса 0x0017 D801. В коде: RCC->APBSMENR2.

31302928272625242322212019181716
—ADCSMEN—TIM17SMENTIM16SMENTIM15SMEN
1514131211109876543210
TIM14SMENUSART1SMEN—SPI1SMENTIM1SMEN—SYSCFGSMEN
  • ADCSMEN (бит 20) — Тактирование АЦП в режиме Sleep.
  • TIM17SMEN (бит 18) — Тактирование таймера TIM17 в режиме Sleep.
  • TIM16SMEN (бит 17) — Тактирование таймера TIM16 в режиме Sleep.
  • TIM15SMEN (бит 16) — Тактирование таймера TIM15 в режиме Sleep (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM14SMEN (бит 15) — Тактирование таймера TIM14 в режиме Sleep.
  • USART1SMEN (бит 14) — Тактирование USART1 в режиме Sleep.
  • SPI1SMEN (бит 12) — Тактирование SPI1 в режиме Sleep.
  • TIM1SMEN (бит 11) — Тактирование таймера TIM1 в режиме Sleep.
  • SYSCFGSMEN (бит 0) — Тактирование SYSCFG в режиме Sleep.

RCC_CCIPR — источники тактирования периферии

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

31302928272625242322212019181716
ADCSELRNGDIVRNGSEL—TIM15SEL—TIM1SELLPTIM2SELLPTIM1SEL—
1514131211109876543210
I2S1SELI2C1SELLPUART1SELLPUART2SEL—CECSELUSART3SELUSART2SELUSART1SEL
  • ADCSEL (биты 31:30) — Источник тактирования АЦП.
  • RNGDIV (биты 29:28) — Делитель такта генератора RNG: 1, 2, 4 или 8 (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • RNGSEL (биты 27:26) — Источник тактирования генератора RNG (только у STM32G041, STM32G061, STM32G081, STM32G0C1).
  • TIM15SEL (бит 24) — Тактирование TIM15: PCLK или PLLQCLK (только у STM32G051, STM32G061, STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • TIM1SEL (бит 22) — Тактирование TIM1: PCLK или PLLQCLK.
  • LPTIM2SEL (биты 21:20) — Источник тактирования LPTIM2.
  • LPTIM1SEL (биты 19:18) — Источник тактирования LPTIM1.
  • I2S1SEL (биты 15:14) — Источник тактирования I2S1 (только у STM32G031, STM32G041, STM32G051, STM32G061, STM32G071, STM32G081).
  • I2C2SEL (биты 15:14) — Источник тактирования I2C2 (только у STM32G0B1, STM32G0C1).
  • I2C1SEL (биты 13:12) — Источник тактирования I2C1.
  • LPUART1SEL (биты 11:10) — Источник тактирования LPUART1.
  • LPUART2SEL (биты 9:8) — Источник тактирования LPUART2 (только у STM32G0B1, STM32G0C1).
  • CECSEL (бит 6) — Источник тактирования HDMI-CEC (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART3SEL (биты 5:4) — Источник тактирования USART3 (только у STM32G0B1, STM32G0C1).
  • USART2SEL (биты 3:2) — Источник тактирования USART2 (только у STM32G071, STM32G081, STM32G0B1, STM32G0C1).
  • USART1SEL (биты 1:0) — Источник тактирования USART1.

RCC_CCIPR2 — источники тактирования периферии, регистр 2

Смещение 0x58, адрес 0x4002 1058, 32 бит, после сброса 0x0000 0000; регистр есть только у STM32G0B1, STM32G0C1. В коде: RCC->CCIPR2.

31302928272625242322212019181716
—
1514131211109876543210
—USBSEL—FDCANSEL—I2S2SELI2S1SEL
  • USBSEL (биты 13:12) — Источник тактирования USB.
  • FDCANSEL (биты 9:8) — Источник тактирования FDCAN.
  • I2S2SEL (биты 3:2) — Источник тактирования I2S2.
  • I2S1SEL (биты 1:0) — Источник тактирования I2S1.

RCC_BDCR — домен RTC: LSE, тактирование часов и вывод LSCO

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

31302928272625242322212019181716
—LSCOSELLSCOEN—BDRST
1514131211109876543210
RTCEN—RTCSEL—LSECSSDLSECSSONLSEDRVLSEBYPLSERDYLSEON
  • LSCOSEL (бит 25) — Источник сигнала на выходе LSCO: LSI или LSE.
  • LSCOEN (бит 24) — Включение выхода низкочастотного сигнала LSCO.
  • BDRST (бит 16) — Программный сброс домена RTC.
  • RTCEN (бит 15) — Тактирование RTC.
  • RTCSEL (биты 9:8) — Источник тактирования RTC; меняется только сбросом домена RTC.
  • LSECSSD (бит 6) — Обнаружен отказ LSE (только чтение).
  • LSECSSON (бит 5) — Система защиты тактирования LSE.
  • LSEDRV (биты 4:3) — Сила возбуждения кварца LSE.
  • LSEBYP (бит 2) — Обход генератора LSE: внешний сигнал 32,768 кГц.
  • LSERDY (бит 1) — Генератор LSE готов (только чтение).
  • LSEON (бит 0) — Включение генератора LSE.

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

Смещение 0x60, адрес 0x4002 1060, 32 бит, после сброса 0xXX00 0000. В коде: RCC->CSR.

31302928272625242322212019181716
LPWRRSTFWWDGRSTFIWDGRSTFSFTRSTFPWRRSTFPINRSTFOBLRSTF—RMVF—
1514131211109876543210
—LSIRDYLSION
  • LPWRRSTF (бит 31) — Причина сброса: вход в режим пониженного потребления запрещён байтом опций.
  • WWDGRSTF (бит 30) — Причина сброса: оконный сторожевой таймер WWDG.
  • IWDGRSTF (бит 29) — Причина сброса: независимый сторожевой таймер IWDG.
  • SFTRSTF (бит 28) — Причина сброса: программный (SYSRESETREQ).
  • PWRRSTF (бит 27) — Причина сброса: включение или пропадание питания (POR/PDR, BOR).
  • PINRSTF (бит 26) — Причина сброса: вывод NRST.
  • OBLRSTF (бит 25) — Причина сброса: загрузка байтов опций (OBL_LAUNCH).
  • RMVF (бит 23) — Запись 1 сбрасывает все флаги причины сброса.
  • LSIRDY (бит 1) — Генератор LSI готов (только чтение).
  • LSION (бит 0) — Включение генератора LSI (около 32 кГц).

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

Как получить 64 МГц на STM32G0 от HSI16?

FLASH->ACR = (FLASH->ACR & ~FLASH_ACR_LATENCY) | FLASH_ACR_LATENCY_1 (2 такта). PLLCFGR: PLLSRC = HSI, M = 1 (поле 0), N = 8, R = 2 (поле 1), PLLREN = 1. Включите PLLON, дождитесь PLLRDY, затем SW = PLLRCLK и проверьте SWS.

Почему USART2 STM32G0 не работает после включения тактирования?

Проверьте, что бит USART2EN установлен в RCC_APBENR1, а источник такта в RCC_CCIPR (USART2SEL) — тот, что вы ожидаете: от него зависит расчёт BRR. После сброса это PCLK.

Источники

  1. STMicroelectronics. RM0444: Reference manual (Rev 6) — раздел 5.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-g0 v1.4.5: заголовки CMSIS stm32g031xx.h, stm32g041xx.h, stm32g051xx.h, stm32g061xx.h, stm32g071xx.h, stm32g081xx.h, stm32g0b1xx.h, stm32g0c1xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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