参考《STM32中文参考手册_V10》,研究CubeMX中有关时钟树配置。

一、系统时钟配置

三种不同的时钟源可被用于驱动系统时钟(SYSCLK):

  • HSI振荡器时钟
  • HSE振荡器时钟
  • PLL时钟

时钟源选择对应时钟配置寄存器(RCC_CFGR)中的SW[1:0]位。


CUBEMX H750 时钟 cubemx配置时钟树_CUBEMX H750 时钟

三种不同的时钟源可被用于驱动系统时钟

MCU中除了上述三种可用于驱动系统时钟的时钟源以外,还有2种二级时钟源:

  • LSI:40kHz低速内部RC,可用于驱动独立看门狗和通过程序选择驱动RTC
  • LSE:32.768kHz低速外部晶体也可用于通过程序选择驱动RTC

CUBEMX H750 时钟 cubemx配置时钟树_嵌入式硬件_02

独立的二级时钟源

高速外部时钟信号(HSE)可由两种时钟源产生:HSE外部晶体/陶瓷谐振器;HSE用户外部时钟。这部分在前面介绍RCC时有涉及:

CUBEMX H750 时钟 cubemx配置时钟树_时钟配置_03

HSE时钟

HSI时钟信号由内部8MHz的RC振荡器产生,可以直接作为系统时钟或在2分频后作为PLL输入。HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟,其启动时间比HSE晶体振荡器短,但时钟频率精度较差。


CUBEMX H750 时钟 cubemx配置时钟树_stm32_04

HSI时钟

内部PLL可以用于倍频HSI或HSE的输出时钟。PLL的设置包括:选择HSI振荡器除以2或HSE振荡器为PLL的输入时钟;选择倍频因子。

PLL的配置对应:时钟配置寄存器(RCC_CFGR)中的PLLMUL位(对PLL的分频系数进行配置)、时钟配置寄存器(RCC_CFGR)中的PLLXTPRE位(配置HSE作为PLL输入前是否分频)、时钟配置寄存器(RCC_CFGR)中的PLLSRC位(配置PLL输入时钟源(HSI的二分频信号或HSE))。


CUBEMX H750 时钟 cubemx配置时钟树_时钟配置_05

PLL

MCU允许输出时钟信号到外部MCO引脚(必须对相应引脚进行配置),以下4个时钟信号可以被选座MCO时钟:

  • SYSCLK
  • HSI
  • HSE
  • 除以2的PLL时钟

该部分的配置对应时钟配置寄存器(RCC_CFGR)中的MCO[2:0]位。


CUBEMX H750 时钟 cubemx配置时钟树_嵌入式硬件_06

时钟输出

二、总线时钟配置

SYSCLK的频率确定后,需要进一步配置外设时钟。

对应AHB预分频通过时钟配置寄存器(RCC_CFGR)中的HPRE[3:0]位。


CUBEMX H750 时钟 cubemx配置时钟树_stm32_07

AHB预分频

APB1(低速APB预分频)配置对应时钟配置寄存器(RCC_CFGR)中的PPRE1[2:0]位。

APB2(高速APB预分频)配置对应时钟配置寄存器(RCC_CFGR)中的PPRE2[2:0]位。


CUBEMX H750 时钟 cubemx配置时钟树_单片机_08

APB1和APB2预分频

AHB、APB1、APB2是stm32的三条时钟总线,分别对应不同的外设,推荐参考:

ADC的时钟配置与其他外设独立,ADC预分频对应时钟配置寄存器(RCC_CFGR)中的ADCPRE1[1:0]位。


CUBEMX H750 时钟 cubemx配置时钟树_单片机_09

ADC预分频

三、小结

        总体上,掌握两个步骤即可:1)配置SYSCLK;2)配置AHB、APB1、APB2。