目录1. 为什么单片机需要时钟2. 时钟从哪里来1HSI高速内部时钟2HSE高速外部时钟3LSE / LSI3. PLL 是干什么的4. STM32 时钟树的大结构SYSCLK系统时钟HCLK AHB 总线时钟。PCLK APB 外设时钟。APB1APB2在 STM32 裸机开发里时钟树Clock Tree是非常核心的一部分。很多初学者刚看到 STM32 的时钟树图会觉得像“电路迷宫”但你只要抓住几个核心概念就会发现它其实是在解决一个问题给 CPU 和各种外设分配合适频率的时钟。STM32 的时钟系统由 RCCReset and Clock Control复位和时钟控制器管理不同系列的 STM32 时钟树细节不同但整体思想类似。1. 为什么单片机需要时钟你可以把时钟理解成 MCU 的“心跳”。CPU 执行a b c;实际上需要很多个晶振脉冲时钟 ↑ CPU 执行一步 时钟 ↑ CPU 执行下一步没有时钟CPU 不运行定时器不计数UART 不发送SPI/I2C 不通信所以 STM32 上电第一件重要的事情之一就是配置时钟。2. 时钟从哪里来STM32 一般有几个时钟源1HSI高速内部时钟High Speed Internal例如HSI 8MHz / 16MHz来自芯片内部 RC 振荡器。优点不需要外部晶振上电即可使用缺点精度较差2HSE高速外部时钟High Speed External就是开发板上的晶振比如8MHz 晶振外部晶振 | HSE | STM32优点精度高常用于串口精确波特率USB高精度应用3LSE / LSI低速时钟LSE 32.768kHz LSI ≈ 40kHz主要给RTC 实时时钟看门狗3. PLL 是干什么的PLLPhase Locked Loop锁相环简单理解一个“倍频器”。比如外部晶振HSE 8MHz经过 PLL8MHz × 9 72MHz得到SYSCLK 72MHzSTM32F1 很经典8MHz晶振 | ↓ PLL ×9 | ↓ 72MHz系统时钟所以你看到SystemCoreClock 72000000;意思就是CPU 主频 72MHz。4. STM32 时钟树的大结构简化成这样HSI | | HSE -------- PLL | ↓ SYSCLK | | --------------- | | ↓ ↓ HCLK PCLK | | | | CPU 外设SYSCLK系统时钟来源HSI HSE PLL选择一个作为SYSCLK例如SYSCLK 72MHzHCLK AHB 总线时钟。通常HCLK SYSCLK例如SYSCLK 72MHz ↓ HCLK 72MHz提供给CPUDMASRAMFlash接口PCLK APB 外设时钟。分两组APB1低速外设例如USART2I2CTIM2通常PCLK1 36MHzAPB2高速外设例如GPIOUSART1ADCTIM1通常PCLK2 72MHz例如 STM32F103SYSCLK | | 72MHz | ------ HCLK | | | CPU | ------ APB2 | | | GPIO | USART1 | ------ APB1 | USART2 I2C