今天学习了时钟树的配置,让以前模糊的概念变得清晰。时钟是单片机的心脏,为外设工作提供稳定可靠地频率。晶振分为四类,HSE,HSI,LSE,LSI,就是内部和外部晶振。内部比较省事,用外部可供选择的范围大,流程如下图。基于stm32F1系列,HSE可以选用1分频和2分频,HSI只能用2分频,绝大多数情况下都是用HSE,选择8*9,得到72MHz。如果用HSI的话,最大也只能得到8/2*16,也就是64MHz,不能满足日常需求。对了,建议搭配stm32cubeMX时钟树界面来学习,那个更直观。我的想法是这样,先用HSE,坏了用HSI,用HSI时候不需要分频直接进入PLL,我发现手册有一些数电的知识,要去学习一下
oscilator 震荡器:由不同材质构成,发出特定频率
PLL 锁相环:可以分频,范围是*2-*16,就是系数乘上对应的2到16对应的数,*2,*3,*4...*16
SYSCLK:系统时钟,最大72MHz
HCLK:AHB上面的时钟,AHB是高速高性能总线,来到总线之前需要进行分频。通过两个桥分成APB1和APB2,APB1最大36MHz,APB2最大72MHz。在跨桥之前也要进行分频,两条线上面挂载很多外设,具体可以查看官方手册
CSS:时钟安全系统,当HSE不能用时切换到HSI
FCLK:自由运行时钟,在休眠模式下仍可以运行
*有一个有趣的现象:LSE的频率是32.768MHz,不像其他震荡器一样有零有整。查了一下,2的15次方刚好是32768,也就说从0到32767,依次计数,对于一个32.768MHz的频率来说,溢出一次刚好是一秒的时间。