1.时钟树
1.1 时钟
时钟是具有周期性的脉冲信号,最常用的是占空比50%的方波。时钟是单片机的脉搏。
1.2 时钟树
当一个电路越复杂,在达到正确的输出结果前,它可能因为延时会有一些短暂的中间状态,而这些中间状态有时会导致输出结果会有一个短暂的错误,这叫做电路中的“毛刺现象”,如果电路需要运行得足够快,那么这些错误状态会被其它电路作为输入采样,最终形成一系列的系统错误。设计时序电路控制替代纯粹的组合电路,在每一级输出结果前对各个信号进行采样,从而使得电路中某些信号即使出现延时也可以保证各个信号的同步。在 MCU 设计时就设计了专门用于控制时序的电路,在芯片设计中称为时钟树设计。由此设计出来的时钟,可以精确控制单片机系统。
1.2.1时钟源
输入时钟源主要包括:HSI,HSE,LSI,LSE。从时钟频率分为高速时钟源和低速时钟源,从来源分为外部时钟源和内部时钟源。
2.配置系统时钟
-
配置HSE_VALUE
告诉HAL库外部晶振频率,stm32xxxx_hal_conf.h
-
调用SystemInit()函数
在启动文件中调用, 在system_stm32xxxx.c定义
-
选择时钟源,配置PLL
通过HAL_RCC_OscConfig()函数设置
-
选择系统时钟源,配置总线预分频
通过HAL_RCC_ClockConfig()函数设置
-
选择扩展外设时钟(可选)
通过HAL_RCCEx_PeriphCLKConfig()函数设置