依据手册看时钟树的话,说实话我看的很痛苦,但是通过stm32cube软件看时钟树,就很舒服了,他的依据来源于我们的手册,但是感觉更加清晰。下面我将结合stm32cube和手册给大家简单的说一下时钟树。
我们打开stm32cube软件,选择到stm32F103C8T6的单片机,然后啥也不要干,直接点击RCC.然后我们会看到三个Clock,分别是High Speed Clock(HSE)即高速外部时钟,Low Speed Clock(LSE)即低速外部时钟,Master Clock Output即时钟输出功能。
接着我们来说一下这三个时钟的管辖范围,High Speed Clock(HSE)管的是区域2,Low Speed Clock(LSE)管的是区域1,Master Clock Output管的是区域3。
然后我们说一下怎样才可以开启每个区域的管理,回到初始界面RCC
我们可以看到如果我们想要打开High Speed Clock(HSE)和Low Speed Clock(LSE)的时钟,我们有两个选择,分别是BYPASS Clock Souce和Crystal/Ceramic Resonator,那他们到底是什么呢?我查了一下手册
BYPASS Clock Souce这个旁路时钟我们目前还用不到,用的最多的还是Crystal/Ceramic Resonator模式,在这种模式下,HSE由石英晶体产生的4~16KHZ外部时钟。时钟树里面我们是输入的8KHZ,你也可以在4~16KHZ任意宿输入。LSE由晶体产生一个32.768kHz的时钟。
打开Master Clock Output只需要点击前面的方框打钩即可。
知道为什么这么选之后,我们以区域2为例接着看时钟树。
选择HSE的Crystal/Ceramic Resonator模式,我们可以发现打开HSE后,HSI也自动打开了。HSE是高速外部时钟,可以产生4~16KHz的时钟且精度高。HSI是高速内部时钟,只能产生8KHz的时钟,且精度较低。
接着我们看向SYSCLK(系统时钟),我们会发现有三路指向他,分别是HSI,HSE,PLLCLK。HSI,HSE直接指向SYSCLK没什么说的,重点看向PLL锁相环那里,他可以接受来自HSI的二分频或者HSE的一分频或二分频(手册上说的),然后通过锁相环倍频,调整1~9倍给PLLCLK,再给SYSCLK。
下面才是重头戏
AHB又称先进高性能总线,他就像stm32的主干道,stm32的处理器,内存,DMA,还有各种外设都连接在他上面,通过它进行数据通信。时钟树里,AHB指向HCLK,只因为HCLK是AHB的数据总线。继续看时钟树,你会发现他连接到了内存,内核,DMA;系统滴答定时器;自由运行时钟;APB1外设;APB2外设。至于有哪些外设,可以看看手册
同时手册告诉我们APB1的最大速度为32KHZ,APB2的最大速度为72KHZ.而且无论是APB1还是APB2,只要它们的预分频器是1,那么定时器那里就乘以1;只要不是1,定时器那里就乘以2,大家可以下载stm32cube试试,手册里也有说明。
为什么我要把FCLK自由运行时钟单独拿出来呢?因为虽然他的时钟来源看似来自HCLK,但是却和HCLK一样来自SYSCLK的同一个分频器。那FCLK有啥作用呢?这就要说一下stm32低功耗模式之一的“停止模式”,当我们为了节省电量,AHB总线会停止运行HCLK进而停止时钟脉冲传输,当我们需要唤醒stm32时,作为自由人的FCLK就可以进行外部中断来唤醒stm32。第二区域还有左上角的To FLITFCLK,他是Flash编程接口的时钟,只来自于8KHZ的HSI。USB Prescaler是用来给USB功能提供时钟,这个时钟来自PLL锁相环。
第二区域还要给大家补充一个小细节,SYSCLK(系统时钟)这里,我们会发现当我们以HSE或PLLCLK指向SYSCLK时,下面会出现一个Enable CSS,他代表时钟安全系统,当HSE发生故障时,可以立刻将时钟切换到HSI并且可以产生中断让我们可以做紧急处理。
至于区域1和区域3,以后遇到再说吧。