时钟其实就是单片机的心脏。首先我们的高速外部时钟(HES),看名字就可知道外部高速时钟是由外部所提供的其是高速的,其具体可以是有源晶振或者无源晶振所提供的时钟。而在时钟树图中我们从OSC_IN、OSC_OUT进入,然后经过分频因子进行分频/M,在进入到锁相环(PLL)环节进行倍频xN(一般为最高值336),在进入到VCO时钟进行分频/P(一般为2),然后我们会得到锁相环时钟PLLCLK,经过开关(SW)选择SUSCLK时钟(168MHZ),设置我们AHB总线分频因子为1,APB2分频因子为2,APB1分频因子为4。经过一系列的过程我们就得到我们的
系统时钟=168Mhz。AHB=168MHZ,APB2=84MHZ,APB1=42MHZ.
SYSCLK=168=f/M*(N/P),f为PLL输出频率,M为HSI或HSE分频数,N和P为锁相环内部倍频和分频数,N为168,P为2,M为4.sysclk=8M/4*(168/2)=168M。
通过预分频器配置AHB频率,高速APB(APB2)和低速APB(APB1)。AHB域的最大频率为168MHz。高速APB2域的最大允许频率为84MHz。低速APB1域的最大允许频率为42MHz。
除以下时钟外,所有外设时钟均由系统时钟 (SYSCLK) 提供:
●来自于特定 PLL 输出 (PLL48CLK) 的 USB OTG FS 时钟 (48 MHz)、基于模拟技术的随 机数发生器 (RNG) 时钟 ( 48 MHz) 和 SDIO 时钟 ( 48 MHz)。
● I2S 时钟
● 由外部 PHY 提供的 USB OTG HS (60 MHz) 时钟
● 由外部 PHY 提供的以太网 MAC 时钟(TX、RX 和 RMII)
在 STM32F4 中,有 5 个最重要的时钟源,为 HSI、HSE、LSI、LSE、PLL。
HSE时钟
高速外部时钟信号 (HSE) 有 2 个时钟源:
● HSE 外部晶振/陶瓷谐振器
● HSE 外部用户时钟
谐振器和负载电容必须尽可能地靠近振荡器的引脚,以尽量减小输出失真和起振稳定时间。
负载电容值必须根据所选振荡器的不同做适当调整。
HSI时钟
HSI 时钟信号由内部 16 MHz RC 振荡器生成,可直接用作系统时钟,或者用作 PLL 输入
PLL配置
STM32F4xx 器件具有两个 PLL:
● 主 PLL (PLL) 由 HSE 或 HSI 振荡器提供时钟信号,并具有两个不同的输出时钟: — 第一个输出用于生成高速系统时钟(最高达 168 MHz) — 第二个输出用于生成 USB OTG FS 的时钟 (48 MHz)、随机数发生器的时钟 (48 MHz) 和 SDIO 时钟 ( 48 MHz)。
● 专用 PLL (PLLI2S) 用于生成精确时钟,从而在 I2S 接口实现高品质音频性能。
LSE时钟
LSE 晶振是 32.768 kHz 低速外部 (LSE) 晶振或陶瓷谐振器,可作为实时时钟外设 (RTC) 的 时钟源来提供时钟/日历或其它定时功能,具有功耗低且精度高的优点。