文章目录
-
- 系统时钟(SYSCLK)
- 附加时钟源
- [MSI(**MSIS and MSIK**)时钟](#MSI(MSIS and MSIK)时钟)
-
[RCC 相关寄存器](#RCC 相关寄存器)
-
单片机是由一系列复杂的数字电路组合而成,时钟信号,是同步各个数字电路动作的基础。类似于大合唱中,指挥手中的指挥棒,用音乐的节拍来同步大家唱的节奏
-
单片机的时钟就是单片机的心脏,所有模块都依赖时钟来驱动(这也意味着停止提供模块的时钟,会使该模块停止工作)
-
时钟周期:又称为振荡周期,是指时钟源信号完成一次负脉冲和正脉冲振荡的时间,一般的占空比为50%

- 系统时钟:指CPU运转所使用的时钟频率,一般是在内部或外部时钟信号源频率的基础上,经过分频和倍频而来,频率比信号源频率要高
锁相环PLL
- 产生可编程的其他频率的时钟信号

- PLL工作的基本原理是将压控振荡器的输出经过分频后与基准信号共同输入到鉴相器PD,PD通过比较这两个信号的频率差,输出一个代表两者差异的信号,再经过低通滤波器转变成一个直流脉冲电压去控制VCO使它的频率改变。这样经过一个很短的时间,VCO的输出就会稳定下来。所以PLL并不是直接对晶振进行倍频,而是将频率稳定的晶振作为基准信号,与PLL内部振荡电路生成的信号分频后进行比较,使PLL输出的信号频率稳定
基本频率源
精度:ppm的概念,百万分之一,例如:50ppm 相当于 0.005%,振荡1000,000次,误差50次
片内集成的RC振荡源
- 谐振频率: f 0 = 1 2 π R C f_0=\frac{1}{2\pi RC} f0=2πRC1
- 特点:
- 起振快,但精度低,一般在1%左右
- 可靠性高,是STM32默认的时钟源
- 对于时钟精度要求不高的场合,可以节省片外时钟源的成本
- 对于如USB、以太网、I2S和RTC等不适合使用
片外晶体
石英晶体谐振器
- 特点:精度高(几十ppm),价格便宜,需要外部匹配相应的负载电容



陶瓷谐振器
- 特点:精度略低(几千ppm),价格便宜,需要外围电路起振,类似无源晶体谐振器

与单片机的接口

起振原理
- 皮尔斯振荡电路

片外时钟源
有源晶振
- 特点:精度高(几十ppm),不用外围电路,通电就能产生相应频率的方波,价格贵。有带温度补偿等高精度型号


与单片机接口

时钟源的配置



系统时钟(SYSCLK)
- 系统时钟(SYSCLK)可由以下四种不同的时钟源驱动
- HSI:(high-speed internal RC oscillator clock)高速内部RC振荡器时钟
- MSIS:(multi-speed internal RC oscillator clock)多速度内部RC振荡器时钟
- HSE:(high-speed external crystal or clock)高速外部晶体或时钟,一般范围为4至50 MHz
- PLL1时钟


附加时钟源
- MSIK:(multi-speed internal RC oscillator clock used for peripherals kernel clocks)用于外设内核时钟的多速内部RC振荡器时钟
- LSI:(low-speed internal RC oscillator clock)低速内部RC振荡器时钟,32 kHz/250 Hz,用于驱动独立看门狗,并可选择用于RTC以实现从停止/待机模式自动唤醒
- LSE:(low-speed external crystal or clock)低速外部晶振/时钟,必须是32.768 kHz,可选择驱动实时时钟(rtc_ck)
- HSI48:(High-speed internal 48 MHz RC oscillator clock)48 MHz内部RC时钟,可驱动OTG_FS、USB、SDMMC和随机数发生器(RNG)
- SHSI:(secure high-speed internal RC oscillator clock)安全高速内部RC时钟,频率为48MHz,驱动SAES加密模块
- PLL2和PLL3时钟
MSI(MSIS and MSIK)时钟
- MSI由内部的RC振荡器产生
- 每种振荡器有一个预分频器,可以1,2,3,或4 分频
- MSIS可以选作系统时钟
- MSIK可以选作一些外设的核心时钟

stm32u575时钟树

各个总线最大频率
- 系统时钟的最大频率是 160 MHz
- 复位后,MSIS被选作系统时钟源,频率是 4MHz
- 不同电压范围下,各个总线的最大频率见下表

获取当前系统时钟的方法
- HAL库函数,在 stm32u5xx_hal_rcc.c 中,头文件是 stm32u5xx_hal_rcc.h
c
uint32_t HAL_RCC_GetSysClockFreq(void);
时钟输出能力
MCO
- 使用PA8脚,对外输出
- 主要功能:
- 可以作为其他外设的时钟源
- 可以观察相应的波形是否符合预期

LSCO
- 使用PA2脚,对外输出

RCC 相关寄存器
复位相关寄存器
- 寄存器命名规则:RCC_XXXXRSTRn
- 对应的位清零为无效;置位为复位对应的外设
- 外设相关寄存器置为复位值
- 外设相关功能到上电复位状态
- HAL库相关操作宏函数
- 在库函数头文件:
stm32u5xx_hal_rcc.h中 - 定义为
__HAL_RCC_外设名称_FORCE_RESET() - 例如:
__HAL_RCC_GPIOA_FORCE_RESET()
- 在库函数头文件:
时钟控制相关寄存器
- 寄存器命名规则:RCC_XXXXENRn
- 对应的位 清零为 不使能时钟,相当于关闭功能;置位为使能时钟,功能允许使用
- 由CubeMX生成的初始化代码,已经完成了相关的配置
- HAL库相关操作宏函数
- 在库函数头文件:
stm32u5xx_hal_rcc.h中 - 时钟使能,定义为
__HAL_RCC_外设名称_CLK_ENABLE() - 例如:
__HAL_RCC_GPIOA_CLK_ENABLE() - 时钟无效,定义为
__HAL_RCC_外设名称_CLK_DISABLE() - 例如:
__HAL_RCC_GPIOA_CLK_DISABLE()
- 在库函数头文件: