STM32F103的时钟系统采用多源架构,主要包括HSI(8MHz内部RC振荡器)、HSE(4-16MHz外部晶振,常接8MHz) 以及PLL(锁相环倍频器)。其配置遵循一个清晰的流程:启动HSE/HSI → 配置Flash预取指与等待周期 → 设置AHB/APB分频 → 配置并使能PLL → 切换系统时钟至PLL → 开启外设时钟。

1、关键配置要点
时钟源选择与使能
HSE使能:通过RCC_HSEConfig(RCC_HSE_ON)使能外部高速晶振,并用RCC_WaitForHSEStartUp()等待其稳定。
HSI作为备选:若使用内部RC振荡器,通过RCC_CR寄存器的HSION位使能并等待HSIRDY标志位稳定。
PLL配置与倍频
PLL时钟源:可选择HSE、HSE/2或HSI/2作为PLL输入。
倍频设置:通过RCC_PLLConfig()函数设置倍频系数(2~16倍),使PLL输出达到期望的系统时钟(最高72MHz)。例如,8MHz HSE 9倍频得72MHz。
总线分频系数设定
AHB总线 (HCLK):通过RCC_HCLKConfig()配置,常设为1分频(RCC_SYSCLK_Div1),使其与系统时钟同频。
APB1总线 (PCLK1):通过RCC_PCLK1Config()配置,最高36MHz,通常2分频(RCC_HCLK_Div2)。
APB2总线 (PCLK2):通过RCC_PCLK2Config()配置,最高72MHz,常设为1分频(RCC_HCLK_Div1)。
Flash延迟配置
当时钟频率超过特定值(如≥48MHz),必须通过FLASH_SetLatency(FLASH_Latency_2)设置Flash等待周期,并使能预取指缓冲区,确保CPU稳定读取指令和数据。
系统时钟切换与验证
通过RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK)将PLL输出作为系统时钟。
通过检查RCC_GetSYSCLKSource()的返回值(PLL作为时钟源时返回0x08)或等待RCC_CFGR的SWS位,确认时钟源已成功切换。
外设时钟使能
系统时钟配置完毕后,通过RCC_APB2PeriphClockCmd()或RCC_APB1PeriphClockCmd()使能相应外设(如GPIO、USART等)的时钟。
2、实用配置技巧
固件库简化配置:使用STM32固件库时,在system_stm32f10x.c中定义目标频率宏(如SYSCLK_FREQ_72MHz),并在初始化阶段调用SystemInit()函数,可自动完成时钟树配置。
时钟安全机制:考虑使能时钟安全系统(CSS),一旦HSE发生故障,可自动切换回HSI,增强系统鲁棒性。
本文凡亿教育原创文章,转载请注明来源!
暂无评论