目前stm32已经非常流行了,那么本文讨论下stm32低功耗模式,不多说先上手册内容!
这是英文文档 不好看懂是吧,下面看中文文档!
我对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,STM32F4的类似目前没有研究。
低功耗模式有三种,
1.睡眠模式,( CM3 内核停止,外设仍然运行)此功耗是最高的。
2.停止模式,(所有时钟都停止)此功耗较低,典型大概在20uA左右。
3.待机模式,( 1.8V 内核电源关闭)此功耗最低,典型大概在2uA左右。
如果不行那就看手册,上图
一般我们做开发大多都是选择停机模式,因为停机模式功耗较低。而且任一中断或事件都能唤醒,待机模式虽然功耗最低,也就差10个微安,但是只有特定的唤醒脚可以唤醒,实时性不是很好。
我们用停机模式也能降到10几个uA,实时性又好,干嘛不用呢。
要怎么做才能把停机模式功耗进一步降低呢。我们先看官方库进入低功耗。
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);
第一个参数要配置电源低功耗模式,第二个随你是中断唤醒还是事件唤醒,或者两者都要;
第二步你要把所有引脚IO口释放,全部配置成模拟输入状态,IO口几乎0消耗,如果不信下面我们来看手册
我们只要在进入低功耗之前把IO口配置一下就行了(根据自己应用需要配置IO),但是唤醒之后就要重新配置IO口了。
在这里我要提醒广大朋友,在配置IO模拟输入之前,一定不要锁定IO口,我就犯了这个毛病,在配置成模拟输入之前我们串口两个引脚锁定了导致我的功耗一直在90uA左右下不去,老费劲了,挣了我一天时间才发现,最后功耗在10几uA左右,这功耗已经相当低了,能适应现在电池行业不是很发达的时代了,用四节5号电池够你用至少1年了。
上一篇:STM32低功耗模式---停机和待机模式
下一篇:stm32 低功耗下使用看门狗(不喂狗)
推荐阅读最新更新时间:2024-11-09 11:01
设计资源 培训 开发板 精华推荐
- L7815C 可调输出稳压器的典型应用(7 至 30 V)
- EVAL-AD7401AEDZ、AD7401A 用于数据采集系统的 16 位、20 MSPS ADC 评估板
- 简易电子负载
- 使用 Analog Devices 的 LTC3130IMSE 的参考设计
- 便携式示波器-扩展数据采集模块
- MC33174VDR2G 直流耦合反相放大器最大输出摆幅的典型应用,采用单 +5V 电源
- LF60ABDT-TR 6V 低压降稳压器的典型应用
- LTC6262HTS8 桥接式差分输出运算放大器的典型应用
- 使用 ROHM Semiconductor 的 BU4217 的参考设计
- 使用 NXP Semiconductors 的 MC13226V 的参考设计