时钟框图
-
STM32F103ZETx系统时钟框图(cubemx时钟配置界面)
LSE/RTC/LSI
- 左上角为LSE为外部低速时钟,晶振频率为32.768KHz,为RTC提供低功耗,但高精度的时钟源头
- RTC(real-time clock)为独立的定时器,其提供了一组连续运行的计数器,可以使用适合的软件来提供时钟-日历功能,在cubemx中RTC默认连接的时钟源是LSI(低速内部时钟),如果更改RTC时钟源需要打开在Timers打开RTC功能。
- LSI为内部低速时钟,时钟频率约为40kHZ实际为30~60kHZ之间,因为其有温度漂移,受温度影响较大,可以从图中看出看门狗(IWDG)的时钟就来自LSI
系统时钟及总线时钟
-
系统时钟的来源可以有三个来源,分别为HSI,HSE,PLLCLK
-
HSI为内部高速时钟,频率为8MHz,HSE为外部高速时钟,需要根据实际的晶振频率来设置,通常为8MHz
-
可以从图中看出如果系统时钟直接使用HSI或HSE的话,就是8MHz,频率较低,所以通常使用PLLCLK
-
PLLCLK为锁相环时钟,可以由HSI或者HSE倍频得来,通常使用HSE倍频得到,如果使用HSI的话,通常达不到官方推荐的系统时钟频率
-
从图中可以看出系统时钟往右走,为AHB系统总线,其时钟为HCLK(具体设置时可以直接在设置HCLK最大频率然后回车,cubemx直接把分频和倍频的参数设置好)
-
AHB总线分出APB1总线和APB2总线,其时钟分别为PCLK1和PCLK2
-
相应总线的挂载外设如下图所示(可详见STM32F10x的参考手册)
图中其余时钟
- MCO时钟(microcontroller clock output),可以通过想用的GPIO输出时钟信号,其来源如上图所示
- Cortex系统定时器,(Cortex System timer),SysTick时钟,滴答定时器它能按设定的时间产生一次中断。控制工程代码中随处可见形如delay_ms()之函数,通常使用8分频,设置为9M
- FCLK(free-runing clock)时钟是自主运行时钟,给cpu内核提供时钟信号,cpu的主频就是指此频率
总结
时钟源 | 来源 | 作用 |
---|---|---|
HSE | 外部高速时钟 | 通常经过分频倍频等操作为系统时钟提供时钟源 |
HSI | 内部高速时钟 | 通常为系统时钟的备用时钟源 |
LSE | 外部低速时钟 | 通常为RTC提供时钟源 |
LSI | 内部低速时钟 | 通常为看门狗提供时钟源 |
MCO | 系统输出时钟源 | 可以通过IO口输出系统的时钟信号 |
- 当开启CSS时,外部高速时钟(HSE)无法工作时,会自动切换道HSI作为系统时钟,不过此时的频率只有8MHz