Регистры 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 их сбрасывает.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| RCC | 0x4002 1000 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| RCC_CR | 0x00 | Тактовые генераторы HSI, HSE и PLL | 0x0000 XX83 (X — не определено) |
| RCC_CFGR | 0x04 | Источник SYSCLK, делители шин, PLL и вывод MCO | 0x0000 0000 |
| RCC_CIR | 0x08 | Прерывания готовности генераторов | 0x0000 0000 |
| RCC_APB2RSTR | 0x0C | Сброс блоков на APB (группа 2) | 0x00000 0000 |
| RCC_APB1RSTR | 0x10 | Сброс блоков на APB (группа 1) | 0x0000 0000 |
| RCC_AHBENR | 0x14 | Тактирование блоков на шине AHB | 0x0000 0014 |
| RCC_APB2ENR | 0x18 | Тактирование блоков на APB (группа 2) | 0x0000 0000 |
| RCC_APB1ENR | 0x1C | Тактирование блоков на APB (группа 1) | 0x0000 0000 |
| RCC_BDCR | 0x20 | Домен RTC: LSE и тактирование часов | 0x0000 0018 (сбрасывается сбросом домена RTC) |
| RCC_CSR | 0x24 | Генератор LSI и флаги причины сброса | 0xXXX0 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания) |
| RCC_AHBRSTR | 0x28 | Сброс блоков на шине AHB | 0x0000 0000 |
| RCC_CFGR2 | 0x2C | Предделитель PREDIV на входе PLL | 0x0000 0000 |
| RCC_CFGR3 | 0x30 | Источники тактирования USART, I2C1, CEC и USB | 0x0000 0000 |
| RCC_CR2 | 0x34 | Генераторы HSI14 и HSI48 | 0xXX00 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | PLLRDY | PLLON | — | CSSON | HSEBYP | HSERDY | HSEON | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| HSICAL | HSITRIM | — | HSIRDY | HSION | |||||||||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| PLLNODIV | MCOPRE | MCO | — | USBPRE | PLLMUL | PLLXTPRE | PLLSRC | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | ADCPRE | — | PPRE | HPRE | SWS | SW | |||||||||
- 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 Деление на 2 RCC_CFGR_MCOPRE_DIV2 010 Деление на 4 RCC_CFGR_MCOPRE_DIV4 011 Деление на 8 RCC_CFGR_MCOPRE_DIV8 100 Деление на 16 RCC_CFGR_MCOPRE_DIV16 101 Деление на 32 RCC_CFGR_MCOPRE_DIV32 110 Деление на 64 RCC_CFGR_MCOPRE_DIV64 111 Деление на 128 RCC_CFGR_MCOPRE_DIV128 - MCO (биты 27:24) — Источник сигнала на выходе MCO.
MCO Значение Макрос CMSIS 0000 Нет сигнала RCC_CFGR_MCO_NOCLOCK 0001 HSI14 RCC_CFGR_MCO_HSI14 0010 LSI RCC_CFGR_MCO_LSI 0011 LSE RCC_CFGR_MCO_LSE 0100 SYSCLK RCC_CFGR_MCO_SYSCLK 0101 HSI RCC_CFGR_MCO_HSI 0110 HSE RCC_CFGR_MCO_HSE 0111 PLL / 2 (без деления при PLLNODIV = 1) RCC_CFGR_MCO_PLL 1000 HSI48 (только у 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 ×2 RCC_CFGR_PLLMUL2 0001 ×3 RCC_CFGR_PLLMUL3 0010 ×4 RCC_CFGR_PLLMUL4 0011 ×5 RCC_CFGR_PLLMUL5 0100 ×6 RCC_CFGR_PLLMUL6 0101 ×7 RCC_CFGR_PLLMUL7 0110 ×8 RCC_CFGR_PLLMUL8 0111 ×9 RCC_CFGR_PLLMUL9 1000 ×10 RCC_CFGR_PLLMUL10 1001 ×11 RCC_CFGR_PLLMUL11 1010 ×12 RCC_CFGR_PLLMUL12 1011 ×13 RCC_CFGR_PLLMUL13 1100 ×14 RCC_CFGR_PLLMUL14 1101 ×15 RCC_CFGR_PLLMUL15 1110 ×16 RCC_CFGR_PLLMUL16 - PLLXTPRE (бит 17) — Младший бит PREDIV: дублирует бит 0 регистра RCC_CFGR2.
PLLXTPRE Значение Макрос CMSIS 0 HSE без деления RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV1 1 HSE / 2 RCC_CFGR_PLLXTPRE_HSE_PREDIV_DIV2 - PLLSRC (бит 16) — Источник тактирования PLL (только у STM32F031, STM32F038, STM32F051, STM32F058).
PLLSRC Значение Макрос CMSIS 0 HSI / 2 RCC_CFGR_PLLSRC_HSI_DIV2 1 HSE через делитель PREDIV RCC_CFGR_PLLSRC_HSE_PREDIV - PLLSRC (биты 16:15) — Источник тактирования PLL (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
PLLSRC Значение Макрос CMSIS 00 HSI / 2 RCC_CFGR_PLLSRC_HSI_DIV2 01 HSI через делитель PREDIV RCC_CFGR_PLLSRC_HSI_PREDIV 10 HSE через делитель PREDIV RCC_CFGR_PLLSRC_HSE_PREDIV 11 HSI48 через делитель PREDIV RCC_CFGR_PLLSRC_HSI48_PREDIV - ADCPRE (бит 14) — Устаревший делитель АЦП: такт АЦП выбирается в ADC_CFGR2 (только у STM32F031, STM32F038, STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078).
ADCPRE Значение Макрос CMSIS 0 Деление на 2 RCC_CFGR_ADCPRE_DIV2 1 Деление на 4 RCC_CFGR_ADCPRE_DIV4 - PPRE (биты 10:8) — Делитель шины APB: PCLK = HCLK / 1…16.
PPRE Значение Макрос CMSIS 000 Без деления RCC_CFGR_PPRE_DIV1 100 Деление на 2 RCC_CFGR_PPRE_DIV2 101 Деление на 4 RCC_CFGR_PPRE_DIV4 110 Деление на 8 RCC_CFGR_PPRE_DIV8 111 Деление на 16 RCC_CFGR_PPRE_DIV16 - HPRE (биты 7:4) — Делитель шины AHB: HCLK = SYSCLK / 1…512.
HPRE Значение Макрос CMSIS 0000 Без деления RCC_CFGR_HPRE_DIV1 1000 Деление на 2 RCC_CFGR_HPRE_DIV2 1001 Деление на 4 RCC_CFGR_HPRE_DIV4 1010 Деление на 8 RCC_CFGR_HPRE_DIV8 1011 Деление на 16 RCC_CFGR_HPRE_DIV16 1100 Деление на 64 RCC_CFGR_HPRE_DIV64 1101 Деление на 128 RCC_CFGR_HPRE_DIV128 1110 Деление на 256 RCC_CFGR_HPRE_DIV256 1111 Деление на 512 RCC_CFGR_HPRE_DIV512 - SWS (биты 3:2) — Текущий источник SYSCLK (только чтение).
SWS Значение Макрос CMSIS 00 HSI RCC_CFGR_SWS_HSI 01 HSE RCC_CFGR_SWS_HSE 10 PLL RCC_CFGR_SWS_PLL 11 HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098) RCC_CFGR_SWS_HSI48 - SW (биты 1:0) — Выбор источника SYSCLK.
SW Значение Макрос CMSIS 00 HSI RCC_CFGR_SW_HSI 01 HSE RCC_CFGR_SW_HSE 10 PLL RCC_CFGR_SW_PLL 11 HSI48 (только у STM32F042, STM32F048, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098) RCC_CFGR_SW_HSI48
RCC_CIR — прерывания готовности генераторов
Смещение 0x08, адрес 0x4002 1008, 32 бит, после сброса 0x0000 0000. В коде: RCC->CIR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CSSC | HSI48RDYC | HSI14RDYC | PLLRDYC | HSERDYC | HSIRDYC | LSERDYC | LSIRDYC | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | HSI48RDYIE | HSI14RDYIE | PLLRDYIE | HSERDYIE | HSIRDYIE | LSERDYIE | LSIRDYIE | CSSF | HSI48RDYF | HSI14RDYF | PLLRDYF | HSERDYF | HSIRDYF | LSERDYF | LSIRDYF |
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DBGMCURST | — | TIM17RST | TIM16RST | TIM15RST | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USART1RST | — | SPI1RST | TIM1RST | — | ADCRST | — | USART8RST | USART7RST | USART6RST | — | 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CECRST | DACRST | PWRRST | CRSRST | — | CANRST | — | USBRST | I2C2RST | I2C1RST | USART5RST | USART4RST | USART3RST | USART2RST | — |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SPI2RST | — | WWDGRST | — | TIM14RST | — | TIM7RST | TIM6RST | — | TIM3RST | TIM2RST | ||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TSCEN | — | GPIOFEN | GPIOEEN | GPIODEN | GPIOCEN | GPIOBEN | GPIOAEN | — | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCEN | — | FLITFEN | — | SRAMEN | DMA2EN | DMAEN | ||||||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | DBGMCUEN | — | TIM17EN | TIM16EN | TIM15EN | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USART1EN | — | SPI1EN | TIM1EN | — | ADCEN | — | USART8EN | USART7EN | USART6EN | — | 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | CECEN | DACEN | PWREN | CRSEN | — | CANEN | — | USBEN | I2C2EN | I2C1EN | USART5EN | USART4EN | USART3EN | USART2EN | — |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | SPI2EN | — | WWDGEN | — | TIM14EN | — | TIM7EN | TIM6EN | — | TIM3EN | TIM2EN | ||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | BDRST | ||||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| RTCEN | — | RTCSEL | — | LSEDRV | LSEBYP | LSERDY | LSEON | ||||||||
- BDRST (бит 16) — Программный сброс домена RTC.
- RTCEN (бит 15) — Тактирование RTC.
- RTCSEL (биты 9:8) — Источник тактирования RTC; меняется только сбросом домена RTC.
RTCSEL Значение Макрос CMSIS 00 Нет тактирования RCC_BDCR_RTCSEL_NOCLOCK 01 LSE RCC_BDCR_RTCSEL_LSE 10 LSI RCC_BDCR_RTCSEL_LSI 11 HSE / 32 RCC_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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| LPWRRSTF | WWDGRSTF | IWDGRSTF | SFTRSTF | PORRSTF | PINRSTF | OBLRSTF | RMVF | V18PWRRSTF | — | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | LSIRDY | LSION | |||||||||||||
- 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.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TSCRST | — | GPIOFRST | GPIOERST | GPIODRST | GPIOCRST | GPIOBRST | GPIOARST | — | ||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | |||||||||||||||
- 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.
| 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 |
| — | PREDIV | ||||||||||||||
- PREDIV (биты 3:0) — Делитель PREDIV перед PLL: 1…16.
PREDIV Значение Макрос CMSIS 0000 Без деления RCC_CFGR2_PREDIV_DIV1 0001 Деление на 2 RCC_CFGR2_PREDIV_DIV2 0010 Деление на 3 RCC_CFGR2_PREDIV_DIV3 0011 Деление на 4 RCC_CFGR2_PREDIV_DIV4 0100 Деление на 5 RCC_CFGR2_PREDIV_DIV5 0101 Деление на 6 RCC_CFGR2_PREDIV_DIV6 0110 Деление на 7 RCC_CFGR2_PREDIV_DIV7 0111 Деление на 8 RCC_CFGR2_PREDIV_DIV8 1000 Деление на 9 RCC_CFGR2_PREDIV_DIV9 1001 Деление на 10 RCC_CFGR2_PREDIV_DIV10 1010 Деление на 11 RCC_CFGR2_PREDIV_DIV11 1011 Деление на 12 RCC_CFGR2_PREDIV_DIV12 1100 Деление на 13 RCC_CFGR2_PREDIV_DIV13 1101 Деление на 14 RCC_CFGR2_PREDIV_DIV14 1110 Деление на 15 RCC_CFGR2_PREDIV_DIV15 1111 Деление на 16 RCC_CFGR2_PREDIV_DIV16
RCC_CFGR3 — источники тактирования USART, I2C1, CEC и USB
Смещение 0x30, адрес 0x4002 1030, 32 бит, после сброса 0x0000 0000. В коде: RCC->CFGR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | USART3SW | USART2SW | |||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | USBSW | CECSW | — | I2C1SW | — | USART1SW | |||||||||
- USART3SW (биты 19:18) — Источник тактирования USART3 (только у STM32F091, STM32F098).
USART3SW Значение Макрос CMSIS 00 PCLK RCC_CFGR3_USART3SW_PCLK 01 SYSCLK RCC_CFGR3_USART3SW_SYSCLK 10 LSE RCC_CFGR3_USART3SW_LSE 11 HSI RCC_CFGR3_USART3SW_HSI - USART2SW (биты 17:16) — Источник тактирования USART2 (только у STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
USART2SW Значение Макрос CMSIS 00 PCLK RCC_CFGR3_USART2SW_PCLK 01 SYSCLK RCC_CFGR3_USART2SW_SYSCLK 10 LSE RCC_CFGR3_USART2SW_LSE 11 HSI RCC_CFGR3_USART2SW_HSI - USBSW (бит 7) — Источник тактирования USB (только у STM32F042, STM32F048, STM32F072, STM32F078).
USBSW Значение Макрос CMSIS 0 HSI48 RCC_CFGR3_USBSW_HSI48 1 PLL RCC_CFGR3_USBSW_PLLCLK - CECSW (бит 6) — Источник тактирования HDMI-CEC (только у STM32F042, STM32F048, STM32F051, STM32F058, STM32F071, STM32F072, STM32F078, STM32F091, STM32F098).
CECSW Значение Макрос CMSIS 0 HSI / 244 (32,8 кГц) RCC_CFGR3_CECSW_HSI_DIV244 1 LSE RCC_CFGR3_CECSW_LSE - I2C1SW (бит 4) — Источник тактирования I2C1.
I2C1SW Значение Макрос CMSIS 0 HSI RCC_CFGR3_I2C1SW_HSI 1 SYSCLK RCC_CFGR3_I2C1SW_SYSCLK - USART1SW (биты 1:0) — Источник тактирования USART1.
USART1SW Значение Макрос CMSIS 00 PCLK RCC_CFGR3_USART1SW_PCLK 01 SYSCLK RCC_CFGR3_USART1SW_SYSCLK 10 LSE RCC_CFGR3_USART1SW_LSE 11 HSI RCC_CFGR3_USART1SW_HSI
RCC_CR2 — генераторы HSI14 и HSI48
Смещение 0x34, адрес 0x4002 1034, 32 бит, после сброса 0xXX00 XX80 (X — не определено). В коде: RCC->CR2.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| HSI48CAL | — | HSI48RDY | HSI48ON | ||||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| HSI14CAL | HSI14TRIM | HSI14DIS | HSI14RDY | HSI14ON | |||||||||||
- 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).
Источники
- STMicroelectronics. RM0091: Reference manual (Rev 10) — раздел 6.4: описание регистров, назначение полей и значения после сброса
- 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
- Все регистры STM32F0Блоки периферии и заголовки CMSIS
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_CFGR1, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4, SYSCFG_CFGR2
- EXTI — внешние прерыванияEXTI_IMR, EXTI_EMR, EXTI_RTSR, EXTI_FTSR, EXTI_SWIER, EXTI_PR
- USART — последовательные порты USARTUSART_CR1, USART_CR2, USART_CR3, USART_BRR, USART_GTPR, USART_RTOR
- SPI — интерфейсы SPI и I2SSPI_CR1, SPI_CR2, SPI_SR, SPI_DR, SPI_CRCPR, SPI_RXCRCR
- I2C — интерфейс I2CI2C_CR1, I2C_CR2, I2C_OAR1, I2C_OAR2, I2C_TIMINGR, I2C_TIMEOUTR
- TIM — таймерыTIMx_CR1, TIMx_CR2, TIMx_SMCR, TIMx_DIER, TIMx_SR, TIMx_EGR
- DMA — прямой доступ к памятиDMA_ISR, DMA_IFCR, DMA_CSELR, DMA_CCR, DMA_CNDTR, DMA_CPAR
- ADC — аналого-цифровой преобразовательADC_ISR, ADC_IER, ADC_CR, ADC_CFGR1, ADC_CFGR2, ADC_SMPR
- IWDG — независимый сторожевой таймерIWDG_KR, IWDG_PR, IWDG_RLR, IWDG_SR, IWDG_WINR
- WWDG — оконный сторожевой таймерWWDG_CR, WWDG_CFR, WWDG_SR
- CRC — вычислитель CRCCRC_DR, CRC_IDR, CRC_CR, CRC_INIT, CRC_POL
- DBGMCU — блок отладкиDBGMCU_IDCODE, DBGMCU_CR, DBGMCU_APB1_FZ, DBGMCU_APB2_FZ
- PWR — управление питаниемPWR_CR, PWR_CSR
- FLASH — интерфейс флеш-памятиFLASH_ACR, FLASH_KEYR, FLASH_OPTKEYR, FLASH_SR, FLASH_CR, FLASH_AR
- RTC — часы реального времениRTC_TR, RTC_DR, RTC_CR, RTC_ISR, RTC_PRER, RTC_WUTR
- DAC — цифро-аналоговый преобразовательDAC_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2
- CAN — контроллер CANCAN_MCR, CAN_MSR, CAN_TSR, CAN_RF0R, CAN_RF1R, CAN_IER