08 RCC
Reset and Clock Control 复位和时钟控制器
up的视频讲解: https://space.bilibili.com/1455872040
1 ®️RCC简介

RCC的全称是 Reset and Clock Control 意思是 复位和时钟控制器,很显然他就包含 复位控制电路 以及 时钟控制电路这两部分,这个时钟控制电路也叫做Clock tree时钟树
2 🎄RCC时钟控制电路

- 左边是时钟源 时钟源输出的时钟 首先会通过倍频
- 倍频后的结果 就是
系统时钟然后 再通过分频给到到各个外设

STM32一共可以选择的有四个时钟源
- 分别是两个外部的时钟源
HSE和LSE - 以及两个内部时钟源
HSI和LSI
2.1 HSE高速外部时钟

芯片在上电后
-
主控板上的8Mhz晶振在会 振荡出时钟脉冲输入到
HSE -
然后会直接通过多路选择器输入到
PLL锁相环进行倍频 -
然后 经多路选择器 作为
系统时钟 -
接着 经过AHB分频器之后的时钟叫做
HCLK -
接着HCLK经过APB分频器之后的时钟叫
PCLK
这些总线上的时钟最终会送到挂载在总线的各个外设上 给它们提供工作的基准 这就是整个RCC的大体工作流程

我们再看到 时钟树的末端 看看这些时钟都 流向了哪里
-
AHB分频后的时钟分别有三条通路
-
首先看到最上面一条 这里显示HCLK时钟给到了
AHB总线、内核、存储、DMA -
再看到下面两条 它们分别直接连接到了内核中的
NVIC模块 -
以及NVIC里的
SysTick系统定时器
-
-
而下方的PCLK分别有两条通路
-
上边的给到APB总线以及总线上的各个外设
-
下方的专门给到
定时器外设
-
2.2 HSE高速内部时钟

HSI内部高速时钟 它也是输出8Mhz的时钟 但它的稳定性不如外部石英晶体晶振
-
上面两条通路 一条是直接给到
FLITF也就是flash前的缓存 -
另一条 可以通过多路选择器作为
系统时钟
这两条路也就是芯片在复位后第一时刻开始工作的 一直到加载RCC外设的配置程序之后 才会切换到HSE工作通路
2.3 LSE 低速外部时钟

看到上方的 RTC实时时钟 我们常见的电子闹钟就是通过RTC去实现的
- 这个LSE对应的外部晶振up没上
- 因为我们完全可以对HSE分频或直接用LSI去实现
2.4 LSI 低速内部时钟

最后 一条连接是LSI给到 独立看门狗
- 看门狗本质就是一个递减计数器
- 当它减到0的时候就会进行复位
可以看到LSI它是独立于整个高速主时钟体系的 所以说当主时钟里运行的程序崩溃 CPU卡死的时候 独立看门狗仍能够正常的工作
3 🔃 RCC复位控制电路

它具体是这样实现的
- RCC的复位控制电路 当
独立看门狗的计数器递减到0的时候 - 就会触发一个
复位脉冲信号这个复位脉冲信号会 输入到这个多路或门 - 然后 会控制这个
Pluse generator脉冲生成器 生成一个至少20微秒的高电平脉冲 - 内部复位逻辑通过复位驱动路径将
NRST拉低;应按手册中的复位框图理解,不把这条路径等同为普通PMOS上拉电路 - 这个低电平信号就会通过
施密特触发器整形后 再给到整个系统进行复位
✅把时钟树算一遍
本课程常用HSE=8 MHz,经PLL×9得到SYSCLK=72 MHz;AHB不分频,HCLK=72 MHz;APB1二分频,PCLK1=36 MHz;APB2不分频,PCLK2=72 MHz。APB1定时器时钟此时是72 MHz,不是36 MHz。
ADC再以PCLK2/6得到12 MHz。配置CPU到72 MHz时还需匹配电压条件和Flash等待周期,正常由CubeMX生成;不要只改PLL而漏改其他约束。
若把系统时钟改掉,要一起检查UART波特率、定时器周期和ADC时钟。RTC使用HSE分频时还受HSE工作状态影响,不能与独立LSE在低功耗/备份供电下的行为混为一谈。