RCC 时钟树完全笔记 —— STM32F103 标准库实现

📅 2026/6/26 3:30:17
RCC 时钟树完全笔记 —— STM32F103 标准库实现
一、为什么需要了解时钟树?刚开始学 STM32,很多人直接用SystemInit()启动 72MHz, 也能跑程序,但一旦出现以下问题就会束手无策:问题1:串口波特率不对,通信乱码 → 因为 USART 时钟频率算错了 问题2:定时器周期不准 → 因为 TIM 所在总线(APB1/APB2)频率没搞清楚 问题3:ADC 时钟配置失败 → ADC 最大 14MHz,超过就读数不准 问题4:I2C/SPI 速度不对 → 外设时钟频率不对,分频配错了 问题5:低功耗不生效 → 没关掉不用的外设时钟,白白耗电 根本原因:不清楚时钟是怎么从晶振一路分配到每个外设的二、时钟树整体结构——先看全局STM32F103 的时钟来源有三个,最终经过分频/倍频后给到各外设:时钟来源(选其一): ┌─────────────────────────────────────────────────────────┐ │ HSI(High Speed Internal)内部高速 RC 振荡器 │ │ 频率:8 MHz,精度差(±1%),上电即可用,无需外部元件 │ │ │ │ HSE(High Speed External)外部高速晶振 │ │ 频率:4~16 MHz(BluePill 板通常 8 MHz 晶振