系统时钟的来源:1 HSE振荡器时钟 、 2 HSI 振荡器时钟 、3 PLL振荡器时钟 。其中PLL是常用的系统时钟来源。
时钟树
上图中黄色的实线是系统时钟配置的流程。红色框框起来的是寄存器RCC的响应控制位。
1:8M
的初始时钟在经过PPLXTPRE
选择的倍频因子/1
得到的频率为8M /1 = 8M
大小不变。
2:这个时候来到PPLSRC
该位控制的是选择HSI RC
还是 HSE OSE
作为时钟源,通过控制时钟配置寄存器(RCC_CFGR)
设置PLLSRC
的值选择 HSE OSE
作为时钟源。频率大小还是8M
3:下一步就是PLLMUL
控制位选择的倍频因子为x9
那么得到的频率大小为 8M x9 = 72M
。
4:接下来是SW控制位。它的作用是选择那个时钟输入到SYSCLK中去。这里选择PLLCLK
整个时候时钟频率的大小还是72M
5:接下来就是AHB时钟预分频器可选倍频因子为/1 /2 /3 /4 /5 ... /512
在这里倍频因子还是选择/1所以时钟还72M。
6:接下来便是APB1和APB2
这两个挂载在AHB时钟线上的时钟总线。可以根据需要选择。
NOTE:特别注意APB1的最大时钟频率不能超过36。当从AHB
出来的时钟频率为72的时候,倍频因子
N只能是72 /N =< 36
并且N
只能是/1,/2,/4,/6,/8,/16
其中的一个。同样APB2
的最大时钟频率是72M
。假设从AHB出来的频率大小为 AHB-N,倍频因子为N 那么有公式AHB-N /N =< 72
并且N只能是/1,/2,/4,/6,/8,/16
其中的一个