STM32时钟树(Clock Tree)

目录

[1. 为什么单片机需要时钟?](#1. 为什么单片机需要时钟?)

[2. 时钟从哪里来?](#2. 时钟从哪里来?)

(1)HSI:高速内部时钟

(2)HSE:高速外部时钟

[(3)LSE / LSI](#(3)LSE / LSI)

[3. PLL 是干什么的?](#3. PLL 是干什么的?)

[4. STM32 时钟树的大结构](#4. STM32 时钟树的大结构)

SYSCLK系统时钟

[HCLK AHB 总线时钟。](#HCLK AHB 总线时钟。)

[PCLK APB 外设时钟。](#PCLK APB 外设时钟。)

APB1

APB2


在 STM32 裸机开发里,时钟树(Clock Tree)是非常核心的一部分。很多初学者刚看到 STM32 的时钟树图会觉得像"电路迷宫",但你只要抓住几个核心概念,就会发现它其实是在解决一个问题:

给 CPU 和各种外设分配合适频率的时钟。

STM32 的时钟系统由 RCC(Reset and Clock Control,复位和时钟控制器)管理,不同系列的 STM32 时钟树细节不同,但整体思想类似。

1. 为什么单片机需要时钟?

你可以把时钟理解成 MCU 的"心跳"。

CPU 执行:

复制代码
a = b + c;

实际上需要很多个晶振脉冲:

复制代码
时钟 ↑
CPU 执行一步
时钟 ↑
CPU 执行下一步

没有时钟:

  • CPU 不运行
  • 定时器不计数
  • UART 不发送
  • SPI/I2C 不通信

所以 STM32 上电第一件重要的事情之一就是配置时钟。

2. 时钟从哪里来?

STM32 一般有几个时钟源:

(1)HSI:高速内部时钟

High Speed Internal

例如:

复制代码
HSI = 8MHz / 16MHz

来自芯片内部 RC 振荡器。

优点:

  • 不需要外部晶振
  • 上电即可使用

缺点:

  • 精度较差

(2)HSE:高速外部时钟

High Speed External

就是开发板上的晶振:

比如:

复制代码
8MHz 晶振

外部:

复制代码
晶振
 |
HSE
 |
STM32

优点:

  • 精度高

常用于:

  • 串口精确波特率
  • USB
  • 高精度应用

(3)LSE / LSI

低速时钟:

复制代码
LSE = 32.768kHz
LSI ≈ 40kHz

主要给:

  • RTC 实时时钟
  • 看门狗

3. PLL 是干什么的?

PLL:

Phase Locked Loop(锁相环)

简单理解:

一个"倍频器"。

比如,外部晶振:

复制代码
HSE = 8MHz

经过 PLL:

复制代码
8MHz × 9 = 72MHz

得到:

复制代码
SYSCLK = 72MHz

STM32F1 很经典:

复制代码
8MHz晶振
      |
      ↓
     PLL ×9
      |
      ↓
 72MHz系统时钟

所以你看到:

复制代码
SystemCoreClock = 72000000;

意思就是:

CPU 主频 72MHz。

4. STM32 时钟树的大结构

简化成这样:

复制代码
              HSI
               |
              |
HSE --------> PLL
               |
               ↓
            SYSCLK
               |
               |
          ---------------
          |             |
          ↓             ↓

        HCLK          PCLK
          |             |
          |             |
        CPU           外设

SYSCLK系统时钟

来源:

复制代码
HSI
HSE
PLL

选择一个作为:

复制代码
SYSCLK

例如:

复制代码
SYSCLK = 72MHz

HCLK AHB 总线时钟。

通常:

复制代码
HCLK = SYSCLK

例如:

复制代码
SYSCLK 72MHz

     ↓

HCLK 72MHz

提供给:

  • CPU
  • DMA
  • SRAM
  • Flash接口

PCLK APB 外设时钟。

分两组:

APB1

低速外设:

例如:

  • USART2
  • I2C
  • TIM2

通常:

复制代码
PCLK1 <= 36MHz

APB2

高速外设:

例如:

  • GPIO
  • USART1
  • ADC
  • TIM1

通常:

复制代码
PCLK2 <= 72MHz

例如 STM32F103:

复制代码
SYSCLK
  |
  |
 72MHz
  |
  +------ HCLK
  |          |
  |          CPU
  |
  +------ APB2
  |          |
  |          GPIO
  |          USART1
  |
  +------ APB1
             |
             USART2
             I2C
相关推荐
恒锐丰科技林技术员16 小时前
SS6841T 双通道 H 桥驱动芯片:大电流集成电机驱动优选方案
单片机·嵌入式硬件
打工陈16 小时前
器件知识——(1)磁珠与电感
嵌入式硬件·智能硬件·设计规范
乘凉~18 小时前
【Keil5】Keil5 安装和免费使用过程记录
stm32·单片机·嵌入式硬件
210Brian18 小时前
STM32学习笔记(六)EXTI外部中断(下)
笔记·stm32·学习
上天肖19 小时前
嵌入式硬件查漏补缺
嵌入式硬件
独孤九剑打醒他21 小时前
【原创开源】双层Master‑Worker软硬协同调度架构:从根源解决分布式数据一致性难题
前端·嵌入式硬件·架构·前端框架·硬件工程
驴友花雕1 天前
【花雕动手做】行空板 K10 系列实验之人工智能语音识别小车的10个参考案例
人工智能·单片机·嵌入式硬件·语音识别·行空板 k10 系列实验·花雕动手做·小车的10个参考案例
hsjiasb1 天前
FreeRTOS学习(二十七)——任务栈与栈溢出检测
开发语言·stm32·学习·学习笔记·freertos
日拱一卒的小田1 天前
ZYNQ学习笔记3-ZYNQ的IIC控制器1
笔记·单片机·学习
cardinal_5081 天前
STM32MP157F-DK2开发板构建交叉编译链
stm32·单片机·嵌入式硬件