STM32 Cube IDE生成的SystemClock_Config代码是否缺少PWR时钟使能?
关于STM32 Cube IDE生成SystemClock_Config代码的PWR时钟使能问题
你的判断完全正确——调用LL_PWR_SetRegulVoltageScaling()函数前,必须先调用LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR)使能PWR外设时钟。
原因说明
STM32的PWR外设挂载在APB1总线上,所有挂载在总线的外设,在访问其寄存器之前都必须先开启对应总线的时钟,否则寄存器读写操作会被硬件忽略,配置无法生效。LL_PWR_SetRegulVoltageScaling()本质是修改PWR外设的CR1寄存器,若未提前使能时钟,该配置操作无效,会导致电压缩放设置失败,后续高主频时钟运行时可能出现稳定性问题,甚至触发硬件异常。
代码问题确认
你提供的这段Cube IDE生成的SystemClock_Config()代码确实遗漏了PWR时钟使能步骤,属于生成代码的疏漏。正确的代码应该在调用LL_PWR_SetRegulVoltageScaling()前添加时钟使能语句:
// 新增PWR时钟使能 LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_PWR); LL_PWR_SetRegulVoltageScaling(LL_PWR_REGU_VOLTAGE_SCALE1); while (LL_PWR_IsActiveFlag_VOS() != 0) { }
内容的提问来源于stack exchange,提问作者이석희
相关产品推荐
相关产品推荐

