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

Регистры 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 их сбрасывает.

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

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

РегистрСмещениеНазначениеПосле сброса
RCC_CR0x00Тактовые генераторы HSI, HSE и PLL0x0000 XX83
RCC_CFGR0x04Источник SYSCLK, делители шин, PLL и вывод MCO0x0000 0000
RCC_CIR0x08Прерывания готовности генераторов0x0000 0000
RCC_APB2RSTR0x0CСброс блоков на шине APB20x0000 0000
RCC_APB1RSTR0x10Сброс блоков на шине APB10x0000 0000
RCC_AHBENR0x14Тактирование блоков на шине AHB0x0000 0014
RCC_APB2ENR0x18Тактирование блоков на шине APB20x0000 0000
RCC_APB1ENR0x1CТактирование блоков на шине APB10x0000 0000
RCC_BDCR0x20Домен RTC: LSE и тактирование часов0x0000 0018 (сбрасывается сбросом домена RTC)
RCC_CSR0x24Генератор LSI и флаги причины сброса0x0C00 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания)
RCC_AHBRSTR0x28Сброс блоков на шине AHB0x0000 0000
RCC_CFGR20x2CДелитель PREDIV и делители тактов АЦП0x0000 0000
RCC_CFGR30x30Источники тактирования 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.

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 поверх заводской калибровки HSICAL.
  • HSIRDY (бит 1) — Генератор HSI готов (только чтение).
  • HSION (бит 0) — Включение генератора HSI 8 МГц.

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

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

31302928272625242322212019181716
PLLNODIVMCOPRE—MCOI2SSRCUSBPREPLLMULPLLXTPREPLLSRC
1514131211109876543210
—PPRE2PPRE1HPRESWSSW
  • 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Деление на 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
  • MCOF (бит 28) — Переключение источника MCO завершено (только чтение) (только у STM32F303xC, STM32F358).
  • MCO (биты 26:24) — Источник сигнала на выходе MCO.
    MCOЗначениеМакрос CMSIS
    000Нет сигналаRCC_CFGR_MCO_NOCLOCK
    010LSIRCC_CFGR_MCO_LSI
    011LSERCC_CFGR_MCO_LSE
    100SYSCLKRCC_CFGR_MCO_SYSCLK
    101HSIRCC_CFGR_MCO_HSI
    110HSERCC_CFGR_MCO_HSE
    111PLL / 2 (без деления при PLLNODIV = 1)RCC_CFGR_MCO_PLL
  • I2SSRC (бит 23) — Источник тактирования I2S: SYSCLK или внешний сигнал на выводе I2S_CKIN (только у STM32F303xC/xE, STM32F358, STM32F398).
    I2SSRCЗначениеМакрос CMSIS
    0SYSCLKRCC_CFGR_I2SSRC_SYSCLK
    1Внешний сигнал на выводе I2S_CKINRCC_CFGR_I2SSRC_EXT
  • USBPRE (бит 22) — Делитель PLL для USB: 1,5 (PLL 72 МГц) или без деления (PLL 48 МГц) (только у STM32F303xC/xE).
    USBPREЗначениеМакрос CMSIS
    0PLL / 1,5RCC_CFGR_USBPRE_DIV1_5
    1Без деленияRCC_CFGR_USBPRE_DIV1
  • PLLMUL (биты 21:18) — Множитель PLL: ×2…×16; выход PLL — не больше 72 МГц.
    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 (только у STM32F303x8/xC, STM32F328, STM32F358).
    PLLSRCЗначениеМакрос CMSIS
    0HSI / 2RCC_CFGR_PLLSRC_HSI_DIV2
    1HSE через делитель PREDIVRCC_CFGR_PLLSRC_HSE_PREDIV
  • PLLSRC (биты 16:15) — Источник тактирования PLL (только у STM32F303xE, STM32F398).
    PLLSRCЗначениеМакрос CMSIS
    01HSI через делитель PREDIVRCC_CFGR_PLLSRC_HSI_PREDIV
    10HSE через делитель PREDIVRCC_CFGR_PLLSRC_HSE_PREDIV
  • PPRE2 (биты 13:11) — Делитель шины APB2: PCLK2 = HCLK / 1…16.
    PPRE2ЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE2_DIV1
    100Деление на 2RCC_CFGR_PPRE2_DIV2
    101Деление на 4RCC_CFGR_PPRE2_DIV4
    110Деление на 8RCC_CFGR_PPRE2_DIV8
    111Деление на 16RCC_CFGR_PPRE2_DIV16
  • PPRE1 (биты 10:8) — Делитель шины APB1: PCLK1 = HCLK / 1…16.
    PPRE1ЗначениеМакрос CMSIS
    000Без деленияRCC_CFGR_PPRE1_DIV1
    100Деление на 2RCC_CFGR_PPRE1_DIV2
    101Деление на 4RCC_CFGR_PPRE1_DIV4
    110Деление на 8RCC_CFGR_PPRE1_DIV8
    111Деление на 16RCC_CFGR_PPRE1_DIV16
  • HPRE (биты 7:4) — Делитель шины AHB: HCLK = SYSCLK / 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
  • SW (биты 1:0) — Выбор источника SYSCLK.
    SWЗначениеМакрос CMSIS
    00HSIRCC_CFGR_SW_HSI
    01HSERCC_CFGR_SW_HSE
    10PLL × 2 (до 144 МГц)RCC_CFGR_SW_PLL

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

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

