【STM32】SystemInit时钟系统初始化函数剖析

这篇文章介绍 STM32 的时钟系统。

首先,我们需要回答一个基础的问题:
“为什么在GPIO初始化的时候,都要先打开时钟?每次使用外设之前,都要先初始化它的时钟呢?”

在这里插入图片描述

一、五种主时钟源

单片机是一种集成了微处理器、内存、外设接口等功能的芯片,属于微控制器(MCU),能独立完成某项控制任务。单片机无论是外设还是内核,它的运行都是完全依赖时钟的,而且在STM32当中,时钟有很多个时钟源(其主时钟源一共有五个):

1. HSI、HSE、LSI、LSE、PLL。
时钟源 类型 频率 特点 常见用途
HSI 内部 8 MHz RC 振荡器,精度差,但启动快 默认启动时钟
HSE 外部 4~16 MHz 需外部晶体或外部时钟信号
LSI 内部 ~40 kHz RC 振荡,低功耗,精度差 看门狗、低功耗唤醒
LSE 外部 32.768 kHz 晶体振荡器,精度高 RTC(实时时钟)
PLL 合成 2~72 MHz 倍频器,输入源为 HSI/2、HSE、HSE/2 提供主频率 SYSCLK

①、HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
②、HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
③、LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。WDG
④、LSE是低速外部时钟,接频率为32.768kHz的石英晶体。RTC
⑤、PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。
倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。

2. 系统时钟SYSCLK可来源于三个时钟源:

①、HSI振荡器时钟
②、HSE振荡器时钟
③、PLL时钟

3.STM32可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟。
4.任何一个外设在使用之前,【必须首先使能其相应的时钟】。

几个重要的时钟:

请添加图片描述

SYSCLK(系统时钟) :
AHB总线时钟
APB1总线时钟(低速): 速度最高36MHz
APB2总线时钟(高速): 速度最高72MHz
PLL时钟


参考资料:
http://www.openedv.com/posts/list/302.htm

二、RCC相关配置寄存器

typedef struct
{
   
   
  __IO uint32_t CR;                //HSI,HSE,CSS,PLL等的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫猫的小茶馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值