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

Регистры RCC STM32F0

Регистры RCC STM32F0: генераторы HSI 8 МГц, HSI14 для АЦП, HSI48 для USB, кварц HSE и LSE, PLL с делителем PREDIV, делители AHB и APB, выход MCO, включение тактирования и сброс периферии, причина сброса.

После сброса STM32F0 работает от HSI 8 МГц. Системная частота до 48 МГц получается от PLL: на её вход идёт HSI / 2 или HSE через делитель PREDIV (у STM32F04x/F07x/F09x — ещё HSI и HSI48 через PREDIV), множитель PLLMUL — от 2 до 16. Шина у STM32F0 одна — APB, поэтому делителей два: HPRE для AHB и PPRE для APB. Группы APB1 и APB2 в именах регистров RCC_APB1ENR и RCC_APB2ENR — наследство, а не две шины (RM0091, раздел 6.2).

Генератор HSI14 нужен только АЦП, HSI48 — USB и CRS: у STM32F04x и F07x USB работает без кварца, а блок CRS подстраивает HSI48 по кадрам SOF. Порты ввода-вывода тактируются через RCC_AHBENR, а не через APB, как у STM32F1.

Перед переключением SYSCLK на PLL с частотой выше 24 МГц задайте один такт ожидания флеш-памяти (FLASH_ACR) и включите буфер предвыборки. Причину последнего сброса показывают флаги RCC_CSR; бит RMVF их сбрасывает.

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

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

РегистрСмещениеНазначениеПосле сброса
RCC_CR0x00Тактовые генераторы HSI, HSE и PLL0x0000 XX83 (X — не определено)
RCC_CFGR0x04Источник SYSCLK, делители шин, PLL и вывод MCO0x0000 0000
RCC_CIR0x08Прерывания готовности генераторов0x0000 0000
RCC_APB2RSTR0x0CСброс блоков на APB (группа 2)0x00000 0000
RCC_APB1RSTR0x10Сброс блоков на APB (группа 1)0x0000 0000
RCC_AHBENR0x14Тактирование блоков на шине AHB0x0000 0014
RCC_APB2ENR0x18Тактирование блоков на APB (группа 2)0x0000 0000
RCC_APB1ENR0x1CТактирование блоков на APB (группа 1)0x0000 0000
RCC_BDCR0x20Домен RTC: LSE и тактирование часов0x0000 0018 (сбрасывается сбросом домена RTC)
RCC_CSR0x24Генератор LSI и флаги причины сброса0xXXX0 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания)
RCC_AHBRSTR0x28Сброс блоков на шине AHB0x0000 0000
RCC_CFGR20x2CПредделитель PREDIV на входе PLL0x0000 0000
RCC_CFGR30x30Источники тактирования USART, I2C1, CEC и USB0x0000 0000
RCC_CR20x34Генераторы HSI14 и HSI480xXX00 XX80 (X — не определено)

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

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

Значение: 0x00000083

0000 0000 0000 0000 0000 0000 1000 0011

RCC->CR = 0x00000083;

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

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

31302928272625242322212019181716
—PLLRDYPLLON—CSSONHSEBYPHSERDYHSEON
1514131211109876543210
HSICALHSITRIM—HSIRDYHSION
  • PLLRDY (бит 25) — PLL захватила частоту (только чтение).
  • PLLON (бит 24) — Включение PLL; сбрасывается при входе в Stop и Standby.
  • CSSON (бит 19) — Система защиты тактирования: при отказе HSE — переход на HSI и прерывание NMI.
  • HSEBYP (бит 18) — Обход генератора HSE: внешний тактовый сигнал вместо кварца.
  • HSERDY (бит 17) — Генератор HSE готов (только чтение).
  • HSEON (бит 16) — Включение генератора HSE.
  • HSICAL (биты 15:8) — Заводская калибровка HSI (только чтение).
  • HSITRIM (биты 7:3) — Подстройка HSI поверх заводской калибровки; шаг около 40 кГц.
  • HSIRDY (бит 1) — Генератор HSI готов (только чтение).
  • HSION (бит 0) — Включение генератора HSI 8 МГц.

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

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

