先把所有端口配置为推挽输出低电平。
低功耗关键指令,两条指令不可少。
__HAL_RCC_PWR_CLK_ENABLE();
HAL_PWR_EnterSTANDBYMode();待机模式
(HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON,PWR_STOPENTRY_WFI);停机模式)
- 不打开任何外设5uA 含LDO2.5uA(待机模式),9uA停机模式
- 打开RTC并使能唤醒中断ss[5:0]compared 左右6.8uA,关闭RTC中断也是一样。( 待机模式)。在停机模式下打开RTC对功耗没有什么影响还是9uA。
- 打开iwdg, 在待机模式下功耗降不下来。在停机模式下功耗9.8uA。因为这个后面的测试都是基于停机模式。
- 把外部低速晶振接入,RTC时钟切换到外部低速晶振。功耗略增长到了10uA。
- 使能PLL 系统时钟改为16MHz RTC唤醒CPU后再对时钟配置一次。功耗增加到12.4uA。时钟改为20MHz功耗为12.3uA。时钟改为48MHz功耗为13uA。时钟为32MHz功耗为12.6uA。
- 在第5基础上,每次唤醒后增加i=1000; while(–i);32MHz功耗为23.8uA。48MH功耗为23.8uA。16MHz时为24uA。在同样的指令下更快的速度可以降低一点功耗,但不明显。
博客介绍了STM32低功耗配置,先将端口配置为推挽输出低电平,给出关键指令。测试了不同模式(待机、停机)、不同外设(RTC、iwdg)开启、不同时钟频率及操作下的功耗情况,如待机模式不打开外设5uA,停机模式9uA等。

2476

被折叠的 条评论
为什么被折叠?



