STM32F103是一款基于ARM Cortex-M3内核的32位微控制器,它具有丰富的外设资源和灵活的时钟配置。本文将从以下几个方面介绍STM32F103的时钟树:
- 时钟树的概念和作用
- 时钟树的组成和分类
- 时钟树的配置方法和步骤
- 时钟树的应用实例
- 一、时钟树的概念和作用
- 二、时钟树的组成和分类
- 三、时钟树的配置方法和步骤
一、时钟树的概念和作用
时钟树是STM32为了实现低功耗而设计的功能完善构成复杂的时钟系统,它可以根据不同的外设和应用场合,选择合适的时钟源和频率,以提高系统性能和降低功耗。
时钟树的主要作用有以下几点:
- 提供系统时钟(
SYSCLK
),即CPU内核工作的机器周期,决定了系统运行的速度; - 提供AHB总线时钟(
HCLK
),即高性能总线工作的频率,连接CPU、内存、DMA等高速设备; - 提供APB1和APB2总线时钟(
PCLK1
和PCLK2
),即低速总线工作的频率,连接各种外设如GPIO、UART、TIM等; - 提供RTC时钟(
RTCLK
),即实时时钟工作的频率,用于提供精确的时间信息; - 提供USB时钟(
USBCLK
),即USB外设工作的频率,用于实现USB通信功能; - 提供MCO时钟输出(
MCO
),即微控制器时钟输出引脚,可以输出不同的时钟信号给外部设备;
二、时钟树的组成和分类
STM32F103的时钟树由四个时钟源、一个总线矩阵、一个PLL(锁相环)倍频器、一个CSS(时钟安全系统)检测器、一个USB预分频器、一个RTC预分频器、一个MCO输出选择器等部分组成。
STM32F103的时钟树可以分为以下六部分:
- 高速外部时钟(HSE):由外部晶振或者信号源提供,频率范围为4~16MHz,通常使用8MHz的晶振。HSE可以直接作为系统时钟或者经过PLL倍频后作为系统时钟,也可以经过预分频后提供给RTC或者MCO;
- 高速内部时钟(HSI):由内部RC振荡器产生,频率为8MHz,精度和稳定性较低。HSI可以直接作为系统时钟或者经过PLL倍频后作为系统时钟,也可以提供给MCO;
- 低速外部时钟(LSE):由外部晶振或者信号源提供,主要提供给RTC模块,所以一般使用32.768KHz的晶振。LSE可以直接作为RTC时钟或者经过预分频后提供给RTC或者MCO;
- 低速内部时钟(LSI):由内部RC振荡器产生,也主要提供给RTC模块,频率大约为40KHz。LSI可以直接作为RTC时钟或者提供给MCO;
- 总线矩阵:由多层AHB总线矩阵构成,用于连接Cortex-M内核、DMA控制器、外设和存储器。总线矩阵包括以下几条总线:
- ICode总线:用于访问存储空间里指令的总线;
- DCode总线:用于访问存储空间里数据的总线;
- System总线:用于访问指令、数据以及调试模块接口;
- DMA总线:用于内存与外设之间的数据传输;
- AHB总线:高性能总线,连接CPU、内存、DMA等高速设备,最高频率可达72MHz;
- APB1总线:低速外设总线,连接DAC、UART等外设,最高频率可达36MHz;
- APB2总线:高速外设总线,连接ADC、GPIO等外设,最高频率可达72MHz;
- PLL(锁相环)倍频器:用于将输入的时钟信号进行倍频,以提高系统时钟的频率。PLL的输入时钟源可以是HSI/2或者HSE,倍频系数可以是2~16之间的整数。PLL的输出时钟可以作为系统时钟或者提供给USB预分频器或者MCO;
图中名词释义:
- PLLXTPRE是一个分频器,它可以选择HSE时钟的一分频或二分频作为PLL的输入时钟源;
- PLLSRC是一个选择器,它可以选择HSI时钟的二分频或HSE时钟(经过PLLXTPRE分频)作为PLL的输入时钟源;
- PLLMUL是一个倍频器,它可以将PLL的输入时钟源进行2~16倍的倍频,得到PLL的输出时钟源;
- prescalear:预分频。
三、时钟树的配置方法和步骤
STM32F103的时钟树的配置主要涉及到以下几个寄存器:
- RCC_CR(时钟控制寄存器):用于控制HSE、HSI、PLL、CSS等时钟源的开启、关闭和就绪状态;
- RCC_CFGR(时钟配置寄存器):用于控制系统时钟源的选择、AHB、APB1、APB2、USB等总线的预分频系数、PLL的输入时钟源和倍频系数等;
- RCC_CIR(时钟中断寄存器):用于控制和清除各种时钟源就绪中断和CSS中断;
- RCC_APB2RSTR(APB2外设复位寄存器):用于控制APB2外设的复位状态;
- RCC_APB1RSTR(APB1外设复位寄存器):用于控制APB1外设的复位状态;
- RCC_AHBENR(AHB外设使能寄存器):用于控制AHB外设的时钟使能状态;
- RCC_APB2ENR(APB2外设使能寄存器):用于控制APB2外设的时钟使能状态;
- RCC_APB1ENR(APB1外设使能寄存器):用于控制APB1外设的时钟使能状态;
- RCC_BDCR(备份域控制寄存器):用于控制LSE、RTC等备份域相关的功能;
- RCC_CSR(控制/状态寄存器):用于控制LSI、CSS等功能以及显示复位标志;
STM32F103的时钟树的配置一般遵循以下步骤:
- 根据需要选择合适的时钟源,例如HSE或者HSI,并通过设置RCC_CR寄存器相应的位来开启或关闭该时钟源;
- 根据需要选择是否使用PLL,并通过设置RCC_CFGR寄存器相应的位来选择PLL的输入时钟源和倍频系数,以及开启或关闭PLL;
- 根据需要选择系统时钟源,并通过设置RCC_CFGR寄存器相应的位来选择系统时钟源为HSE、HSI或者PLLCLK;
- 根据需要设置AHB、APB1、APB2等总线的预分频系数,并通过设置RCC_CFGR寄存器相应的位来设置预分频
TM32的各种外设应该如何选择时钟频率的原则如下:
- 外设的时钟频率应该小于或等于系统时钟频率(SYSCLK),否则会导致外设无法正常工作;
- 外设的时钟频率应该满足外设的功能需求,例如定时器的精度、串口的波特率、ADC的采样速率等;
- 外设的时钟频率应该考虑功耗和电磁干扰的影响,一般来说,时钟频率越高,功耗越大,电磁干扰越严重。
把 永 远 爱 你 写 进 诗 的 结 尾 ~