31302928272625242322212019181716
PLLNODIVMCOPREMCO—USBPREPLLMULPLLXTPREPLLSRC
1514131211109876543210
—ADCPRE—PPREHPRESWSSW
  • PLLNODIV (бит 31) — PLL на выход MCO без деления на 2 (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • MCOPRE (биты 30:28) — Делитель сигнала на выходе MCO (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
    MCOPREЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_MCOPRE_DIV1
    001Деление на 2RCC_CFGR_MCOPRE_DIV2
    010Деление на 4RCC_CFGR_MCOPRE_DIV4
    011Деление на 8RCC_CFGR_MCOPRE_DIV8
    100Деление на 16RCC_CFGR_MCOPRE_DIV16
    101Деление на 32RCC_CFGR_MCOPRE_DIV32
    110Деление на 64RCC_CFGR_MCOPRE_DIV64
    111Деление на 128RCC_CFGR_MCOPRE_DIV128
  • MCO (биты 27:24) — Источник сигнала на выходе MCO.
    MCOЗначениеМакрос CMSIS
    0000Нет сигналаRCC_CFGR_MCO_NOCLOCK
    0001HSI14RCC_CFGR_MCO_HSI14
    0010LSIRCC_CFGR_MCO_LSI
    0011LSERCC_CFGR_MCO_LSE
    0100SYSCLKRCC_CFGR_MCO_SYSCLK
    0101HSIRCC_CFGR_MCO_HSI
    0110HSERCC_CFGR_MCO_HSE
    0111PLL / 2 (без деления при PLLNODIV = 1)RCC_CFGR_MCO_PLL
    1000HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)RCC_CFGR_MCO_HSI48
  • USBPRE (бит 22) — Делитель PLL для USB (в RM0091 бит зарезервирован) (только у STM32F042, STM32F048, STM32F072, STM32F078).
  • PLLMUL (биты 21:18) — Множитель PLL: ×2…×16; выход PLL — не больше 48 МГц.
    PLLMULЗначениеМакрос CMSIS
    0000×2RCC_CFGR_PLLMUL2
    0001×3RCC_CFGR_PLLMUL3
    0010×4RCC_CFGR_PLLMUL4
    0011×5RCC_CFGR_PLLMUL5
    0100×6RCC_CFGR_PLLMUL6
    0101×7RCC_CFGR_PLLMUL7
    0110×8RCC_CFGR_PLLMUL8
    0111×9RCC_CFGR_PLLMUL9
    1000×10RCC_CFGR_PLLMUL10
    1001×11RCC_CFGR_PLLMUL11
    1010×12RCC_CFGR_PLLMUL12
    1011×13RCC_CFGR_PLLMUL13
    1100×14RCC_CFGR_PLLMUL14
    1101×15RCC_CFGR_PLLMUL15
    1110×16RCC_CFGR_PLLMUL16
  • PLLXTPRE (бит 17) — Младший бит PREDIV: дублирует бит 0 регистра RCC_CFGR2.
    PLLXTPREЗначениеМакрос CMSIS
    0HSE без деленияRCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV1
    1HSE / 2RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2
  • PLLSRC (бит 16) — Источник тактирования PLL (только у STM32F031, STM32F038, STM32F051, STM32F058).
    PLLSRCЗначениеМакрос CMSIS
    0HSI / 2RCC_CFGR_PLLSRC_HSI_DIV2
    1HSE через делитель PREDIVRCC_CFGR_PLLSRC_HSE_PREDIV
  • PLLSRC (биты 16:15) — Источник тактирования PLL (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
    PLLSRCЗначениеМакрос CMSIS
    00HSI / 2RCC_CFGR_PLLSRC_HSI_DIV2
    01HSI через делитель PREDIVRCC_CFGR_PLLSRC_HSI_PREDIV
    10HSE через делитель PREDIVRCC_CFGR_PLLSRC_HSE_PREDIV
    11HSI48 через делитель PREDIVRCC_CFGR_PLLSRC_HSI48_PREDIV
  • ADCPRE (бит 14) — Устаревший делитель АЦП: такт АЦП выбирается в ADC_CFGR2 (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
    ADCPREЗначениеМакрос CMSIS
    0Деление на 2RCC_CFGR_ADCPRE_DIV2
    1Деление на 4RCC_CFGR_ADCPRE_DIV4
  • PPRE (биты 10:8) — Делитель шины APB: PCLK = HCLK / 1…16.
    PPREЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE_DIV1
    100Деление на 2RCC_CFGR_PPRE_DIV2
    101Деление на 4RCC_CFGR_PPRE_DIV4
    110Деление на 8RCC_CFGR_PPRE_DIV8
    111Деление на 16RCC_CFGR_PPRE_DIV16
  • HPRE (биты 7:4) — Делитель шины AHB: HCLK = SYSCLK / 1…512.
    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
    11HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)RCC_CFGR_SWS_HSI48
  • SW (биты 1:0) — Выбор источника SYSCLK.
    SWЗначениеМакрос CMSIS
    00HSIRCC_CFGR_SW_HSI
    01HSERCC_CFGR_SW_HSE
    10PLLRCC_CFGR_SW_PLL
    11HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098)RCC_CFGR_SW_HSI48

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

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

31302928272625242322212019181716
—CSSCHSI48RDYCHSI14RDYCPLLRDYCHSERDYCHSIRDYCLSERDYCLSIRDYC
1514131211109876543210
—HSI48RDYIEHSI14RDYIEPLLRDYIEHSERDYIEHSIRDYIELSERDYIELSIRDYIECSSFHSI48RDYFHSI14RDYFPLLRDYFHSERDYFHSIRDYFLSERDYFLSIRDYF
  • CSSC (бит 23) — Сброс флага CSSF.
  • HSI48RDYC (бит 22) — Сброс флага готовности HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • HSI14RDYC (бит 21) — Сброс флага готовности HSI14 (14 МГц для АЦП).
  • PLLRDYC (бит 20) — Сброс флага готовности PLL.
  • HSERDYC (бит 19) — Сброс флага готовности HSE.
  • HSIRDYC (бит 18) — Сброс флага готовности HSI.
  • LSERDYC (бит 17) — Сброс флага готовности LSE.
  • LSIRDYC (бит 16) — Сброс флага готовности LSI.
  • HSI48RDYIE (бит 14) — Прерывание по готовности HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • HSI14RDYIE (бит 13) — Прерывание по готовности HSI14 (14 МГц для АЦП).
  • PLLRDYIE (бит 12) — Прерывание по готовности PLL.
  • HSERDYIE (бит 11) — Прерывание по готовности HSE.
  • HSIRDYIE (бит 10) — Прерывание по готовности HSI.
  • LSERDYIE (бит 9) — Прерывание по готовности LSE.
  • LSIRDYIE (бит 8) — Прерывание по готовности LSI.
  • CSSF (бит 7) — Флаг отказа HSE (система защиты тактирования).
  • HSI48RDYF (бит 6) — Флаг прерывания по готовности HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • HSI14RDYF (бит 5) — Флаг прерывания по готовности HSI14 (14 МГц для АЦП).
  • PLLRDYF (бит 4) — Флаг прерывания по готовности PLL.
  • HSERDYF (бит 3) — Флаг прерывания по готовности HSE.
  • HSIRDYF (бит 2) — Флаг прерывания по готовности HSI.
  • LSERDYF (бит 1) — Флаг прерывания по готовности LSE.
  • LSIRDYF (бит 0) — Флаг прерывания по готовности LSI.

RCC_APB2RSTR — сброс блоков на APB (группа 2)

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

31302928272625242322212019181716
—DBGMCURST—TIM17RSTTIM16RSTTIM15RST
1514131211109876543210
—USART1RST—SPI1RSTTIM1RST—ADCRST—USART8RSTUSART7RSTUSART6RST—SYSCFGRST
  • DBGMCURST (бит 22) — Сброс блока отладки DBGMCU.
  • TIM17RST (бит 18) — Сброс таймера TIM17.
  • TIM16RST (бит 17) — Сброс таймера TIM16.
  • TIM15RST (бит 16) — Сброс таймера TIM15 (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • USART1RST (бит 14) — Сброс USART1.
  • SPI1RST (бит 12) — Сброс SPI1.
  • TIM1RST (бит 11) — Сброс таймера TIM1.
  • ADCRST (бит 9) — Сброс АЦП.
  • USART8RST (бит 7) — Сброс USART8 (только у STM32F091, STM32F098).
  • USART7RST (бит 6) — Сброс USART7 (только у STM32F091, STM32F098).
  • USART6RST (бит 5) — Сброс USART6 (только у STM32F091, STM32F098).
  • SYSCFGRST (бит 0) — Сброс SYSCFG.

RCC_APB1RSTR — сброс блоков на APB (группа 1)

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

31302928272625242322212019181716
—CECRSTDACRSTPWRRSTCRSRST—CANRST—USBRSTI2C2RSTI2C1RSTUSART5RSTUSART4RSTUSART3RSTUSART2RST—
1514131211109876543210
—SPI2RST—WWDGRST—TIM14RST—TIM7RSTTIM6RST—TIM3RSTTIM2RST
  • CECRST (бит 30) — Сброс HDMI-CEC (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • DACRST (бит 29) — Сброс ЦАП (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • PWRRST (бит 28) — Сброс интерфейса управления питанием PWR.
  • CRSRST (бит 27) — Сброс блока подстройки HSI48 (CRS) (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • CANRST (бит 25) — Сброс CAN (только у STM32F042, STM32F048, STM32F072, STM32F078, STM32F091, STM32F098).
  • USBRST (бит 23) — Сброс USB (только у STM32F042, STM32F048, STM32F072, STM32F078).
  • I2C2RST (бит 22) — Сброс I2C2 (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • I2C1RST (бит 21) — Сброс I2C1.
  • USART5RST (бит 20) — Сброс USART5 (только у STM32F091, STM32F098).
  • USART4RST (бит 19) — Сброс USART4 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • USART3RST (бит 18) — Сброс USART3 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • USART2RST (бит 17) — Сброс USART2 (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • SPI2RST (бит 14) — Сброс SPI2 (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • WWDGRST (бит 11) — Сброс оконного сторожевого таймера WWDG.
  • TIM14RST (бит 8) — Сброс таймера TIM14.
  • TIM7RST (бит 5) — Сброс таймера TIM7 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • TIM6RST (бит 4) — Сброс таймера TIM6 (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • TIM3RST (бит 1) — Сброс таймера TIM3.
  • TIM2RST (бит 0) — Сброс таймера TIM2.

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

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

31302928272625242322212019181716
—TSCEN—GPIOFENGPIOEENGPIODENGPIOCENGPIOBENGPIOAEN—
1514131211109876543210
—CRCEN—FLITFEN—SRAMENDMA2ENDMAEN
  • TSCEN (бит 24) — Тактирование контроллера сенсорных кнопок TSC (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • GPIOFEN (бит 22) — Тактирование порта F.
  • GPIOEEN (бит 21) — Тактирование порта E (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • GPIODEN (бит 20) — Тактирование порта D (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • GPIOCEN (бит 19) — Тактирование порта C.
  • GPIOBEN (бит 18) — Тактирование порта B.
  • GPIOAEN (бит 17) — Тактирование порта A.
  • CRCEN (бит 6) — Тактирование блока CRC.
  • FLITFEN (бит 4) — Тактирование интерфейса флеш-памяти.
  • SRAMEN (бит 2) — Тактирование SRAM.
  • DMA2EN (бит 1) — Тактирование DMA2 (только у STM32F091, STM32F098).
  • DMAEN (бит 0) — Тактирование DMA1.

RCC_APB2ENR — тактирование блоков на APB (группа 2)

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

31302928272625242322212019181716
—DBGMCUEN—TIM17ENTIM16ENTIM15EN
1514131211109876543210
—USART1EN—SPI1ENTIM1EN—ADCEN—USART8ENUSART7ENUSART6EN—SYSCFGCOMPEN
  • DBGMCUEN (бит 22) — Тактирование блока отладки DBGMCU.
  • TIM17EN (бит 18) — Тактирование таймера TIM17.
  • TIM16EN (бит 17) — Тактирование таймера TIM16.
  • TIM15EN (бит 16) — Тактирование таймера TIM15 (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • USART1EN (бит 14) — Тактирование USART1.
  • SPI1EN (бит 12) — Тактирование SPI1.
  • TIM1EN (бит 11) — Тактирование таймера TIM1.
  • ADCEN (бит 9) — Тактирование АЦП.
  • USART8EN (бит 7) — Тактирование USART8 (только у STM32F091, STM32F098).
  • USART7EN (бит 6) — Тактирование USART7 (только у STM32F091, STM32F098).
  • USART6EN (бит 5) — Тактирование USART6 (только у STM32F091, STM32F098).
  • SYSCFGCOMPEN (бит 0) — Тактирование SYSCFG и компараторов.

RCC_APB1ENR — тактирование блоков на APB (группа 1)

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

31302928272625242322212019181716
—CECENDACENPWRENCRSEN—CANEN—USBENI2C2ENI2C1ENUSART5ENUSART4ENUSART3ENUSART2EN—
1514131211109876543210
—SPI2EN—WWDGEN—TIM14EN—TIM7ENTIM6EN—TIM3ENTIM2EN
  • CECEN (бит 30) — Тактирование HDMI-CEC (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • DACEN (бит 29) — Тактирование ЦАП (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • PWREN (бит 28) — Тактирование интерфейса управления питанием PWR.
  • CRSEN (бит 27) — Тактирование блока подстройки HSI48 (CRS) (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • CANEN (бит 25) — Тактирование CAN (только у STM32F042, STM32F048, STM32F072, STM32F078, STM32F091, STM32F098).
  • USBEN (бит 23) — Тактирование USB (только у STM32F042, STM32F048, STM32F072, STM32F078).
  • I2C2EN (бит 22) — Тактирование I2C2 (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • I2C1EN (бит 21) — Тактирование I2C1.
  • USART5EN (бит 20) — Тактирование USART5 (только у STM32F091, STM32F098).
  • USART4EN (бит 19) — Тактирование USART4 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • USART3EN (бит 18) — Тактирование USART3 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • USART2EN (бит 17) — Тактирование USART2 (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • SPI2EN (бит 14) — Тактирование SPI2 (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • WWDGEN (бит 11) — Тактирование оконного сторожевого таймера WWDG.
  • TIM14EN (бит 8) — Тактирование таймера TIM14.
  • TIM7EN (бит 5) — Тактирование таймера TIM7 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • TIM6EN (бит 4) — Тактирование таймера TIM6 (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • TIM3EN (бит 1) — Тактирование таймера TIM3.
  • TIM2EN (бит 0) — Тактирование таймера TIM2.

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

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

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

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

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

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

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

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

31302928272625242322212019181716
—TSCRST—GPIOFRSTGPIOERSTGPIODRSTGPIOCRSTGPIOBRSTGPIOARST—
1514131211109876543210
—
  • TSCRST (бит 24) — Сброс контроллера сенсорных кнопок TSC (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • GPIOFRST (бит 22) — Сброс порта F.
  • GPIOERST (бит 21) — Сброс порта E (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • GPIODRST (бит 20) — Сброс порта D (только у STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • GPIOCRST (бит 19) — Сброс порта C.
  • GPIOBRST (бит 18) — Сброс порта B.
  • GPIOARST (бит 17) — Сброс порта A.

RCC_CFGR2 — предделитель PREDIV на входе PLL

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

31302928272625242322212019181716
—
1514131211109876543210
—PREDIV
  • PREDIV (биты 3:0) — Делитель PREDIV перед PLL: 1…16.
    PREDIVЗначениеМакрос CMSIS
    0000Без деленияRCC_CFGR2_PREDIV_DIV1
    0001Деление на 2RCC_CFGR2_PREDIV_DIV2
    0010Деление на 3RCC_CFGR2_PREDIV_DIV3
    0011Деление на 4RCC_CFGR2_PREDIV_DIV4
    0100Деление на 5RCC_CFGR2_PREDIV_DIV5
    0101Деление на 6RCC_CFGR2_PREDIV_DIV6
    0110Деление на 7RCC_CFGR2_PREDIV_DIV7
    0111Деление на 8RCC_CFGR2_PREDIV_DIV8
    1000Деление на 9RCC_CFGR2_PREDIV_DIV9
    1001Деление на 10RCC_CFGR2_PREDIV_DIV10
    1010Деление на 11RCC_CFGR2_PREDIV_DIV11
    1011Деление на 12RCC_CFGR2_PREDIV_DIV12
    1100Деление на 13RCC_CFGR2_PREDIV_DIV13
    1101Деление на 14RCC_CFGR2_PREDIV_DIV14
    1110Деление на 15RCC_CFGR2_PREDIV_DIV15
    1111Деление на 16RCC_CFGR2_PREDIV_DIV16

RCC_CFGR3 — источники тактирования USART, I2C1, CEC и USB

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

31302928272625242322212019181716
—USART3SWUSART2SW
1514131211109876543210
—USBSWCECSW—I2C1SW—USART1SW
  • USART3SW (биты 19:18) — Источник тактирования USART3 (только у STM32F091, STM32F098).
    USART3SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_USART3SW_PCLK
    01SYSCLKRCC_CFGR3_USART3SW_SYSCLK
    10LSERCC_CFGR3_USART3SW_LSE
    11HSIRCC_CFGR3_USART3SW_HSI
  • USART2SW (биты 17:16) — Источник тактирования USART2 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
    USART2SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_USART2SW_PCLK
    01SYSCLKRCC_CFGR3_USART2SW_SYSCLK
    10LSERCC_CFGR3_USART2SW_LSE
    11HSIRCC_CFGR3_USART2SW_HSI
  • USBSW (бит 7) — Источник тактирования USB (только у STM32F042, STM32F048, STM32F072, STM32F078).
    USBSWЗначениеМакрос CMSIS
    0HSI48RCC_CFGR3_USBSW_HSI48
    1PLLRCC_CFGR3_USBSW_PLLCLK
  • CECSW (бит 6) — Источник тактирования HDMI-CEC (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
    CECSWЗначениеМакрос CMSIS
    0HSI / 244 (32,8 кГц)RCC_CFGR3_CECSW_HSI_DIV244
    1LSERCC_CFGR3_CECSW_LSE
  • I2C1SW (бит 4) — Источник тактирования I2C1.
    I2C1SWЗначениеМакрос CMSIS
    0HSIRCC_CFGR3_I2C1SW_HSI
    1SYSCLKRCC_CFGR3_I2C1SW_SYSCLK
  • USART1SW (биты 1:0) — Источник тактирования USART1.
    USART1SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_USART1SW_PCLK
    01SYSCLKRCC_CFGR3_USART1SW_SYSCLK
    10LSERCC_CFGR3_USART1SW_LSE
    11HSIRCC_CFGR3_USART1SW_HSI

RCC_CR2 — генераторы HSI14 и HSI48

Смещение 0x34, адрес 0x4002 1034, 32 бит, после сброса 0xXX00 XX80 (X — не определено). В коде: RCC->CR2.

31302928272625242322212019181716
HSI48CAL—HSI48RDYHSI48ON
1514131211109876543210
HSI14CALHSI14TRIMHSI14DISHSI14RDYHSI14ON
  • HSI48CAL (биты 31:24) — Заводская калибровка HSI48 (только чтение) (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • HSI48RDY (бит 17) — Генератор HSI48 готов (только чтение) (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • HSI48ON (бит 16) — Включение генератора HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
  • HSI14CAL (биты 15:8) — Заводская калибровка HSI14 (только чтение).
  • HSI14TRIM (биты 7:3) — Подстройка HSI14 поверх заводской калибровки.
  • HSI14DIS (бит 2) — Запрет АЦП включать HSI14.
  • HSI14RDY (бит 1) — Генератор HSI14 готов (только чтение).
  • HSI14ON (бит 0) — Включение генератора HSI14 (такт АЦП).

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

Как получить 48 МГц на STM32F030 от кварца 8 МГц?

Включите HSE (RCC_CR.HSEON) и дождитесь HSERDY. В RCC_CFGR выберите PLLSRC = HSE/PREDIV, PREDIV = 1, PLLMUL = ×6. Установите FLASH_ACR.LATENCY = 1 и PRFTBE, включите PLL, дождитесь PLLRDY и переключите SW на PLL — SWS покажет PLL.

Как работать на 48 МГц без кварца?

От HSI: PLLSRC = HSI/2, PLLMUL = ×12 даёт 48 МГц на всех STM32F0. У STM32F04x, F07x и F09x есть и HSI48: его можно сразу выбрать источником SYSCLK (SW = 11).

Источники

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

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