目前stm32已经非常流行了,那么本文讨论下stm32低功耗模式,不多说先上手册内容!
这是英文文档 不好看懂是吧,下面看中文文档!
我对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,STM32F4的类似目前没有研究。
低功耗模式有三种,
1.睡眠模式,( CM3 内核停止,外设仍然运行)此功耗是最高的。
2.停止模式,(所有时钟都停止)此功耗较低,典型大概在20uA左右。
3.待机模式,( 1.8V 内核电源关闭)此功耗最低,典型大概在2uA左右。
如果不行那就看手册,上图
一般我们做开发大多都是选择停机模式,因为停机模式功耗较低。而且任一中断或事件都能唤醒,待机模式虽然功耗最低,也就差10个微安,但是只有特定的唤醒脚可以唤醒,实时性不是很好。
我们用停机模式也能降到10几个uA,实时性又好,干嘛不用呢。
要怎么做才能把停机模式功耗进一步降低呢。我们先看官方库进入低功耗。voidPWR_EnterSleepMode(uint8_tPWR_SLEEPEntry);//睡眠模式voidPWR_EnterSTOPMode(uint32_tPWR_Regulator,uint8_tPWR_STOPEntry);//停机模式voidPWR_EnterSTANDBYMode(void);//待机模式123
这里我们用到停机模式,有两个参数
第一个PWR_Regulator是选择电源是否进入低功耗#definePWR_Regulator_ON//电源不进低功耗唤醒基本没延迟#definePWR_Regulator_LowPower//电源进去低功耗不过唤醒启动有一点延迟12
第二个参数PWR_STOPEntry#definePWR_STOPEntry_WFI//中断唤醒#definePWR_STOPEntry_WFE//事件唤醒12
停机模式唤醒后自动选择系统内部时钟,看自己的应用是否需要重新配置;如果你的系统时钟是HSI或者HSE是要重新配置,一般都需要重新配置,直接调用系统时钟配置函数。
另外停机模式唤醒后,flash程序是从中断或事件开始执行的。
我们要做到停机模式更低功耗,例程RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//使能时钟PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);12
第一个参数要配置电源低功耗模式,第二个随你是中断唤醒还是事件唤醒,或者两者都要;
第二步你要把所有引脚IO口释放,全部配置成模拟输入状态,IO口几乎0消耗,如果不信下面我们来看手册
我们只要在进入低功耗之前把IO口配置一下就行了(根据自己应用需要配置IO),但是唤醒之后就要重新配置IO口了。
在这里我要提醒广大朋友,在配置IO模拟输入之前,一定不要锁定IO口,我就犯了这个毛病,在配置成模拟输入之前我们串口两个引脚锁定了导致我的功耗一直在90uA左右下不去,老费劲了,挣了我一天时间才发现,最后功耗在10几uA左右,这功耗已经相当低了,能适应现在电池行业不是很发达的时代了,用四节5号电池够你用至少1年了。
如果觉得《stm32芯片休眠模式_STM32睡眠模式低功耗(停止模式)》对你有帮助,请点赞、收藏,并留下你的观点哦!