目录
概述
本文主要介绍STM32时钟管理系统的相关内容。在STM32微控制器中,时钟管理系统起着关键的作用,它负责提供和管理微控制器中各个模块和外设的时钟信号。STM32的时钟管理系统包括以下几个主要部分:内部振荡器,PLL(锁相环),RCC(重置和时钟控制器),以及外设时钟控制。
1 时钟树架构概述
STM32时钟系统采用多级联结构,以灵活满足不同外设的时序需求,典型时钟树包含以下核心组件:
1. 1 时钟源选择
时钟源 | 频率范围 | 用途 | 特点 |
---|---|---|---|
HSI (内部高速) | 8/16/48 MHz | 系统时钟备用源 | 低精度 (±1%),快速启动 |
HSE (外部高速) | 4-48 MHz | 主系统时钟源 | 高精度 (晶体/陶瓷谐振器) |
LSI (内部低速) | 32-128 kHz | 独立看门狗、RTC | 低功耗,精度较低 |
LSE (外部低速) | 32.768 kHz | 精准RTC时钟 | 高精度 (手表晶体) |
STM32F103RCTX的时钟配置框图
1.2 时钟分配路径
+-> AHB预分频器 -> AHB总线(CPU、内存、DMA)
|
PLL输出 -> 系统时钟选择器 ---+-> APB1预分频器 -> APB1低速外设(TIM2-7, I2C1, USART2...)
|
+-> APB2预分频器 -> APB2高速外设(TIM1, SPI1, ADC...)
2 核心配置流程(以STM32F4为例)
2.1 HSE+PLL配置72MHz系统时钟
// 使用CubeMX生成代码框架
void SystemClock_Config(void)
{
RCC_OscInitTypeDef RCC_OscInit = {0};
RCC_ClkInitTypeDef RCC_ClkInit = {0};
// 配置HSE和PLL
RCC_OscInit.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInit.HSEState = RCC_HSE_ON;
RCC_OscInit.PLL.PLLState = RCC_PLL_ON;
RCC_OscInit.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInit.PLL.PLLM = 8; // HSE=8MHz时,M分频=8 → 1MHz
RCC_OscInit.PLL.PLLN