低功耗模式
本文讨论下STM32低功耗模式,先看如下手册。
对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,低功耗模式有三种:
睡眠模式,CM3 内核停止,外设仍然运行,此功耗是最高的
停止模式,所有时钟都停止,此功耗较低,典型大概在20uA左右
待机模式,1.8V 内核电源关闭,此功耗最低,典型大概在2uA左右
一般做开发大多都是选择停机模式,因为停机模式功耗较低,而且任一中断或事件都能唤醒。待机模式虽然功耗最低,电流只差10个微安,但是只有特定的事件和引脚可以唤醒,实时性不是很好。
先来看下官方库进入低功耗的方式。
void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); //睡眠模式 void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry); //停机模式void PWR_EnterSTANDBYMode(void); //待机模式
这里我们用到停机模式,有两个参数 。
第一个PWR_Regulator是选择电源是否进入低功耗。
#define PWR_Regulator_ON //电源不进低功耗 唤醒基本没延迟#define PWR_Regulator_LowPower //电源进去低功耗 不过唤醒启动有一点延迟
第二个参数PWR_STOPEntry选择唤醒的方式。
#define PWR_STOPEntry_WFI //中断唤醒#define PWR_STOPEntry_WFE //事件唤醒
停机模式唤醒后自动选择系统内部时钟,看自己的应用是否需要重新配置。如果你的系统时钟是HSI或者HSE是要重新配置,一般都需要重新配置,直接调用系统时钟配置函数。
另外停机模式唤醒后,flash程序是从中断或事件开始执行的。
如何做到停机模式更低功耗
代码
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE); //使能时钟 PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);
上面代码第一个参数PWR_Regulator_LowPower是配置电源低功耗模式。第二个参数PWR_STOPEntry_WFI用来确定是中断唤醒还是事件唤醒,或者两者都要。
第二步你要把所有引脚IO口释放,全部配置成模拟输入状态,此时IO口几乎0消耗,具体见手册说明。
我们只要在进入低功耗之前把IO口配置一下就行了(根据自己应用需要配置IO),但是唤醒之后就要重新配置IO口了。
注意,在配置IO模拟输入之前,一定不要锁定IO口。我之前就踩了这个坑,在配置成模拟输入之前我们串口两个引脚锁定了导致我的功耗一直在90uA左右下不去。
正确配置的功耗在10uA左右,这功耗已经相当低了,用四节5号电池够你用至少1年了。
上一篇:STM32嵌入式开发,米尔STM32MP135核心板助力充电桩发展
下一篇:STM32F1 ADC主要特性和结构框图解析
推荐阅读最新更新时间:2024-11-10 07:19
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- LTC2286IUP 演示板,DeMUX 双路 ADC,+3.0V,25Msps 10 位 1MHz
- 基于 STM32 Nucleo 的 L62xx 系列双刷直流和步进电机驱动器的评估套件环境
- 用于便携式的 3V DC 到 DC 单输出电源
- 555定时器 1811571134
- 1800 - 2500 MHz 接收器应用中的 BGA622 硅锗通用低噪声放大器 MMIC 配置 B
- I2CISOLATORCLICK,基于 iso1540 数字隔离器的评估套件
- 格子谜题手动布线
- ADP1650 稳压模式在 LED 驱动器应用中的典型应用
- 使用 MaxLinear, Inc 的 SPX1129 的参考设计
- MC33074ADR2G 交流/直流接地电流监视器的典型应用