STM32F103 时钟系统明晰

  本人小白一个,利用课外时间自学STM32。个人感觉,STM32的时钟系统什么的,感觉很复杂,对整个时钟系统的概念都很模糊,只知道该怎么配置,却不知道是怎么来的,所以就花了一天功夫专门上网搜集了一下资料,整理之后在此用通俗易懂的语言分享出来。如有用词不当以及总结错误的地方,还希望各位大佬指出。博主也好及时进行自我纠正,在此先谢过了。

经常在配置外设时,总会有一句开启APB1或者APB2下的哪个外设的时钟,还有什么AHB时钟,SYSCLK时钟,让人很是很头疼。下面,你只需要记住这些死知识就够了:

SYSCLK: 系统时钟,最大可以达到72MHZ。

HCLK: AHB总线时钟,由SYSCLK分频得到,一般都是设置为不分频。

经过时钟总线桥,HCLK又被分为PCLK1和PCLK2,PCLK1对应外设APB1,另一个对应APB2。

APB1最大可达36MHZ,而APB2最大可达72MHZ.这个时候就需要搞清楚开启外设时钟怎么又与APB1、2这两个扯上关系了?

我觉得就像是上下级之间的关系,AHB通过预分频,确定PCLK1(APB1)时钟的频率,而比如定时器2~7以及其他的外设又是挂载在APB1之下的,就像AHB是大boss,而APB1、2又是部门负责人,最下面就是员工(各种外设)。

最后还想补充一点:定时器部分,APB1、APB2的预分频如果是来自与AHB的一份频,(只拿APB1举例)从APB1到定时器之间的

倍频器就不起作用了,如果APB1是来自AHB的2以及更多次分频(2的N次幂),那么倍频器就起作用了(但是只能将分频后的MHZ*2)。所以这里还是有点不好理解的。但是小伙伴们有疑惑了,为什么不直接设置呢?还要拐弯抹角的,让人理解费劲。

经过百度后,我的出了正确结果:有人会问,既然需要TIM2~7的时钟频率=36MHz,为什么不直接取APB1的预分频系数=1?答案是:APB1不但要为TIM2~7提供时钟,而且还要为其它外设提供时钟;设置这个倍频器可以在保证其它外设使用较低时钟频率时,TIM2~7仍能得到较高的时钟频率。

多想想,我觉得好像还有点道理。

好了,对于时钟系统,我的分享就是这些了。

我是西伯利亚螂,也可以叫我小强。

我曾许下十年,只为最美的遇见。

猜你喜欢

转载自blog.csdn.net/qq_41821562/article/details/82820786