STM32低功耗测试:
测试版卡:STM32F412
测试使用主要程序为STM32CubeMX示例程序PWR_CurrentConsumption
可以看到在主程序中,单片机的默认状态为RUN模式LED1定时闪烁
只有在按下USER键才会进入模式
模式选择程序如下:
#if defined (SLEEP_MODE)
/* 睡眠模式输入
- 在PLL(100MHz)运行的系统
- Flash 5等待状态
- 指令和数据缓存
- 预取开
- 从内部FLASH运行的代码
- 禁用所有外设。
- 使用EXTI Line唤醒(用户按钮)
*/
SleepMode_Measure();
#elif defined (STOP_MODE) //唯一有效
/* 停止模式输入
- RTC由LSI计时
- LP模式下的稳压器
- HSI,HSE OFF和LSI OFF(不用作RTC时钟源)
- 无IWDG
- 深度掉电模式下的闪存
- 使用由时钟控制的RTC自动唤醒(〜20s后)
*/
StopMode_Measure();
#elif defined (STANDBY_MODE)
/* 待机模式输入
- 备份SRAM和RTC OFF
- IWDG和LSI OFF
- 唤醒使用唤醒针(PA.00)
*/
StandbyMode_Measure();
#elif defined (STANDBY_RTC_MODE)
/* 在LSI条目上使用RTC的STANDBY模式
- RTC由LSI计时
- 如果不用作RTC时钟源,则IWDG OFF和LSI OFF
- 备用SRAM关闭
- 使用由时钟控制的RTC自动唤醒(〜20s后)
*/
StandbyRTCMode_Measure();
#elif defined (STANDBY_RTC_BKPSRAM_MODE)
/* 在LSI条目上使用RTC的STANDBY模式
- RTC由LSI计时
- 备份SRAM ON
- 关闭IWDG
- 使用由时钟控制的RTC自动唤醒(〜20s后)
*/
StandbyRTCBKPSRAMMode_Measure();
#endif
此示例程序的默认模式为STOP模式;在测试过程中模式的选择在stm32f4xx_lp_modes.h文件里。如下是模式配置程序
#if !defined (SLEEP_MODE) && !defined (STOP_MODE) && !defined (STANDBY_MODE)\
&& !defined (STANDBY_RTC_MODE) && !defined (STANDBY_RTC_BKPSRAM_MODE)
/* Uncomment the corresponding line to select the STM32F4xx Low Power mode */
// #define SLEEP_MODE
#define STOP_MODE
//#define STANDBY_MODE
//#define STANDBY_RTC_MODE
//#define STANDBY_RTC_BKPSRAM_MODE
#endif
找到程序的实现以及程序模式的配置后就可以进行各种模式情况下板卡的电流数据
统计表格:
模式 | RTC | RTC+LED | RTC+LED+KEY (浮置) | RTC+LED+KEY (按下) | LED状态 |
RUN | 12.4451MA | 24.5913MA | 25.0865MA |
| 开 |
SLEEP | 4.43684MA | 12.3508MA | 3.93217MA | 3.94807MA | 关 |
STANDBY | 2.2530uA | 2.2443uA | 2.2771uA | 17.2777uA | 关 |
STANDBY+RTC | 3.3250uA | 3.3128uA | 3.3420uA | 18.3548uA | 关 |
STANDBY-RTC-BKPSRAM | 3.9633uA | 3.9513uA | 3.9869uA | 18.9878uA | 关 |
STOP | 17.6921uA | 18.9280uA | 19.1208uA | 34.0783uA | 关 |