31302928272625242322212019181716
—CSSC—PLLRDYCHSERDYCHSIRDYCLSERDYCLSIRDYC
1514131211109876543210
—PLLRDYIEHSERDYIEHSIRDYIELSERDYIELSIRDYIECSSF—PLLRDYFHSERDYFHSIRDYFLSERDYFLSIRDYF
  • 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.

31302928272625242322212019181716
—TIM20RST—TIM17RSTTIM16RSTTIM15RST
1514131211109876543210
SPI4RSTUSART1RSTTIM8RSTSPI1RSTTIM1RST—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.

31302928272625242322212019181716
—I2C3RSTDAC1RSTPWRRST—DAC2RSTCANRST—USBRSTI2C2RSTI2C1RSTUART5RSTUART4RSTUSART3RSTUSART2RST—
1514131211109876543210
SPI3RSTSPI2RST—WWDGRST—TIM7RSTTIM6RST—TIM4RSTTIM3RSTTIM2RST
  • 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.

31302928272625242322212019181716
—ADC34ENADC12EN—TSCENGPIOGENGPIOFENGPIOEENGPIODENGPIOCENGPIOBENGPIOAENGPIOHEN
1514131211109876543210
—CRCENFMCENFLITFEN—SRAMENDMA2ENDMA1EN
  • 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.

31302928272625242322212019181716
—TIM20EN—TIM17ENTIM16ENTIM15EN
1514131211109876543210
SPI4ENUSART1ENTIM8ENSPI1ENTIM1EN—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.

31302928272625242322212019181716
—I2C3ENDAC1ENPWREN—DAC2ENCANEN—USBENI2C2ENI2C1ENUART5ENUART4ENUSART3ENUSART2EN—
1514131211109876543210
SPI3ENSPI2EN—WWDGEN—TIM7ENTIM6EN—TIM4ENTIM3ENTIM2EN
  • 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.

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 бит, после сброса 0x0C00 0000 (сбрасывается системным сбросом, флаги сброса — только при включении питания). В коде: RCC->CSR.

31302928272625242322212019181716
LPWRRSTFWWDGRSTFIWDGRSTFSFTRSTFPORRSTFPINRSTFOBLRSTFRMVFV18PWRRSTF—
1514131211109876543210
—LSIRDYLSION
  • 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.

31302928272625242322212019181716
—ADC34RSTADC12RST—TSCRSTGPIOGRSTGPIOFRSTGPIOERSTGPIODRSTGPIOCRSTGPIOBRSTGPIOARSTGPIOHRST
1514131211109876543210
—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.

