五个时钟源
LSI 时钟
LSI时钟的全称是"Low-Speed Internal"时钟,俗称低速的内部时钟,频率32hz,有内部的RC振荡器产生的,精度不高,主要给独立看门狗提供,价格便宜。
LSI 时钟
LSE时钟的全称是"Low-Speed External"时钟,俗称低速的外部时钟,外接精确地 32.768 kHz 低速外部 (LSE) 晶振或陶瓷谐振器,晶振稳定性高,可作为实时时钟外设 (RTC) 的时钟源来提供时钟/日历或其它定时功能,具有功耗低且精度高的优点。
HSE 时钟
高速外部时钟信号 (HSE) 有 2 个时钟源:HSE 外部晶振/陶瓷谐振器、HSE 外部用户时钟,HSE 的特点是精度非常高。可由图可看(4-26MHz):
通过上面的分频器给RTCCLK使能(一般是外部LSE进行使能):
PLL 配置
STM32F4xx 器件具有两个 PLL: 主 PLL (PLL) 由 HSE 或 HSI 振荡器提供时钟信号,并具有两个不同的输出时钟:
第一个输出用于生成高速系统时钟(最高达 168 MHz)
主 PLL 时钟的时钟源要先经过一个分频系数为 M 的分频器,然后经过 倍频系数为 N 的倍频器出来之后的时候还需要经过一个分频系数为 P(第一个输出 PLLP)或 者 Q(第二个输出 PLLQ)的分频器分频之后,最后才生成最终的主 PLL 时钟。 例如我们的外部晶振选择 8MHz。同时我们设置相应的分频器 M=8,倍频器倍频系数 N=336, 分频器分频系数 P=2,那么主 PLL 生成的第一个输出高速时钟 PLLP 为: PLL=8MHz * N/ (MP)=8MHz 336 /(8*2) = 168MHz 如果我们选择HSE为PLL时钟源,同时SYSCLK时钟源为PLL,那么SYSCLK时钟为 168MHz。
第二个输出用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟(<=48 MHz) 和 SDIO 时钟 (<=48 MHz)。
专用 PLL (PLLI2S) 用于生成精确时钟,从而在 I2S 接口实现高品质音频性能。
由于在 PLL 使能后主 PLL 配置参数便不可更改,所以建议先对 PLL 进行配置,然后再使能
(选择 HSI 或 HSE 振荡器作为 PLL 时钟源,并配置分频系数 M、N、P 和 Q)。
PLLI2S 使用与 PLL 相同的输入时钟(PLLM[5:0] 和 PLLSRC 位为两个 PLL 所共用)。但
是,PLLI2S 具有专门的使能/禁止和分频系数(N 和 R)配置位。在 PLLI2S 使能后,配置
参数便不能更改。
当进入停机和待机模式后,两个 PLL 将由硬件禁止;如将 HSE 或 PLL(由 HSE 提供时钟
信号)用作系统时钟,则在 HSE 发生故障时,两个 PLL 也将由硬件禁止。RCC PLL 配置寄存
器 (RCC_PLLCFGR) 和RCC 时钟配置寄存器 (RCC_CFGR) 可分别用于配置 PLL 和 PLLI2S。
时钟输出功能
MCO1和MCO2是STM32微控制器中的两个主要时钟输出引脚,用于将特定时钟源的信号输出到外部设备。它们与时钟源之间的关系如下:
- 时钟源选择:在STM32微控制器中,可以从多个时钟源中选择用作MCO1和MCO2的输入。这些时钟源可以是内部时钟源(如HSI、HSE、PLL等)或外部时钟源(如LSE、LSE Bypass等)。
- MCO1和MCO2的配置:MCO1和MCO2的功能可以通过寄存器配置来启用和设置。具体的寄存器和位字段取决于所使用的STM32系列和型号。通常,使用RCC(Reset and Clock Control)寄存器来配置MCO1和MCO2的时钟分频器和时钟源选择。
- 时钟输出:一旦MCO1和MCO2被配置和使能,它们将从相应的引脚输出时钟信号。这些引脚通常可以通过GPIO配置为复用功能,以使其成为MCO输出引脚。
总结起来,MCO1和MCO2是用于将特定时钟源的信号输出到外部设备的引脚。通过配置和使能相应的寄存器,可以选择适当的时钟源,并将其输出到MCO1和MCO2引脚。这对于一些应用,如时钟测量、外部设备同步等,非常有用。