🙌秋名山码民的主页
😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
获取源码,添加WX
目录
- 前言
- 一、STM32时钟概述
- 二、时钟源
- 三、使用CubeMX配置
- 最后
前言
STM32微控制器的时钟部分是其操作的核心,处理器的稳定工作也离不开时钟,它负责为微控制器提供时钟信号以驱动CPU、外设和总线,
所用软件:
- Keil5
- STM32 CubeMX
所用开发板型号:stm32f103vet6
一、STM32时钟概述
在STM32微控制器中,时钟系统由多个时钟源、时钟分频器和时钟使能控制组成,可以通过寄存器配置来实现对时钟的控制和调整。
-
时钟源:
- 内部振荡器(HSI):高速内部振荡器,通常频率为8MHz。
- 外部晶体振荡器(HSE):连接外部晶体振荡器,可提供更稳定的时钟信号。
- PLL(Phase-Locked Loop):用于产生高频时钟信号,通过对输入时钟源进行倍频得到高频时钟信号。
-
时钟分频器:
时钟分频器用于将时钟源的频率分频得到所需的时钟频率,比如系统时钟、总线时钟等。它们可以确保各个模块获得适合自己工作的时钟频率。 -
时钟使能:
对于每个外设,都有相应的时钟使能控制位,用于启用或禁用该外设的时钟信号。当某个外设不被使用时,禁用其时钟可以减少功耗。
在STM32中,时钟配置通常由寄存器进行设置。通过配置相关的寄存器,可以选择时钟源、设置PLL的倍频因子、配置分频器等。除了手动配置外,ST提供了CubeMX工具,它可以帮助用户通过图形界面来配置时钟,最终生成相应的初始化代码。
STM32F103的时钟树如下:
二、时钟源
STM32F103系列微控制器具有多个可用的时钟源。以下是常见的时钟源:
-
内部高速振荡器(HSI):
- 频率:默认为8MHz,可以通过软件配置为2MHz。
- 稳定性:适用于大多数应用,具有较好的稳定性和精确度。
- 启动时间:约为2ms。
-
外部晶体振荡器(HSE):
- 频率:通常为4MHz或8MHz,也可以使用其他频率的外部晶体。
- 稳定性:提供更高的时钟稳定性和精确度,适用于需要更高时钟精度的应用。
- 启动时间:取决于外部晶体的特性,一般在数十毫秒范围内。
-
PLL(Phase-Locked Loop):
- 输入时钟源:可以选择HSI或HSE作为PLL的输入时钟源。
- 倍频因子:可通过设置寄存器来选择倍频因子,将输入时钟源的频率乘以固定的倍数,获得更高频率的系统时钟。
- 频率范围:对于STM32F103系列,最大系统时钟频率为72MHz。
通过配置相关的寄存器,可以选择时钟源并配置PLL的输入时钟源和倍频因子。例如,可以将HSI或HSE作为主时钟源,并通过PLL将其倍频得到更高的系统时钟频率。
三、使用CubeMX配置
- 配置RCC
修改HCLK为最大72M, 他这里是问我们没有时钟源没配置成功,点击ok,cubemx会自动帮我们修改
3. 分频率,就是一个除法运算
4. 倍频,和前面的联系起来看,就是可以将HSI或HSE作为主时钟源,并通过PLL将其倍频得到更高的系统时钟频率。
最后
简单来说,对于STM32上的时钟,根据需求来确定,时钟频率越高,功耗也会更高,另一方面要考虑芯片的工作条件,根据芯片运行的工作条件来选取时钟频率。