1.STM32时钟树总框图如下图所示
后经过学习原子哥的讲解,使我对时钟树有了更加深刻的认识。
首先图中蓝色的正方形是STM32可能用到的时钟源。分别是HSI、HSE(*)、LSE、LSI、PLL(严格来说,PLL是由HSE或HSI生成,并不单独作为一个时钟源)
其中最常用的是HSE,它一般由外部晶振产生,比较稳定。而HSI是由内部RC振荡电路产生,其稳定性相对较差,因此一般作为应急使用。
HSE经OSC_IN管脚管脚进入,当确定 PLL 时钟来源的时候, HSE 可以不分频或者 2 分频,这个由时钟配置寄存器 CFGR 的位 17: PLLXTPRE 设置,我们一般设置为 HSE不分频。然后进入时钟配置寄存器 CFGR 的位 16: PLLSRC。再由时钟配置寄存器 CFGR 的位21-18: PLLMUL[3:0]设置几倍频[2..16],一般设置为x9倍频,即72MHz。再经过系统时钟时钟配置寄存器 CFGR 的位1-0:SW[1:0]设置。我们这里设置系统时钟: SYSCLK = PLLCLK = 72M。再配置三条总线的倍频因子(AHB、APB1、APB2)。经过AHB1分频后仍是72MHz,再进经过APB1 2分频后得到36MHz,送给APB1外设。
另一部分经过APB2 1分频后送给APB2外设。至此系统时钟配置完毕。
2(*).stm32f10x_rcc.h文件中声明的库函数的含义及用法
2.1库函数及其大致分类
其中,1.时钟使能配置,主要是配置哪一个时钟源被使能,注意与4(外设时钟使能)相区别
2.时钟源相关,主要是用来选择用那个时钟源来作为时钟信号(对应时钟树)中灰色的那几个图形
3.分频系数选择配置:字面意思,就是配置各时钟的分频系数