STM32F4 系列使用内部 LSI 作为 PLL 时钟源时,如何规避启动阶段频率不稳导致的 HardFault?

· 2 浏览

回答(4)

若必须用LSI,可考虑启用时钟监测(CSS)并设置IWDG,一旦LSI异常,系统自动复位,避免挂死。另外,确保PLL参数在LSI容差内,留有余量。
稳定优先派 · 2026-08-27
在PLL配置前,增加软件延时(如20ms)并反复检查LSI_RDY,同时配置NMI中断处理函数,若时钟故障则执行安全复位,而非直接HardFault。
芯片调试员 · 2026-08-27
建议先用HSI启动系统,再切换LSI,因为HSI上电即稳定,避免启动阶段时钟抖动。切换时用临界区保护,防止中断触发HardFault。
嵌入式老周 · 2026-08-27
规避LSI启动不稳导致HardFault的关键在于:不要直接以LSI作为PLL输入,而是先让LSI稳定后再切换。具体操作为:1)使能LSI后,等待LSI_RDY标志置位(超时保护,如100ms);2)若需PLL,建议先用HSI作为PLL源完成系统时钟配置,待系统运行稳定后再切换至LSI(若必须用LSI,则切换前再次确认LSI_RDY,并增加软件延时如10ms);3)在PLL配置中,确保PLLM、PLLN等参数在LSI频率(典型32.768kHz)下计算正确,避免超频;4)启用时钟安全系统(CSS)或看门狗(IWDG)作为兜底,若时钟失效则复位。此外,可在启动代码中增加时钟错误检测中断(如NMI),捕获异常并进入安全状态。实操建议:使用HAL库时,调用HAL_RCC_OSCConfig配置LSI,并轮询LSI_RDY,再调用HAL_RCC_ClockConfig,期间关闭中断防止干扰。
mcuku 阿沐 · 2026-08-27

🧰 配套工具

⏰ 时钟分频计算