31302928272625242322212019181716
—
1514131211109876543210
—ADCPRE34ADCPRE12PREDIV
  • 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Деление на 2RCC_CFGR2_ADCPRE34_DIV2
    10010Деление на 4RCC_CFGR2_ADCPRE34_DIV4
    10011Деление на 6RCC_CFGR2_ADCPRE34_DIV6
    10100Деление на 8RCC_CFGR2_ADCPRE34_DIV8
    10101Деление на 10RCC_CFGR2_ADCPRE34_DIV10
    10110Деление на 12RCC_CFGR2_ADCPRE34_DIV12
    10111Деление на 16RCC_CFGR2_ADCPRE34_DIV16
    11000Деление на 32RCC_CFGR2_ADCPRE34_DIV32
    11001Деление на 64RCC_CFGR2_ADCPRE34_DIV64
    11010Деление на 128RCC_CFGR2_ADCPRE34_DIV128
    11011Деление на 256RCC_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Деление на 2RCC_CFGR2_ADCPRE12_DIV2
    10010Деление на 4RCC_CFGR2_ADCPRE12_DIV4
    10011Деление на 6RCC_CFGR2_ADCPRE12_DIV6
    10100Деление на 8RCC_CFGR2_ADCPRE12_DIV8
    10101Деление на 10RCC_CFGR2_ADCPRE12_DIV10
    10110Деление на 12RCC_CFGR2_ADCPRE12_DIV12
    10111Деление на 16RCC_CFGR2_ADCPRE12_DIV16
    11000Деление на 32RCC_CFGR2_ADCPRE12_DIV32
    11001Деление на 64RCC_CFGR2_ADCPRE12_DIV64
    11010Деление на 128RCC_CFGR2_ADCPRE12_DIV128
    11011Деление на 256RCC_CFGR2_ADCPRE12_DIV256
  • 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, I2C и таймеров

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

