4.4.2 时钟配置

更新于 2026年10月10日 版权声明
4.4.2 时钟配置

STM32F1系列MCU要正常工作,需要有持续不断的振荡时钟。STM32F1系列MCU的时钟系统如图4.10所示。

STM32F1系列MCU内部有3种不同的时钟源可被用来驱动系统时钟SYSCLK。

(1)HSI振荡器时钟,内部为8 MHz固定振荡器,时钟频率精度较差。

(2)HSE振荡器时钟,外部可接4~16 MHz晶体或陶瓷振荡器,频率更精确。

(3)PLL倍频器时钟,STM32F1系列MCU最大可倍频到72 MHz。

STM32F1系列MCU内部还有以下两种二级时钟源。

(1)40 kHz低速内部RC(LSI RC)振荡器,可以用于驱动独立看门狗,或者通过程序选择驱动RTC,用于从停机或待机模式下自动唤醒系统。

(2)通过程序选择32.768 kHz低速外部晶体(LSE晶体)来驱动RTC(RTCCLK)。

图示

图4.10 STM32F1系列MCU的时钟系统

当STM32F1系列MCU的内部低速时钟源不被使用时,任意一个时钟源都可被独立地启动或关闭,由此优化系统功耗。(https://www.daowen.com)

在图4.10中,时钟源HSI、HSE(或者经PLL倍频)提供STM32F1系统时钟SYSCLK,STM32F1系列MCU的系统时钟SYSCLK频率最大为72 MHz。它通过AHB分频后被送到各外设模块,这些时钟分别是PCLK1、PCLK2、HCLK、FCLK、FSMCCLK、ADCCLK,使用前都禁止,使用时必须使能。

时钟使用规则如下。

(1)当HSI被用于作为PLL时钟的输入时,系统时钟能达到的最大频率是64 MHz。

(2)用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72 MHz。APB1域的最大允许频率是36 MHz。SDIO接口的时钟频率固定为HCLK/2。

(3)RCC通过AHB时钟(HCLK)8分频后,作为节拍定时器SysTick的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或HCLK时钟作为SysTick的时钟。

(4)ADC时钟由高速APB2时钟经2、4、8分频后获得。

(5)定时器时钟频率分配由硬件按以下两种情况自动设置:如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致;否则,定时器的时钟频率被设为与其相连的APB总线频率的两倍。

(6)PCLK1时钟由电源模块、备份模块、CAN、USB、I2C1、I2C2、UART2、UART3、SPI2、TIM2、TIM3、TIM4和窗口看门狗提供。

(7)PCLK2时钟由UART1、SPI1、TIM1、ADC1、ADC2、通用I/O口(PA~PE)、第二功能I/O提供。

ST公司提供的HAL库文件中,“stm32f10xx_hal_rcc.c/h”文件用来完成时钟的设置。另外,在“system_stm32f1xx.c”文件中,函数SystemInit()用于实现对时钟的复位操作。时钟的配置一般需要用户通过HAL_RCC_OscConfig()函数来进行系统主时钟设置,通过HAL_RCC_ClockConfig()函数来实现AHB、APB1、APB2总线上的时钟设置。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)