最近在DIY一款支持mppt的太阳能充电器,其中使用到了STM32F030F4P6作为主控芯片。用来显示充电状态,电池电量,升压电路使能控制,输出使能控制,手机插入检测,台灯控制等等功能。但是在我DIY过程中电路工作一切正常,就是晚上待机功耗有点大,具体待机电流有多少,没有设备没有测量。就是一晚上下来单节电池电压会下降0点几伏。在通过分析后发现在没用进行太阳能充电时,单片机还在飞速运转中,必然会造成功耗的损失。所以这里就想着在空闲时间让单片机进入低功耗模式,减少待机功耗。
STM32F030休眠模式介绍
从芯片手册中可以找到以下一段文字:
大概的意思就是STM32F030F4P6支持3种低功耗模式,分别为Sleep mode(休眠模式),Stop mode(停止模式),Standby mode(待机模式)。从手册中可以看出停止模式支持任何一个外部中断将MCU从低功耗模式中唤醒,这个功能对我这个应用实在是太友好了,因为我能用来作为外部唤醒资源的只有一个按键,所以在此次DIY的过程中毫不犹豫就使用停止模式,节省来之不易的能量。
在进入停止耗模式之前需要根据应用情况将单片机内部相关外设时钟进行关闭。我这里用到了ADC,所以需要关闭ADC时钟,失能ADC。还有使用到两个定时器,所以需要失能定时器让所有定时器停止计数。还有就是记得将IO口做适当的处理,这个根据板子实际情况。具体怎样设置可以参考下面这个文章,写的不错。