RCC (Reset and Clock Control)复位和时钟控制
以下以F1为例
复位
时钟
先看一个总的图:
上图出自CubeMX,由于本文更加偏向理解,并不会很详细地介绍每一个部分,所以我比较草率地将整个时钟树分为三部分,可能有错误存在,欢迎大家指出!
1 时钟源
HSE
高速外部时钟
外部时钟源的频率可达到50MHz
HSI
高速内部时钟
由8MHz的内部RC振荡器产生,启动时间比HSE晶体振荡器短,但是精度低。
LSE
低速外部时钟,外接32.768KHZ的外部时钟源
LSI
低速内部时钟,LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和 自动唤醒单元提供时钟。LSI时钟频率大约40kHz(在30kHz和60kHz之间)。
上述时钟源中,LSI作为看门狗和RTC的时钟单独使用,HSE和HSI同PLL组合,可以作为系统时钟的时钟源。PLL作为分配器可以产生不同频率的PLL时钟信号。
手册中将PLL时钟作为一个时钟源,此处省略,详细介绍可看手册RCC一节。
2 系统时钟
系统时钟有三个时钟源,即HSE、HSI和PLL时钟。
在CubeMX中对时钟进行配置时,记得要开启HSE的外部晶振。
3 外设时钟
由于时钟的提出就是考虑到不同外设对不同时钟频率的需求不一样,所以对于不同的外设,系统时钟频率又被分配器分为了不同的频率给不同的外设。
其中可以重点关注的为APB1和APB2。
APB1和APB2总线上挂载了很多不同的外设,如下图所示:
所以在使用被挂载的外设时,需要关注到此时APB1和APB2的频率为多少。比如使用定时器时,就需要知道输入的频率为多少,然后才能计算PSC和ARR。
本文只是基于本人需要注意的点写下的一篇文,很多内容都没有详细介绍,如果需要更加详细的介绍的可以参考我放在“参考”中的文章,个人认为讲的非常详细,可以搭配手册来看。