STM32F407时钟系统解析

1. STM32F407时钟系统框图

时钟作为一个单片机的脉搏,有必要好好了解一下。

1.1 为什么时钟需要被分为许多频率?

在传统51单片机中,一般只有一个时钟频率,而stm32有多个分频有以下原因: - 减小功耗 - 为了增强抗干扰能力 - 为了给不同外设提供时钟

1.2 F407的时钟来源

  • LS IRC:低速内部时钟(32Khz 内部RC震荡产生 可提供给:看门狗、RTC)
  • LSE DSC:低速外部时钟(32.768KHz可提供给:RTC)
  • HSI RC:高速内部时钟 (16MHz内部RC产生 可提供给:系统时钟、PLL)
  • PLLCLK:锁相环时钟输出,分为PLL(可提供给:系统、USBOTG)与PLLI2S(可提供给:I2S(音质需求))
  • HSE OSC:高速外部时钟(4-26Mhz 外接晶振 可提供给:RTC、输出引脚(PA8(MCO1),PC9(MCO2)))

提供给PLLCLK的时钟可能来源如下: - HSI - HSE

提供给系统的时钟可能来源如下: - HSI - HSE - PLLCLK

MCO1的可能来源 - HIS - LSE - HSE - PLL

MCO2的可能来源 - HSE - PLL - SYSCLK - PLLI2S

如何计算PLLCLK:

无论HSI或HSE作为PLLCLK时钟来源,都首先经过/M的分频 如图然后经过xN、/p 输出PLLCLK即如下公式(\(f\)为HSI或HSE输入):

\[ PLLCLK = \frac{f}{M} \times \frac{N}{P} \]

若使用8Mhz外部时钟则系统运行频率:

\[ PLLCLK = \frac{8Mhz}{8} \times \frac{336}{2} = 168(Mhz) \]

1.3系统时钟的去向

SYSCLOCK去向: - 以太网RTP时钟 - AHBPRESC - APBPRESC(APB1、APB2)在AHB分频之后

2.F4固件库中SystemInit()时钟系统初始化函数

调用时机:在系统复位之后,在执行main函数之前。

基本为RCC寄存器的配置,如:使能时钟源、读取就绪状态、重置寄存器、关闭所有系统中断、启动CSS时钟安全寄存器。

2.1 初始化之后的状态

  • SYSCLOCK:168Mhz
  • AHB:168Mhz
  • APB1:42Mhz
  • APB2:84Mhz
  • PLL:168Mhz

初始化之后若需要获取系统频率,可以访问SystemCoreClock变量来得到


STM32F407时钟系统解析
http://jiangno.com/2024/11/29/24_11_29_STM32F407Clock/
作者
江の
发布于
2024年11月29日
许可协议