时钟树特点
- 多个时钟源:如 HSI (内部高速)、HSE (外部高速)、LSI (内部低速)、LSE (外部低速)。
- 可灵活设置工作频率:通过分频器和锁相环 (PLL) 为系统核心、总线和外设提供不同频率。

主时钟的产生

- 主要时钟源:HSE (外部晶体)、HSI (内部 RC,精度不高)。
- PLL (Phase-Locked Loop):用于倍频 HSE 或 HSI,产生高速的系统时钟 (SYSCLK),例如最高可达 168 MHz。计算公式如
PLLCLK = (HSE/M) * N / P
。

- SYSCLK (System Clock):系统时钟,可直接由 HSI, HSE 或 PLLCLK 选择。
- 总线时钟:AHB (HCLK), APB1 (PCLK1), APB2 (PCLK2) 由 SYSCLK 经过不同分频器得到。
系统初始化和时钟初始化
- 启动文件:如
startup_STM32F40_41xxx.S
,在复位后执行。
- 复位处理程序 (
Reset_Handler
):是系统上电或复位后执行的第一个程序段,它会调用SystemInit
函数,然后跳转到 C 语言的main
函数。
SystemInit
函数:通常在system_stm32f4xx.c
中定义,负责初始化微控制器的基本系统,包括 FPU 设置、调用SetSysClock()
配置时钟系统、配置向量表的位置和偏移地址。
SetSysClock
函数:用于配置系统时钟,例如使能 HSE、配置主 PLL 的参数 (PLLM, PLLN, PLLP, PLLQ 和 PLLSRC - PLL时钟源) 并使能主 PLL。
- PLL 参数定义:
PLL_M
,PLL_N
,PLL_P
等宏通常在stm32f4xx.h
头文件中定义。
可视化软件 CubeMX 时钟配置
STM32CubeMX 软件提供了一个图形化界面,用于方便地配置时钟树,包括选择时钟源、设置分频/倍频因子等,并可以根据用户的配置自动生成初始化代码。
