STM32WB55无法进入STOP低功耗模式 电流无下降问题求助
故障排查与修复方案
- 首先修正停止模式的调压器配置:你当前调用
HAL_PWR_EnterSTOPMode时传入的第一个参数是PWR_MAINREGULATOR_ON,主调压器工作状态下停止模式的功耗本身就很高,要实现低功耗需要改为PWR_LOWPOWERREGULATOR_ON,代码修改为:
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
- 处理GPIO漏电流问题:当前代码中
GPIOC总线时钟已经开启但没有配置任何引脚,其余端口的未使用引脚也处于悬空状态,会产生额外的漏电流。需要将所有未使用的GPIO配置为模拟输入模式,并开启上下拉避免浮空,进停止模式前关闭所有未使用外设的总线时钟。 - 排查提前唤醒问题:代码在初始化阶段就启动了LPTIM2超时中断,若定时时长过短,会导致内核刚进入停止模式就被LPTIM2的比较匹配中断唤醒,回到正常运行逻辑导致平均电流无变化。你可以临时注释掉LPTIM2启动代码,测试停止模式下的静态电流是否符合预期,再调整定时参数到合适的唤醒间隔。
- 处理双核低功耗协同问题:STM32WB55是双核架构,仅Cortex-M4内核进入停止模式无法让整芯片进入低功耗状态,若你未使用蓝牙功能,需要在进入停止模式前关闭Cortex-M0+内核的时钟、或者将M0+也配置为休眠状态;如果使用了蓝牙协议栈,需要调用协议栈提供的低功耗接口同步进入低功耗。
- 额外优化:你当前系统时钟配置中同时开启了HSE、HSI、MSI、LSI多个时钟源,进入停止模式前可以手动关闭不需要的高速时钟源,进一步降低功耗。
内容的提问来源于stack exchange,提问作者Junyu Lu
相关产品推荐
相关产品推荐

