基本信息
文件名称:STMicroelectronics 系列:STM32F4 系列_(8).STM32F4系列时钟与复位管理.docx
文件大小:25.6 KB
总页数:35 页
更新时间:2025-06-19
总字数:约1.61万字
文档摘要

PAGE1

PAGE1

STM32F4系列时钟与复位管理

时钟系统概述

STM32F4系列微控制器的时钟系统是其性能和功能的核心部分。时钟系统的主要功能是为微控制器的各个模块提供稳定的时钟信号,确保系统的正常运行。时钟系统包括多种时钟源,如内部RC振荡器、外部晶振、PLL(锁相环)等,这些时钟源可以通过配置选择不同的时钟路径和频率,以满足不同的应用需求。

时钟源

STM32F4系列微控制器提供了多种时钟源,主要包括:

内部RC振荡器(HSI):8MHz的内部高速RC振荡器,用于启动和备用时钟。

外部晶振(HSE):4-26MHz的外部高速晶振,通常用于高精度时钟源。

PLL(锁相环):可以将输入时钟源倍频到更高的频率,最高可达168MHz。

内部LSI振荡器:32kHz的内部低速RC振荡器,用于RTC(实时时钟)和备份域。

外部LSI晶振:32.768kHz的外部低速晶振,用于RTC和备份域。

时钟树

时钟树是指时钟信号从时钟源到各个模块的路径。STM32F4系列的时钟树如下:

系统时钟(SYSCLK):可以是HSI、HSE或PLL输出的时钟,通过系统时钟选择寄存器(RCC_CFGR)配置。

AHB总线时钟(HCLK):系统时钟经过AHB分频器分频后的时钟,用于AHB总线上的模块。

APB1总线时钟(PCLK1):AHB总线时钟经过APB1分频器分频后的时钟,用于APB1总线上的模块。

APB2总线时钟(PCLK2):AHB总线时钟经过APB2分频器分频后的时钟,用于APB2总线上的模块。

USART、I2C、SPI等外设时钟:APB1和APB2总线时钟经过进一步分频后的时钟,用于外设模块。

时钟配置寄存器

STM32F4系列的时钟配置主要通过RCC(复位和时钟控制)寄存器进行。以下是主要的RCC寄存器:

RCC_CR(ClockControlRegister):用于控制时钟源的启动和停止。

RCC_CFGR(ClockConfigurationRegister):用于配置系统时钟源、分频器等。

RCC_CIR(ClockInterruptRegister):用于配置时钟相关的中断。

RCC_AHB1/2/3/4ENR(AHB1/2/3/4PeripheralClockEnableRegister):用于启用AHB总线上的外设时钟。

RCC_APB1/2ENR(APB1/2PeripheralClockEnableRegister):用于启用APB1和APB2总线上的外设时钟。

时钟源配置

内部RC振荡器(HSI)

HSI是8MHz的内部高速RC振荡器,用于启动和备用时钟。HSI默认启用,可以在RCC_CR寄存器中进行配置。

代码示例

//启用HSI时钟

voidHSI_Enable(void){

//设置HSION位,启用HSI

RCC-CR|=RCC_CR_HSION;

//等待HSI就绪

while(!(RCC-CRRCC_CR_HSIRDY)){

//等待

}

}

//禁用HSI时钟

voidHSI_Disable(void){

//清除HSION位,禁用HSI

RCC-CR=~RCC_CR_HSION;

}

外部晶振(HSE)

HSE是4-26MHz的外部高速晶振,通常用于高精度时钟源。HSE的配置需要考虑晶振的频率和启动时间。

代码示例

//启用HSE时钟

voidHSE_Enable(uint32_tHSE_Value){

//设置HSE值

RCC-CR|=(HSE_ValueRCC_CR_HSEBYP_Pos);

//设置HSEON位,启用HSE

RCC-CR|=RCC_CR_HSEON;

//等待HSE就绪

while(!(RCC-CRRCC_CR_HSERDY)){

//等待

}

}

//禁用HSE时钟

voidHSE_Disable(void){

//清除HSEON位,禁用HSE

RCC-CR=~RCC_CR_HSEON;

}

PLL(锁相环)

PLL可以将输入时钟源倍频到更高的频率,最高可达168MHz。PLL的配置需要考虑输入时钟源、倍频因子和分频因子。

代码示例

//配置PLL

voidPLL_Config(uint32_tPLL_M,uint32_tPLL_N,uint32_tP