31302928272625242322212019181716
—TIM34SWTIM2SWUART5SWUART4SWUSART3SWUSART2SW
1514131211109876543210
TIM20SW—TIM17SW—TIM16SWTIM15SWTIM8SWTIM1SW—I2C3SWI2C2SWI2C1SW—USART1SW
  • TIM34SW (бит 25) — Тактирование TIM3 и TIM4: PCLK2 (так в RM0316) или выход VCO PLL (только у STM32F303xE, STM32F398).
    TIM34SWЗначениеМакрос CMSIS
    0PCLK1RCC_CFGR3_TIM34SW_PCLK1
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM34SW_PLL
  • TIM2SW (бит 24) — Тактирование TIM2: PCLK2 (так в RM0316) или выход VCO PLL (только у STM32F303xE, STM32F398).
    TIM2SWЗначениеМакрос CMSIS
    0PCLK1RCC_CFGR3_TIM2SW_PCLK1
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM2SW_PLL
  • UART5SW (биты 23:22) — Источник тактирования UART5 (только у STM32F303xC/xE, STM32F358, STM32F398).
    UART5SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_UART5SW_PCLK
    01SYSCLKRCC_CFGR3_UART5SW_SYSCLK
    10LSERCC_CFGR3_UART5SW_LSE
    11HSIRCC_CFGR3_UART5SW_HSI
  • UART4SW (биты 21:20) — Источник тактирования UART4 (только у STM32F303xC/xE, STM32F358, STM32F398).
    UART4SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_UART4SW_PCLK
    01SYSCLKRCC_CFGR3_UART4SW_SYSCLK
    10LSERCC_CFGR3_UART4SW_LSE
    11HSIRCC_CFGR3_UART4SW_HSI
  • USART3SW (биты 19:18) — Источник тактирования USART3 (только у STM32F303xC/xE, STM32F358, STM32F398).
    USART3SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_USART3SW_PCLK
    01SYSCLKRCC_CFGR3_USART3SW_SYSCLK
    10LSERCC_CFGR3_USART3SW_LSE
    11HSIRCC_CFGR3_USART3SW_HSI
  • USART2SW (биты 17:16) — Источник тактирования USART2 (только у STM32F303xC/xE, STM32F358, STM32F398).
    USART2SWЗначениеМакрос CMSIS
    00PCLKRCC_CFGR3_USART2SW_PCLK
    01SYSCLKRCC_CFGR3_USART2SW_SYSCLK
    10LSERCC_CFGR3_USART2SW_LSE
    11HSIRCC_CFGR3_USART2SW_HSI
  • TIM20SW (бит 15) — Тактирование TIM20: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
    TIM20SWЗначениеМакрос CMSIS
    0PCLK2RCC_CFGR3_TIM20SW_PCLK2
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM20SW_PLL
  • TIM17SW (бит 13) — Тактирование TIM17: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
    TIM17SWЗначениеМакрос CMSIS
    0PCLK2RCC_CFGR3_TIM17SW_PCLK2
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM17SW_PLL
  • TIM16SW (бит 11) — Тактирование TIM16: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
    TIM16SWЗначениеМакрос CMSIS
    0PCLK2RCC_CFGR3_TIM16SW_PCLK2
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM16SW_PLL
  • TIM15SW (бит 10) — Тактирование TIM15: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xE, STM32F398).
    TIM15SWЗначениеМакрос CMSIS
    0PCLK2RCC_CFGR3_TIM15SW_PCLK2
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM15SW_PLL
  • TIM8SW (бит 9) — Тактирование TIM8: PCLK2 или PLL × 2 (до 144 МГц) (только у STM32F303xC/xE, STM32F358, STM32F398).
    TIM8SWЗначениеМакрос CMSIS
    0PCLK2RCC_CFGR3_TIM8SW_PCLK2
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM8SW_PLL
  • TIM1SW (бит 8) — Тактирование TIM1: PCLK2 или PLL × 2 (до 144 МГц).
    TIM1SWЗначениеМакрос CMSIS
    0PCLK2RCC_CFGR3_TIM1SW_PCLK2
    1PLL × 2 (до 144 МГц)RCC_CFGR3_TIM1SW_PLL
  • I2C3SW (бит 6) — Источник тактирования I2C3: HSI или SYSCLK (только у STM32F303xE, STM32F398).
    I2C3SWЗначениеМакрос CMSIS
    0HSIRCC_CFGR3_I2C3SW_HSI
    1SYSCLKRCC_CFGR3_I2C3SW_SYSCLK
  • I2C2SW (бит 5) — Источник тактирования I2C2: HSI или SYSCLK (только у STM32F303xC/xE, STM32F358, STM32F398).
    I2C2SWЗначениеМакрос CMSIS
    0HSIRCC_CFGR3_I2C2SW_HSI
    1SYSCLKRCC_CFGR3_I2C2SW_SYSCLK
  • I2C1SW (бит 4) — Источник тактирования I2C1: HSI или SYSCLK.
    I2C1SWЗначениеМакрос CMSIS
    0HSIRCC_CFGR3_I2C1SW_HSI
    1SYSCLKRCC_CFGR3_I2C1SW_SYSCLK
  • USART1SW (биты 1:0) — Источник тактирования USART1.
    USART1SWЗначениеМакрос CMSIS
    00PCLK1 (только у STM32F303x8, STM32F328)RCC_CFGR3_USART1SW_PCLK1
    00PCLK2 (только у STM32F303xC/xE, STM32F358, STM32F398)RCC_CFGR3_USART1SW_PCLK2
    01SYSCLKRCC_CFGR3_USART1SW_SYSCLK
    10LSERCC_CFGR3_USART1SW_LSE
    11HSIRCC_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 таймеры получают удвоенную частоту шины.

Источники

  1. STMicroelectronics. RM0316: Reference manual (Rev 10) — раздел 9.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-f3 v2.3.9: заголовки CMSIS stm32f303x8.h, stm32f303xc.h, stm32f303xe.h, stm32f328xx.h, stm32f358xx.h, stm32f398xx.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

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

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

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