最近在研究低功耗,整个电路板上电后一测,停止模式下整板功耗也有30ma,高的吓人,赶紧从头一个个加外围电路测。发现大头是ldo静态电流过大,不过单片机本身休眠电流也不小。用万用表测量,不是像理想中27mA跳变到14uA,会慢腾腾往下走,有时候停在130uA,有时候会经过较长时间,稳定在30uA,也有时候会在60uA。一天早中晚几次上电都有差别。这个不明原因,和万用表有关吗?
使用的是hal库
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);//进入休眠停机模式
且在cubemx里选上了Set all free pins as analog (to optimize the power consumption) //将未使用引脚设为模拟输入
在查阅资料时候,有些疑惑:
1.有些人使用的不是hal库+cubeMX,似乎是标准库。他们在进入休眠前将引脚功能全部禁用,仅保留需要的。
我是否需要这么操作?是否有相关的hal库函数?在唤醒后除了初始化时钟,还要把禁用的全部初始化吗?
2.有人提出引脚上下拉会消耗电流。
所有IO管脚,如果高阻状态端口是高电平,就设成上拉输入,如果高阻状态是低电平,设成下拉输入,如果高阻是中间状态,设成模拟输入。
我在设置时候勾选了模拟输入,那些引脚还要额外设置吗?在一个个加外围电路过程中,部分引脚如果悬空未连接,设置了上下拉也会耗电吗?
3.有提出将晶振脚和SW脚设成普通io的
这两点听着有点离谱,能大幅降低功耗吗
|