Регистры RCC STM32F3
Регистры RCC STM32F3: генераторы HSI 8 МГц, HSE, LSE и LSI, PLL с делителем PREDIV, делители шин AHB, APB1 и APB2, выход MCO, такт АЦП от PLL, источники тактирования USART, I2C и таймеров, включение и сброс периферии, причина сброса.
После сброса STM32F3 работает от HSI 8 МГц. До 72 МГц частоту поднимает PLL с множителем PLLMUL от 2 до 16: на её вход идёт HSI / 2 или HSE через делитель PREDIV (поле RCC_CFGR2), у STM32F303xD/xE и F398 — ещё HSI через PREDIV. Шин две: APB1 до 36 МГц и APB2 до 72 МГц, делители PPRE1 и PPRE2 (RM0316, раздел 9.4).
Своё у STM32F3 — такты АЦП и таймеров. ADCPRE12 и ADCPRE34 в RCC_CFGR2 дают АЦП такт от PLL с делением 1…256, иначе АЦП тактируется синхронно от AHB (поле CKMODE регистра ADC_CCR). Биты TIM1SW, TIM8SW и другие в RCC_CFGR3 подают на таймер PLL × 2 — до 144 МГц, — а USART1SW…UART5SW и I2C1SW…I2C3SW выбирают такт портов: от LSE USART работает и в режиме Stop.
Перед переключением SYSCLK на PLL выше 24 МГц задайте такты ожидания флеш-памяти в FLASH_ACR: 1 до 48 МГц, 2 до 72 МГц. Причину последнего сброса показывают флаги RCC_CSR; бит RMVF их сбрасывает.
| Экземпляр | Базовый адрес | Есть у |
|---|---|---|
| RCC | 0x4002 1000 | всех |
Регистры блока
| Регистр | Смещение | Назначение | После сброса |
|---|---|---|---|
| RCC_CR | 0x00 | Тактовые генераторы HSI, HSE и PLL | 0x0000 XX83 |
| RCC_CFGR | 0x04 | Источник SYSCLK, делители шин, PLL и вывод MCO | 0x0000 0000 |
| RCC_CIR | 0x08 | Прерывания готовности генераторов | 0x0000 0000 |
| RCC_APB2RSTR | 0x0C | Сброс блоков на шине APB2 | 0x0000 0000 |
| RCC_APB1RSTR | 0x10 | Сброс блоков на шине APB1 | 0x0000 0000 |
| RCC_AHBENR | 0x14 | Тактирование блоков на шине AHB | 0x0000 0014 |
| RCC_APB2ENR | 0x18 | Тактирование блоков на шине APB2 | 0x0000 0000 |
| RCC_APB1ENR | 0x1C | Тактирование блоков на шине APB1 | 0x0000 0000 |
| RCC_BDCR | 0x20 | Домен RTC: LSE и тактирование часов | 0x0000 0018 (сбрасывается сбросом домена RTC) |
| RCC_CSR | 0x24 | Генератор LSI и флаги причины сброса | 0x0C00 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания) |
| RCC_AHBRSTR | 0x28 | Сброс блоков на шине AHB | 0x0000 0000 |
| RCC_CFGR2 | 0x2C | Делитель PREDIV и делители тактов АЦП | 0x0000 0000 |
| RCC_CFGR3 | 0x30 | Источники тактирования USART, I2C и таймеров | 0x0000 0000 |
Конструктор значения
Выберите регистр и значения полей — конструктор покажет 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. В коде: 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 поверх заводской калибровки HSICAL.
- 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 | I2SSRC | USBPRE | PLLMUL | PLLXTPRE | PLLSRC | |||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | PPRE2 | PPRE1 | HPRE | SWS | SW | ||||||||||
- PLLNODIV (бит 31) — PLL на выход MCO без деления на 2 (только у STM32F303x8/xE, STM32F328, STM32F398).
- MCOPRE (биты 30:28) — Делитель сигнала на выходе MCO (только у STM32F303x8/xE, STM32F328, STM32F398).
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 - MCOF (бит 28) — Переключение источника MCO завершено (только чтение) (только у STM32F303xC, STM32F358).
- MCO (биты 26:24) — Источник сигнала на выходе MCO.
MCO Значение Макрос CMSIS 000 Нет сигнала RCC_CFGR_MCO_NOCLOCK 010 LSI RCC_CFGR_MCO_LSI 011 LSE RCC_CFGR_MCO_LSE 100 SYSCLK RCC_CFGR_MCO_SYSCLK 101 HSI RCC_CFGR_MCO_HSI 110 HSE RCC_CFGR_MCO_HSE 111 PLL / 2 (без деления при PLLNODIV = 1) RCC_CFGR_MCO_PLL - I2SSRC (бит 23) — Источник тактирования I2S: SYSCLK или внешний сигнал на выводе I2S_CKIN (только у STM32F303xC/xE, STM32F358, STM32F398).
I2SSRC Значение Макрос CMSIS 0 SYSCLK RCC_CFGR_I2SSRC_SYSCLK 1 Внешний сигнал на выводе I2S_CKIN RCC_CFGR_I2SSRC_EXT - USBPRE (бит 22) — Делитель PLL для USB: 1,5 (PLL 72 МГц) или без деления (PLL 48 МГц) (только у STM32F303xC/xE).
USBPRE Значение Макрос CMSIS 0 PLL / 1,5 RCC_CFGR_USBPRE_DIV1_5 1 Без деления RCC_CFGR_USBPRE_DIV1 - PLLMUL (биты 21:18) — Множитель PLL: ×2…×16; выход PLL — не больше 72 МГц.
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 (только у STM32F303x8/xC, STM32F328, STM32F358).
PLLSRC Значение Макрос CMSIS 0 HSI / 2 RCC_CFGR_PLLSRC_HSI_DIV2 1 HSE через делитель PREDIV RCC_CFGR_PLLSRC_HSE_PREDIV - PLLSRC (биты 16:15) — Источник тактирования PLL (только у STM32F303xE, STM32F398).
PLLSRC Значение Макрос CMSIS 01 HSI через делитель PREDIV RCC_CFGR_PLLSRC_HSI_PREDIV 10 HSE через делитель PREDIV RCC_CFGR_PLLSRC_HSE_PREDIV - PPRE2 (биты 13:11) — Делитель шины APB2: PCLK2 = HCLK / 1…16.
PPRE2 Значение Макрос CMSIS 000 Без деления RCC_CFGR_PPRE2_DIV1 100 Деление на 2 RCC_CFGR_PPRE2_DIV2 101 Деление на 4 RCC_CFGR_PPRE2_DIV4 110 Деление на 8 RCC_CFGR_PPRE2_DIV8 111 Деление на 16 RCC_CFGR_PPRE2_DIV16 - PPRE1 (биты 10:8) — Делитель шины APB1: PCLK1 = HCLK / 1…16.
PPRE1 Значение Макрос CMSIS 000 Без деления RCC_CFGR_PPRE1_DIV1 100 Деление на 2 RCC_CFGR_PPRE1_DIV2 101 Деление на 4 RCC_CFGR_PPRE1_DIV4 110 Деление на 8 RCC_CFGR_PPRE1_DIV8 111 Деление на 16 RCC_CFGR_PPRE1_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 - SW (биты 1:0) — Выбор источника SYSCLK.
SW Значение Макрос CMSIS 00 HSI RCC_CFGR_SW_HSI 01 HSE RCC_CFGR_SW_HSE 10 PLL × 2 (до 144 МГц) RCC_CFGR_SW_PLL
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 | — | PLLRDYC | HSERDYC | HSIRDYC | LSERDYC | LSIRDYC | ||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | PLLRDYIE | HSERDYIE | HSIRDYIE | LSERDYIE | LSIRDYIE | CSSF | — | PLLRDYF | HSERDYF | HSIRDYF | LSERDYF | LSIRDYF | |||
- CSSC (бит 23) — Сброс флага CSSF записью 1.
- PLLRDYC (бит 20) — Сброс флага готовности PLL записью 1.
- HSERDYC (бит 19) — Сброс флага готовности HSE записью 1.
- HSIRDYC (бит 18) — Сброс флага готовности HSI записью 1.
- LSERDYC (бит 17) — Сброс флага готовности LSE записью 1.
- LSIRDYC (бит 16) — Сброс флага готовности LSI записью 1.
- PLLRDYIE (бит 12) — Прерывание по готовности PLL.
- HSERDYIE (бит 11) — Прерывание по готовности HSE.
- HSIRDYIE (бит 10) — Прерывание по готовности HSI.
- LSERDYIE (бит 9) — Прерывание по готовности LSE.
- LSIRDYIE (бит 8) — Прерывание по готовности LSI.
- CSSF (бит 7) — Флаг отказа HSE (система защиты тактирования).
- PLLRDYF (бит 4) — Флаг прерывания по готовности PLL.
- HSERDYF (бит 3) — Флаг прерывания по готовности HSE.
- HSIRDYF (бит 2) — Флаг прерывания по готовности HSI.
- LSERDYF (бит 1) — Флаг прерывания по готовности LSE.
- LSIRDYF (бит 0) — Флаг прерывания по готовности LSI.
RCC_APB2RSTR — сброс блоков на шине APB2
Смещение 0x0C, адрес 0x4002 100C, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB2RSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TIM20RST | — | TIM17RST | TIM16RST | TIM15RST | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI4RST | USART1RST | TIM8RST | SPI1RST | TIM1RST | — | SYSCFGRST | |||||||||
- TIM20RST (бит 20) — Сброс таймера TIM20 (только у STM32F303xE, STM32F398).
- TIM17RST (бит 18) — Сброс таймера TIM17.
- TIM16RST (бит 17) — Сброс таймера TIM16.
- TIM15RST (бит 16) — Сброс таймера TIM15.
- SPI4RST (бит 15) — Сброс SPI4 (только у STM32F303xE, STM32F398).
- USART1RST (бит 14) — Сброс USART1.
- TIM8RST (бит 13) — Сброс таймера TIM8 (только у STM32F303xC/xE, STM32F358, STM32F398).
- SPI1RST (бит 12) — Сброс SPI1.
- TIM1RST (бит 11) — Сброс таймера TIM1.
- SYSCFGRST (бит 0) — Сброс SYSCFG и компараторов.
RCC_APB1RSTR — сброс блоков на шине APB1
Смещение 0x10, адрес 0x4002 1010, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1RSTR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | I2C3RST | DAC1RST | PWRRST | — | DAC2RST | CANRST | — | USBRST | I2C2RST | I2C1RST | UART5RST | UART4RST | USART3RST | USART2RST | — |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI3RST | SPI2RST | — | WWDGRST | — | TIM7RST | TIM6RST | — | TIM4RST | TIM3RST | TIM2RST | |||||
- I2C3RST (бит 30) — Сброс I2C3 (только у STM32F303xE, STM32F398).
- DAC1RST (бит 29) — Сброс ЦАП DAC1.
- PWRRST (бит 28) — Сброс интерфейса управления питанием PWR.
- DAC2RST (бит 26) — Сброс ЦАП DAC2 (только у STM32F303x8, STM32F328).
- CANRST (бит 25) — Сброс bxCAN.
- USBRST (бит 23) — Сброс USB (только у STM32F303xC/xE).
- I2C2RST (бит 22) — Сброс I2C2 (только у STM32F303xC/xE, STM32F358, STM32F398).
- I2C1RST (бит 21) — Сброс I2C1.
- UART5RST (бит 20) — Сброс UART5 (только у STM32F303xC/xE, STM32F358, STM32F398).
- UART4RST (бит 19) — Сброс UART4 (только у STM32F303xC/xE, STM32F358, STM32F398).
- USART3RST (бит 18) — Сброс USART3.
- USART2RST (бит 17) — Сброс USART2.
- SPI3RST (бит 15) — Сброс SPI3 (только у STM32F303xC/xE, STM32F358, STM32F398).
- SPI2RST (бит 14) — Сброс SPI2 (только у STM32F303xC/xE, STM32F358, STM32F398).
- WWDGRST (бит 11) — Сброс оконного сторожевого таймера WWDG.
- TIM7RST (бит 5) — Сброс таймера TIM7.
- TIM6RST (бит 4) — Сброс таймера TIM6.
- TIM4RST (бит 2) — Сброс таймера TIM4 (только у STM32F303xC/xE, STM32F358, STM32F398).
- 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 |
| — | ADC34EN | ADC12EN | — | TSCEN | GPIOGEN | GPIOFEN | GPIOEEN | GPIODEN | GPIOCEN | GPIOBEN | GPIOAEN | GPIOHEN | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | CRCEN | FMCEN | FLITFEN | — | SRAMEN | DMA2EN | DMA1EN | ||||||||
- ADC34EN (бит 29) — Тактирование АЦП ADC3 и ADC4 (только у STM32F303xC/xE, STM32F358, STM32F398).
- ADC12EN (бит 28) — Тактирование АЦП ADC1 и ADC2.
- TSCEN (бит 24) — Тактирование контроллера сенсорных кнопок TSC.
- GPIOGEN (бит 23) — Тактирование порта G (только у STM32F303xE, STM32F398).
- GPIOFEN (бит 22) — Тактирование порта F.
- GPIOEEN (бит 21) — Тактирование порта E (только у STM32F303xC/xE, STM32F358, STM32F398).
- GPIODEN (бит 20) — Тактирование порта D.
- GPIOCEN (бит 19) — Тактирование порта C.
- GPIOBEN (бит 18) — Тактирование порта B.
- GPIOAEN (бит 17) — Тактирование порта A.
- GPIOHEN (бит 16) — Тактирование порта H (только у STM32F303xE, STM32F398).
- CRCEN (бит 6) — Тактирование блока CRC.
- FMCEN (бит 5) — Тактирование контроллера внешней памяти FMC (только у STM32F303xE, STM32F398).
- FLITFEN (бит 4) — Тактирование интерфейса флеш-памяти.
- SRAMEN (бит 2) — Тактирование SRAM.
- DMA2EN (бит 1) — Тактирование DMA2 (только у STM32F303xC/xE, STM32F358, STM32F398).
- DMA1EN (бит 0) — Тактирование DMA1.
RCC_APB2ENR — тактирование блоков на шине APB2
Смещение 0x18, адрес 0x4002 1018, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB2ENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TIM20EN | — | TIM17EN | TIM16EN | TIM15EN | ||||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI4EN | USART1EN | TIM8EN | SPI1EN | TIM1EN | — | SYSCFGEN | |||||||||
- TIM20EN (бит 20) — Тактирование таймера TIM20 (только у STM32F303xE, STM32F398).
- TIM17EN (бит 18) — Тактирование таймера TIM17.
- TIM16EN (бит 17) — Тактирование таймера TIM16.
- TIM15EN (бит 16) — Тактирование таймера TIM15.
- SPI4EN (бит 15) — Тактирование SPI4 (только у STM32F303xE, STM32F398).
- USART1EN (бит 14) — Тактирование USART1.
- TIM8EN (бит 13) — Тактирование таймера TIM8 (только у STM32F303xC/xE, STM32F358, STM32F398).
- SPI1EN (бит 12) — Тактирование SPI1.
- TIM1EN (бит 11) — Тактирование таймера TIM1.
- SYSCFGEN (бит 0) — Тактирование SYSCFG и компараторов.
RCC_APB1ENR — тактирование блоков на шине APB1
Смещение 0x1C, адрес 0x4002 101C, 32 бит, после сброса 0x0000 0000. В коде: RCC->APB1ENR.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | I2C3EN | DAC1EN | PWREN | — | DAC2EN | CANEN | — | USBEN | I2C2EN | I2C1EN | UART5EN | UART4EN | USART3EN | USART2EN | — |
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| SPI3EN | SPI2EN | — | WWDGEN | — | TIM7EN | TIM6EN | — | TIM4EN | TIM3EN | TIM2EN | |||||
- I2C3EN (бит 30) — Тактирование I2C3 (только у STM32F303xE, STM32F398).
- DAC1EN (бит 29) — Тактирование ЦАП DAC1.
- PWREN (бит 28) — Тактирование интерфейса управления питанием PWR.
- DAC2EN (бит 26) — Тактирование ЦАП DAC2 (только у STM32F303x8, STM32F328).
- CANEN (бит 25) — Тактирование bxCAN.
- USBEN (бит 23) — Тактирование USB (только у STM32F303xC/xE).
- I2C2EN (бит 22) — Тактирование I2C2 (только у STM32F303xC/xE, STM32F358, STM32F398).
- I2C1EN (бит 21) — Тактирование I2C1.
- UART5EN (бит 20) — Тактирование UART5 (только у STM32F303xC/xE, STM32F358, STM32F398).
- UART4EN (бит 19) — Тактирование UART4 (только у STM32F303xC/xE, STM32F358, STM32F398).
- USART3EN (бит 18) — Тактирование USART3.
- USART2EN (бит 17) — Тактирование USART2.
- SPI3EN (бит 15) — Тактирование SPI3 (только у STM32F303xC/xE, STM32F358, STM32F398).
- SPI2EN (бит 14) — Тактирование SPI2 (только у STM32F303xC/xE, STM32F358, STM32F398).
- WWDGEN (бит 11) — Тактирование оконного сторожевого таймера WWDG.
- TIM7EN (бит 5) — Тактирование таймера TIM7.
- TIM6EN (бит 4) — Тактирование таймера TIM6.
- TIM4EN (бит 2) — Тактирование таймера TIM4 (только у STM32F303xC/xE, STM32F358, STM32F398).
- 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 бит, после сброса 0x0C00 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) — Причина сброса: вход в режим пониженного потребления запрещён байтом опций (nRST_STOP, nRST_STDBY).
- WWDGRSTF (бит 30) — Причина сброса: оконный сторожевой таймер WWDG.
- IWDGRSTF (бит 29) — Причина сброса: независимый сторожевой таймер IWDG.
- SFTRSTF (бит 28) — Причина сброса: программный (SYSRESETREQ).
- PORRSTF (бит 27) — Причина сброса: включение или пропадание питания (POR/PDR).
- PINRSTF (бит 26) — Причина сброса: вывод NRST.
- OBLRSTF (бит 25) — Причина сброса: загрузка байтов опций (OBL_LAUNCH).
- RMVF (бит 24) — Запись 1 сбрасывает все флаги причины сброса.
- V18PWRRSTF (бит 23) — Причина сброса: пропадание питания домена 1,8 В (только у STM32F303).
- 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 |
| — | ADC34RST | ADC12RST | — | TSCRST | GPIOGRST | GPIOFRST | GPIOERST | GPIODRST | GPIOCRST | GPIOBRST | GPIOARST | GPIOHRST | |||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| — | FMCRST | — | |||||||||||||
- ADC34RST (бит 29) — Сброс АЦП ADC3 и ADC4 (только у STM32F303xC/xE, STM32F358, STM32F398).
- ADC12RST (бит 28) — Сброс АЦП ADC1 и ADC2.
- TSCRST (бит 24) — Сброс контроллера сенсорных кнопок TSC.
- GPIOGRST (бит 23) — Сброс порта G (только у STM32F303xE, STM32F398).
- GPIOFRST (бит 22) — Сброс порта F.
- GPIOERST (бит 21) — Сброс порта E (только у STM32F303xC/xE, STM32F358, STM32F398).
- GPIODRST (бит 20) — Сброс порта D.
- GPIOCRST (бит 19) — Сброс порта C.
- GPIOBRST (бит 18) — Сброс порта B.
- GPIOARST (бит 17) — Сброс порта A.
- GPIOHRST (бит 16) — Сброс порта H (только у STM32F303xE, STM32F398).
- FMCRST (бит 5) — Сброс контроллера внешней памяти FMC (только у STM32F303xE, STM32F398).
RCC_CFGR2 — делитель PREDIV и делители тактов АЦП
Смещение 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 |
| — | ADCPRE34 | ADCPRE12 | PREDIV | ||||||||||||
- ADCPRE34 (биты 13:9) — Такт АЦП ADC3/ADC4 от PLL: выключен или PLL / 1…256 (иначе АЦП тактируется от AHB — поле CKMODE регистра ADC_CCR) (только у STM32F303xC/xE, STM32F358, STM32F398).
ADCPRE34 Значение Макрос CMSIS 00000 Такт от PLL выключен (АЦП может тактироваться от AHB) RCC_CFGR2_ADCPRE34_NO 10000 Без деления RCC_CFGR2_ADCPRE34_DIV1 10001 Деление на 2 RCC_CFGR2_ADCPRE34_DIV2 10010 Деление на 4 RCC_CFGR2_ADCPRE34_DIV4 10011 Деление на 6 RCC_CFGR2_ADCPRE34_DIV6 10100 Деление на 8 RCC_CFGR2_ADCPRE34_DIV8 10101 Деление на 10 RCC_CFGR2_ADCPRE34_DIV10 10110 Деление на 12 RCC_CFGR2_ADCPRE34_DIV12 10111 Деление на 16 RCC_CFGR2_ADCPRE34_DIV16 11000 Деление на 32 RCC_CFGR2_ADCPRE34_DIV32 11001 Деление на 64 RCC_CFGR2_ADCPRE34_DIV64 11010 Деление на 128 RCC_CFGR2_ADCPRE34_DIV128 11011 Деление на 256 RCC_CFGR2_ADCPRE34_DIV256 - ADCPRE12 (биты 8:4) — Такт АЦП ADC1/ADC2 от PLL: выключен или PLL / 1…256 (иначе АЦП тактируется от AHB — поле CKMODE регистра ADC_CCR).
ADCPRE12 Значение Макрос CMSIS 00000 Такт от PLL выключен (АЦП может тактироваться от AHB) RCC_CFGR2_ADCPRE12_NO 10000 Без деления RCC_CFGR2_ADCPRE12_DIV1 10001 Деление на 2 RCC_CFGR2_ADCPRE12_DIV2 10010 Деление на 4 RCC_CFGR2_ADCPRE12_DIV4 10011 Деление на 6 RCC_CFGR2_ADCPRE12_DIV6 10100 Деление на 8 RCC_CFGR2_ADCPRE12_DIV8 10101 Деление на 10 RCC_CFGR2_ADCPRE12_DIV10 10110 Деление на 12 RCC_CFGR2_ADCPRE12_DIV12 10111 Деление на 16 RCC_CFGR2_ADCPRE12_DIV16 11000 Деление на 32 RCC_CFGR2_ADCPRE12_DIV32 11001 Деление на 64 RCC_CFGR2_ADCPRE12_DIV64 11010 Деление на 128 RCC_CFGR2_ADCPRE12_DIV128 11011 Деление на 256 RCC_CFGR2_ADCPRE12_DIV256 - 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, I2C и таймеров
Смещение 0x30, адрес 0x4002 1030, 32 бит, после сброса 0x0000 0000. В коде: RCC->CFGR3.
| 31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
| — | TIM34SW | TIM2SW | UART5SW | UART4SW | USART3SW | USART2SW | |||||||||
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| TIM20SW | — | TIM17SW | — | TIM16SW | TIM15SW | TIM8SW | TIM1SW | — | I2C3SW | I2C2SW | I2C1SW | — | USART1SW | ||
- TIM34SW (бит 25) — Тактирование TIM3 и TIM4: PCLK2 (так в RM0316) или выход VCO PLL (только у STM32F303xE, STM32F398).
TIM34SW Значение Макрос CMSIS 0 PCLK1 RCC_CFGR3_TIM34SW_PCLK1 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM34SW_PLL - TIM2SW (бит 24) — Тактирование TIM2: PCLK2 (так в RM0316) или выход VCO PLL (только у STM32F303xE, STM32F398).
TIM2SW Значение Макрос CMSIS 0 PCLK1 RCC_CFGR3_TIM2SW_PCLK1 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM2SW_PLL - UART5SW (биты 23:22) — Источник тактирования UART5 (только у STM32F303xC/xE, STM32F358, STM32F398).
UART5SW Значение Макрос CMSIS 00 PCLK RCC_CFGR3_UART5SW_PCLK 01 SYSCLK RCC_CFGR3_UART5SW_SYSCLK 10 LSE RCC_CFGR3_UART5SW_LSE 11 HSI RCC_CFGR3_UART5SW_HSI - UART4SW (биты 21:20) — Источник тактирования UART4 (только у STM32F303xC/xE, STM32F358, STM32F398).
UART4SW Значение Макрос CMSIS 00 PCLK RCC_CFGR3_UART4SW_PCLK 01 SYSCLK RCC_CFGR3_UART4SW_SYSCLK 10 LSE RCC_CFGR3_UART4SW_LSE 11 HSI RCC_CFGR3_UART4SW_HSI - USART3SW (биты 19:18) — Источник тактирования USART3 (только у STM32F303xC/xE, STM32F358, STM32F398).
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 (только у STM32F303xC/xE, STM32F358, STM32F398).
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 - TIM20SW (бит 15) — Тактирование TIM20: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
TIM20SW Значение Макрос CMSIS 0 PCLK2 RCC_CFGR3_TIM20SW_PCLK2 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM20SW_PLL - TIM17SW (бит 13) — Тактирование TIM17: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
TIM17SW Значение Макрос CMSIS 0 PCLK2 RCC_CFGR3_TIM17SW_PCLK2 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM17SW_PLL - TIM16SW (бит 11) — Тактирование TIM16: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
TIM16SW Значение Макрос CMSIS 0 PCLK2 RCC_CFGR3_TIM16SW_PCLK2 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM16SW_PLL - TIM15SW (бит 10) — Тактирование TIM15: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
TIM15SW Значение Макрос CMSIS 0 PCLK2 RCC_CFGR3_TIM15SW_PCLK2 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM15SW_PLL - TIM8SW (бит 9) — Тактирование TIM8: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xC/xE, STM32F358, STM32F398).
TIM8SW Значение Макрос CMSIS 0 PCLK2 RCC_CFGR3_TIM8SW_PCLK2 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM8SW_PLL - TIM1SW (бит 8) — Тактирование TIM1: PCLK2 или PLL × 2 (до 144 МГц).
TIM1SW Значение Макрос CMSIS 0 PCLK2 RCC_CFGR3_TIM1SW_PCLK2 1 PLL × 2 (до 144 МГц) RCC_CFGR3_TIM1SW_PLL - I2C3SW (бит 6) — Источник тактирования I2C3: HSI или SYSCLK (только у STM32F303xE, STM32F398).
I2C3SW Значение Макрос CMSIS 0 HSI RCC_CFGR3_I2C3SW_HSI 1 SYSCLK RCC_CFGR3_I2C3SW_SYSCLK - I2C2SW (бит 5) — Источник тактирования I2C2: HSI или SYSCLK (только у STM32F303xC/xE, STM32F358, STM32F398).
I2C2SW Значение Макрос CMSIS 0 HSI RCC_CFGR3_I2C2SW_HSI 1 SYSCLK RCC_CFGR3_I2C2SW_SYSCLK - I2C1SW (бит 4) — Источник тактирования I2C1: HSI или SYSCLK.
I2C1SW Значение Макрос CMSIS 0 HSI RCC_CFGR3_I2C1SW_HSI 1 SYSCLK RCC_CFGR3_I2C1SW_SYSCLK - USART1SW (биты 1:0) — Источник тактирования USART1.
USART1SW Значение Макрос CMSIS 00 PCLK1 (только у STM32F303x8, STM32F328) RCC_CFGR3_USART1SW_PCLK1 00 PCLK2 (только у STM32F303xC/xE, STM32F358, STM32F398) RCC_CFGR3_USART1SW_PCLK2 01 SYSCLK RCC_CFGR3_USART1SW_SYSCLK 10 LSE RCC_CFGR3_USART1SW_LSE 11 HSI RCC_CFGR3_USART1SW_HSI
Частые вопросы
Как получить 72 МГц на STM32F303 от кварца 8 МГц?
Включите HSE и дождитесь HSERDY. В RCC_CFGR2 оставьте PREDIV = 1, в RCC_CFGR выберите PLLSRC = HSE/PREDIV, PLLMUL = ×9 и PPRE1 = /2 (APB1 не выше 36 МГц). Установите FLASH_ACR.LATENCY = 2 и PRFTBE, включите PLL, дождитесь PLLRDY и переключите SW на PLL.
Почему таймер TIM1 считает быстрее, чем ожидалось?
Проверьте бит TIM1SW в RCC_CFGR3: при 1 таймер тактируется от PLL × 2 (до 144 МГц), а не от PCLK2. Кроме того, при делителе APB больше 1 таймеры получают удвоенную частоту шины.
Источники
- STMicroelectronics. RM0316: Reference manual (Rev 10) — раздел 9.4: описание регистров, назначение полей и значения после сброса
- STMicroelectronics. cmsis-device-f3 v2.3.9: заголовки CMSIS stm32f303x8.h, stm32f303xc.h, stm32f303xe.h, stm32f328xx.h, stm32f358xx.h, stm32f398xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры STM32F3
- Все регистры STM32F3Блоки периферии и заголовки CMSIS
- GPIO — порты ввода-выводаGPIOx_MODER, GPIOx_OTYPER, GPIOx_OSPEEDR, GPIOx_PUPDR, GPIOx_IDR, GPIOx_ODR
- SYSCFG — системная конфигурацияSYSCFG_CFGR1, SYSCFG_RCR, SYSCFG_EXTICR1, SYSCFG_EXTICR2, SYSCFG_EXTICR3, SYSCFG_EXTICR4
- EXTI — внешние прерыванияEXTI_IMR1, EXTI_EMR1, EXTI_RTSR1, EXTI_FTSR1, EXTI_SWIER1, EXTI_PR1
- 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_CCR, DMA_CNDTR, DMA_CPAR, DMA_CMAR
- АЦП — аналого-цифровые преобразователиADC_ISR, ADC_IER, ADC_CR, ADC_CFGR, ADC_SMPR1, ADC_SMPR2
- 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_CR, DAC_SWTRIGR, DAC_DHR12R1, DAC_DHR12L1, DAC_DHR8R1, DAC_DHR12R2
- CAN — контроллер CANCAN_MCR, CAN_MSR, CAN_TSR, CAN_RF0R, CAN_RF1R, CAN_IER