1、stm32的RCC基础知识讲解
bash
1. 什么是 RCC?
RCC = Reset and Clock Control(复位和时钟控制)
它是 STM32 芯片内部的一个"管家",负责:
复位:让芯片或外设回到初始状态
时钟管理:给 CPU 和各种外设提供"心跳"(时钟信号),没有时钟,它们就不能工作
2. 为什么需要时钟?
STM32 所有操作都靠时钟驱动(就像人的心跳)
不同模块(如 CPU、USART、ADC)可能需要不同频率的时钟
RCC 就是用来配置这些时钟源和频率的
3. 时钟源有哪些?
STM32 有多个时钟来源,主要三类:
HSI:内部高速时钟(8MHz,精度一般,上电就能用)
HSE:外部高速时钟(接晶振,比如 8MHz,更稳定精准)
PLL:锁相环,可以把 HSI 或 HSE 倍频成更高频率(比如 72MHz)
4. 系统时钟(SYSCLK)从哪来?
SYSCLK 是 CPU 的主时钟
可以选择来自 HSI、HSE 或 PLL
最终通过 AHB 分频器送给 CPU(叫 HCLK)
5. 时钟树是什么?
一张图,展示时钟怎么从源头(HSI/HSE/PLL)分配到各个模块
包括:
AHB 总线 → 高速外设(如内存、DMA)
APB1/APB2 总线 → 低速外设(如 TIM、USART、ADC)
每个总线可以独立分频(比如 SYSCLK=72MHz,APB1 可设为 36MHz)
6. 复位有哪几种?
系统复位:重启整个芯片(如按下 RESET 键)
电源复位:上电或掉电恢复时触发,影响除了备份域之外的区域
备份域复位:只复位 RTC 和后备寄存器
外设复位:单独复位某个外设(通过 RCC 寄存器控制)
7. HAL 库怎么配置时钟?
通常用 STM32CubeMX 图形化工具生成初始化代码
核心函数:SystemClock_Config()
→ 里面调用 HAL_RCC_xxx 函数设置时钟源、PLL、分频等
配置后,HAL 库会自动更新 SystemCoreClock 变量(代表当前 CPU 频率)
2、时钟树
bash
在时钟树中,通过HSE->PLL->AHB总线->APB1/APB2这样进行时钟分配,当不需要某个总线时钟时关闭即可达到低功耗
在F103产品手册中,HCLK最大72MHZ,APB1最大36MHZ,APB2最大72MHZ