参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

微控制器(处理器)的运行必须要依赖周期性的时钟脉冲来驱动——往往由一个外部晶体振荡器提供时钟输入为始,最终转换为多个外部设备的周期性运作为末,这种时钟“能量”扩散流动的路径,犹如大树的养分通过主干流向各个分支,因此常称之为“时钟树”。在一些传统的低端8位单片机诸如51,AVR,PIC等单片机,其也具备自身的一个时钟树系统,但其中的绝大部分是不受用户控制的,亦即在单片机上电后,时钟树就固定在某种不可更改的状态(假设单片机处于正常工作的状态)。比如51单片机使用典型的12MHz晶振作为时钟源,则外设如IO口、定时器、串口等设备的驱动时钟速率便已经是固定的,用户无法将此时钟速率更改,除非更换晶振。

而STM32微控制器的时钟树则是可配置的,其时钟输入源与最终达到外设处的时钟速率不再有固定的关系,本文将详细解析STM32微控制器的时钟树和STM32CubeMX Clock Configuration的配置关系。

STM32时钟树中有6种时钟源,如下所示:

  • HSE:高速外部时钟;
  • LSE:低速外部时钟;
  • HSI:高速内部时钟;
  • LSI:低速内部时钟;
  • MSI:多速内部时钟;
  • PLLCLK:锁相环倍频输出。

以STM32L011G4U6微控制器为例,时钟树如下,左侧为6种时钟源时钟,经过一些运算和转换到达右边的系统时钟和外设时钟。

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

时钟树并不难读懂,沿着导线耐心一步步可以很快理解,例如系统时钟可支持MSI、HSI16、HSE和PLLCLK四种时钟源配置,其中HSI16时钟源可支持倍频器分频(1倍和4倍),PLLCLK锁相环倍频输出可支持HSI16和HSE时钟源两种时钟源配置,并且进行倍频输出(预分频寄存器和时钟倍频寄存器配置)。

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

此时打开STM32CubeMX,选择STM32L011G4U6微控制器,打开Clock Configuration,可以发现和STM32L011G4U6时钟树基本一致,选择合适的时钟源和倍频,即可便捷快速实现相关配置(时钟频率越低,功耗越小,过低可能部分外设无法驱动)。

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

需要注意,部分配置不可选是由于没开启相关的IO配置,例如HSE时钟源。

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

开启相关IO配置即可。

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

参照STM32时钟树配置STM32CubeMX Clock Configuration(STM32L011G4U6为例)

上一篇:【STM32】浅析STM32时钟树


下一篇:(III)AOP:第七节:环绕通知