时钟树的概念

STM32的时钟树是由多个时钟源和时钟分频组成的,为STM32芯片提供各种时钟信号。也就是说,在使用STM32的时候,所有的频率和时钟都是通过时钟树产生的。时钟树是STM32为了实现低功耗而设计的功能完善构成复杂的时钟系统,它可以根据不同的外设和应用场合,选择合适的时钟源和频率,以提高系统性能和降低功耗

STM32的基础时钟源有4个HSI振荡器时钟 、HSE振荡器时钟 、LSI振荡器时钟 、LSE振荡器时钟

系统时钟(SYSCLK):CPU内核工作的机器周期,决定了系统运行的速度
AHB总线时钟(HCLK):高性能总线工作的频率,连接CPU、内存、DMA等高速设备;
APB1和APB2总线时钟(PCLK1和PCLK2):低速总线工作的频率,连接各种外设如GPIO、UART、TIM等;
RTC时钟(RTCLK):实时时钟工作的频率,用于提供精确的时间信息;
USB时钟(USBCLK):USB外设工作的频率,用于实现USB通信功能;
MCO时钟输出(MCO):微控制器时钟输出引脚,可以输出不同的时钟信号给外部设备;

(1)首先看内部低速时钟LSI和外部低速时钟LSE

STM32F407:RCC使用HSE/HSI配置时钟(时钟树)_stm32

内部低速时钟LSI时钟频率为32kHZ,有两个分支,一个是为独立看门狗提供时钟,另一个为RTC提供时钟。

外部低速时钟LSE外接引脚OSC32_IN和OSC32_OUT接外部晶振的引脚,进来的频率是32.768khz,进来后只有一个走向为RTC提供时钟。

选择器是4选1选择器,一共有3个输入,前两个是LSI和LSE,还有一个来自下方的HSE,中间经过一个/2到31的分频器。

总结:看门狗智能由内部低速时钟提供时钟,RTC由LSI、LSE或者HSE经过分频后提供时钟。具体使用哪一个需要在代码里面配置。

(2)看下半部分

STM32F407:RCC使用HSE/HSI配置时钟(时钟树)_stm32_02

系统时钟SYSCLK通过一个选择器来选择,输入源是HSI(内部高速时钟),HSE(外部高速时钟),PLL锁相环。

由于内部高速时钟和外部高速时钟都无法提供168Mhz的频率,所以系统时钟的直接来源应该是PLLCLK,所以在配置的时候需要将系统时钟选择到锁相环上,

PLL锁相环如何产生168Mhz的频率?

STM32F407:RCC使用HSE/HSI配置时钟(时钟树)_嵌入式硬件_03

内部时钟HSI和外部时钟 HSE会来到选择器,由编程控制具体选择HSI还是HSE;

经过选择器选择后,会有一个分频器 “/M”一般这个M就是对应的多少M。下方有一个xN,这个xN是倍频的意思,xN是需要编程时进行控制。