学习STM32时钟系统

272 阅读1分钟

1.时钟树

1.1 时钟

时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波。时钟是单片机的脉搏。

image.png

1.2 时钟树

当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。设计时序电路控制替代纯粹的组合电路,在每一级输出结果前对各个信号进行采样,从而使得电路中某些信号即使出现延时也可以保证各个信号的同步。在 MCU 设计时就设计了专门用于控制时序的电路,在芯片设计中称为时钟树设计。由此设计出来的时钟,可以精确控制单片机系统。

image.png

1.2.1时钟源

输入时钟源主要包括:HSI,HSE,LSI,LSE。从时钟频率分为高速时钟源和低速时钟源,从来源分为外部时钟源和内部时钟源。

image.png

2.配置系统时钟

  1. 配置HSE_VALUE

    告诉HAL库外部晶振频率,stm32xxxx_hal_conf.h

  2. 调用SystemInit()函数

    在启动文件中调用, 在system_stm32xxxx.c定义

  3. 选择时钟源,配置PLL

    通过HAL_RCC_OscConfig()函数设置

  4. 选择系统时钟源,配置总线预分频

    通过HAL_RCC_ClockConfig()函数设置

  5. 选择扩展外设时钟(可选)

    通过HAL_RCCEx_PeriphCLKConfig()函数设置