STM32单片机时钟系统:剖析6个关键要素,助你掌控时序控制的秘密
发布时间: 2024-07-05 12:39:46 阅读量: 78 订阅数: 52
毕设和企业适用springboot企业数据管理平台类及跨境电商管理平台源码+论文+视频.zip
![STM32单片机时钟系统:剖析6个关键要素,助你掌控时序控制的秘密](https://img-blog.csdnimg.cn/2019071921214486.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2JsZWF1Y2hhdA==,size_16,color_FFFFFF,t_70)
# 1. STM32单片机时钟系统概述
STM32单片机是意法半导体公司生产的一系列32位微控制器。时钟系统是STM32单片机的重要组成部分,负责为单片机提供稳定的时钟信号,保证单片机正常运行。STM32单片机的时钟系统由时钟源、时钟树和时钟控制模块组成。
时钟源是时钟系统的基础,它提供原始的时钟信号。STM32单片机内部集成了多个时钟源,包括内部高速振荡器(HSI)、内部中速振荡器(MSI)和内部低速振荡器(LSI)。此外,STM32单片机还可以使用外部时钟源,如晶体振荡器或陶瓷谐振器。
# 2. 时钟源与时钟树
### 2.1 内部时钟源
STM32单片机内部集成了多种时钟源,包括:
- **内部高速时钟 (HSI)**:由内部 RC 振荡器产生,频率范围为 2 至 64 MHz。
- **内部中速时钟 (MSI)**:由内部 RC 振荡器产生,频率范围为 100 kHz 至 4 MHz。
- **内部低速时钟 (LSI)**:由内部 RC 振荡器产生,频率为 32 kHz。
- **实时时钟 (RTC)**:由外部 32.768 kHz 晶体振荡器产生,用于保持时间和日期。
### 2.2 外部时钟源
除了内部时钟源外,STM32单片机还支持外部时钟源,包括:
- **外部高速时钟 (HSE)**:由外部晶体振荡器或陶瓷谐振器产生,频率范围为 4 至 26 MHz。
- **外部低速时钟 (LSE)**:由外部 32.768 kHz 晶体振荡器产生,用于保持时间和日期。
### 2.3 时钟树的构建
时钟树是将时钟源分配到单片机各个外设和功能模块的层次结构。STM32单片机的时钟树由以下组件组成:
- **时钟源选择器 (RCC)**:负责选择时钟源并将其分配给时钟树。
- **时钟预分频器 (PLL)**:可以将时钟源的频率倍增或分频。
- **时钟分配器**:将时钟信号分配给各个外设和功能模块。
**时钟树构建示例**
下图展示了一个典型的 STM32 时钟树构建示例:
```mermaid
graph LR
subgraph 时钟源
HSE[外部高速时钟]
LSE[外部低速时钟]
HSI[内部高速时钟]
MSI[内部中速时钟]
LSI[内部低速时钟]
end
subgraph 时钟树
RCC[时钟源选择器]
PLL[时钟预分频器]
AHB[高级高速总线]
APB1[高级外设总线 1]
APB2[高级外设总线 2]
end
RCC --> PLL
RCC --> AHB
RCC --> APB1
RCC --> APB2
PLL --> AHB
PLL --> APB1
PLL --> APB2
```
**时钟树构建步骤**
时钟树的构建通常涉及以下步骤:
1. 选择时钟源。
2. 配置时钟预分频器 (PLL)。
3. 配置时钟分配器。
4. 验证时钟配置。
**代码示例**
以下代码示例展示了如何配置 STM32 时钟树:
```c
/* 设置时钟源为 HSE */
RCC->CFGR |= RCC_CFGR_SW_HSE;
/* 等待时钟源切换完成 */
while ((RCC->CFGR & RCC_CFGR_SWS_Ms
```
0
0