HSI启动、HSE稳频、PLL加速:时钟源三级跳
短文标题HSI启动、HSE稳频、PLL加速时钟源三级跳你有没有想过一个问题STM32上电后外部晶振还没起振程序怎么跑的先用内部RCHSI跑起来等外部晶振HSE稳定了再切过去再用PLL倍频加速。HSI是“备胎”HSE是“主力”PLL是“加速器”——三级时钟源各司其职。第一级HSI内部RC振荡器——起跑上电即用让系统先跑起来。复位后默认时钟源就是HSI。第二级HSE外部晶体振荡器——稳频精度高但启动慢。系统先HSI跑着等HSE稳定了再切换过去。切换流程// 1. 使能HSERCC-CR | RCC_CR_HSEON;// 2. 等待HSE就绪几毫秒while (!(RCC-CR RCC_CR_HSERDY));// 3. 配置PLL如8MHz→72MHzRCC-CFGR | RCC_CFGR_PLLMULL9; // 9倍频RCC-CR | RCC_CR_PLLON;while (!(RCC-CR RCC_CR_PLLRDY));// 4. 切换系统时钟到PLLRCC-CFGR | RCC_CFGR_SW_PLL;while ((RCC-CFGR RCC_CFGR_SWS) ! RCC_CFGR_SWS_PLL);第三级PLL锁相环——加速PLL将HSE8MHz倍频到72MHz。倍频系数2~16可选STM32F103输出频率不超过72MHz。PLL是“涡轮增压器”——让系统跑满速。为什么HSI是“备胎”精度不够±1%精度做不了精准定时串口高波特率可能误码温漂大温度变化频率飘现场环境不可靠但HSI在HSE失效时保命配合CSS时钟安全系统HSE失效自动切回HSI系统不挂。外部晶振的两类有源晶振更稳定但贵。无源晶振需要两个负载电容10~22pF匹配晶振数据手册。这个故事的启示HSI起跑HSE稳频PLL加速——三级时钟源接力让系统又快又稳。没有HSI上电要等晶振起振几ms延迟没有HSE精度不够没有PLL跑不到72MHz。写在最后时钟源配置不是“选最高频率”是三级接力先用HSI活着再用HSE稳住最后PLL冲起来。三级跳完系统才达到最佳性能。本文灵感源于于振南《新概念ARM32单片机》教程第2.2节、第2.3节、第2.4节。觉得有用点赞、转发让更多人看懂HSI→HSE→PLL的时钟三级跳。