前言:
主要阐述本人对STM32时钟和系统时钟以及定时器时钟的见解。
本篇文章以stm32f407为例,其他芯片都是类似的
时钟源:
通过官方参考手册6.2时钟章节,可以看出有4种时钟源
LSI:内部低速时钟
LSE:外部低速时钟
HIS:内部高速时钟
HSE:外部高速时钟
说明:
以下时钟的选择都可以通过RCC控制器来进行配置
一:IWDG&RTC
独立看门狗时钟:LSI内部低速时钟提供
RTC时钟:如图,但LSE外部低速时钟是RTC的专用时钟
二:输出时钟
这是芯片内部向外发出时钟频率的通道,一般用来做测量频率。
三:系统时钟
STM32的系统时钟(SYSCLK)可以来源于多个时钟源,包括HSI(高速内部时钟)、HSE(高速外部时钟)、PLLCLK(锁相环时钟)等。这些时钟源经过选择和配置后,最终确定SYSCLK的频率。
STM32F407的系统时钟(SYSCLK)可以配置为高达168MHz(官方推荐的最高稳定时钟频率),这通常是通过外部高速时钟源(如HSE)经过锁相环(PLL)倍频后得到的。
如:外接的HSE为8Mhz,进来M分频,进入锁相环进行N倍频,再P分频就得到主频168Mhz
8Mhz(HSE) / 8(M分频) * 336(N)/ 2(P分频)== 168Mhz
系统时钟(SYSCLK)经过AHB分频器得到HCLK(高速总线时钟)就是给AHB总线提供的时钟源
HCLK还给CPU内核提供时钟,这就是我们所说的主频
四:定时器时钟
AHB总线时钟(HCLK)经过APB分频器分为APB1和APB2;
注意:
定时器是挂载在APB1或APB2总线上,但它们的时钟并不是所挂着总线的时钟
APB1CLK:AHB/4==42M 给到APB1总线上的外设时钟是42M,给到APB1总线上的定时器时钟为84M
if(APBx是没有经过分频的就 * 1)
else 就 * 2 ---------此芯片APB1是经过四分频的,所以*2 即 84M
APB2CLK:AHB/4==84M 给到APB2总线上的外设时钟是84M,给到APB2总线上的定时器时钟为168M
if(APBx是没有经过分频的就 * 1)
else 就 * 2 ---------此芯片APB2是经过二分频的,所以*2 即 168M
这可以当它是一条公式吧~