STM32—进入STOP模式后功耗下不去问题

本文介绍了一次调试过程中因忘记关闭ADC导致板子进入STOP模式后电流无法降至预期水平的问题。通过加入HAL_ADC_Stop函数成功解决了功耗过高的问题,并验证了ADC关闭前后电流消耗的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景:

最近调试板子进入STOP模式后发现电流为mA级别,功耗降不下去,最终发现是ADC开启后,忘记关闭了,导致有1.45mA的电流消耗。

内容:

利用HAL_PWR_EnterSTOPMode(PWR_MAINREGULATOR_ON, PWR_STOPENTRY_WFI)函数使板子进入STOP模式后,电流一直降不下去。之后调了好久,才发现调用ADC采集后,忘记把ADC关掉了,真是蛋疼啊。代码如下:

 

HAL_ADC_Start(&hadc);        //开启ADC                      
HAL_ADC_PollForConversion(&hadc,10);//进行ADC 转换,然后对转换后数据进行换算。关键的一步,转换之后没有调用HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc)函数把adc转换关闭,  导致板子进入STOP模式adc一直耗电。

加入HAL_ADC_Stop(&hadc)后,测试板子的功耗果然下去了。

再查询芯片手册,发现ADC消耗电流为1450uA,与降低的功耗一致,确实为ADC未关闭引起。

           

### STM32功耗模式概述 STM32提供了多种低功耗模式,这些模式允许开发者根据具体应用场景优化系统的能耗效率。默认状态下,在系统复位或上电复位之后,微控制器处于运行模式,在此期间HCLK为CPU提供时钟信号以便执行程序代码[^2]。 一旦应用程序逻辑需要持续处理数据(比如等待特定外部事件),则可以通过切换至同的低功耗状态来减少能量消耗。常见的几种低功耗模式包括睡眠(Sleep)、停止(Stop)以及待机(Standby),每种模式对应着同程度的能量节约措施和唤醒机制[^1]。 对于更深层次的节能需求,还可以探索诸如深度睡眠(deep sleep)等高级选项,并且合理规划任务调度与中断响应策略也是至关重要的环节之一。 ### 实现过程详解 为了使STM32进入功耗模式,通常遵循如下操作流程: #### 配置前准备 - **关闭必要的外设电源**:确保仅开启当前所需的功能模块供电路径; - **调整电压调节器设置**:依据所选工作模式适当调低内部稳压电路输出水平以进一步削减静态电流损耗; ```c // 设置PWR控制寄存器中的相应位 PWR->CR |= PWR_CR_LPDS; // 选择低压差线性稳压器(LDO)作为主供应源 ``` #### 进入指定低功耗模式 根据同类型的休眠级别采取相应的指令集命令让MCU暂停活动直至触发预定义条件为止。例如要激活STOP模式可采用下面的方法: ```c RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); // 开启PWR接口时钟 PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI); // 使用WFI (Wait For Interrupt) 指令等待直到发生任何有效的IRQ请求才恢复运作 __WFI(); ``` 上述代码片段展示了如何配置并转入STOP模式的过程,其中涉及到对电源管理和重置与时钟控制系统内核部分的操作[^3]。 #### 设定合适的唤醒源 为了让处理器能够从静默状态下被重新激活,必须事先安排好至少一种可靠的唤醒途径。这可能涉及使用实时时钟(RTC)产生的警报信号或者是检测到某个GPIO引脚上的边沿变化等情况。这里给出一个基于RTC闹钟功能的例子说明怎样建立这样的机制: ```c void RTC_AlarmConfig(void){ /* ... 初始化RTC硬件参数 */ // 启用RTC报警A中断通道 RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP | RCC_APB1Periph_PWR, ENABLE); PWR_BackupAccessCmd(ENABLE); // 编写更多关于设定时间和日期的具体细节... } ``` 这段C语言函数用于初始化RTC组件并将它配置成可以在预定时刻发出警告脉冲从而打断沉睡中的MCU使其恢复正常工作的样子[^4]。 ### 应用实例分享 在一个实际案例中,某团队开发了一款基于STM32F205芯片的产品原型,旨在每隔两分钟自动苏醒一次去读取环境温度值然后再次返回省电状态。为此他们精心挑选了适合该场景特点的最佳实践方案——即利用内置看门狗计数器配合外部按钮输入共同构成双重保障型唤醒结构,同时还实现了精确的时间管理服务以满足定时采样的业务诉求。 此外,另一个开源项目也给出了类似的解决方案框架,该项目仅支持通过RTC报警事件或物理按键按下动作两种方式来进行快速重启,而且还具备自我校正能力确保每次循环之间保持一致性的间隔周期。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值