STM32 RCC 分析与使用由于STM32 系列微控制器系统比较复杂, 时钟系统也相对于普通MCU 更多样化,这加大了我们设计程序和学习的难度
比如普通的MCU延时程序,我们直接可以使用“for循环”或者“while”来轻易实现;而在Cortex核的STM32系列微控制器上则不行:因为无法判断当时的时钟频率,做不到精确的延时
如果详细地了解其时钟系统后,我们知道可以使用SYSCLK来实现精确延时
RCC的学习可以说没有实验,但所有的模块都会用到时钟,我们进行I/O口的初始化,配置函数中第一行代码一般都是对时钟的初始化,足可见其重要性
一般而言,要是真正理解了STM32中所有的时钟,学习其他外设都是易如反掌了
实验要求以SystemInit()函数为突破口的情况下,深入了解STM32时钟的初始化流程
实验目的学习STM32系列的时钟设置
硬件分析时钟树在STM32系统中,共有五个时钟源,分别为HSE、HSI、LSE、LSI、PLL
由图可以看出,HSI和LSI为片内RC振荡器,HSI为8MHz而LSI为32KHz;HSE和LSE为外部时钟源;PLL则需要HSE和HSI来提供时钟
(1)HSE:高速外部时钟信号可以通过外部直接提供时钟,从OSC_IN输入,或使用外部陶瓷/晶体谐振器
外部直接提供的时钟可以达到25MHz,用户可以通过设置时钟信号控制寄存器RCC_CR中的HSEBYP和HSEON位来选择该模式
此时OSC_OUT引脚为高阻状态
(2)HSI:高速内部时钟信号该 时 钟 通 过 8MHz 的 内 部 RC 振 荡 器 产 生 ,并 且 可 被 直 接 用 做 系 统 时 钟 , 或 者 经 过 2 分 频 后 作 为 PLL 的 输 入
它 比HSE 有 更 快 的 启 动 时 间 , 但 频 率 精 确 度 没 有 外 部 晶 体 振 荡 器 高