一直对STM32L053的低功耗很感兴趣,于是乎开始动手了。
开始是一头雾水,因为没任何提示啊。
原来几个例子都只是错误的时候LED2闪。
1, PWR_STANDBY PWR_STANDBY_RTC 这两个例子。
PWR_STANDBY_RTC 把LED2加到延时5秒的函数后面看到隔那么几秒就出现LED亮灭。
因为他是靠RTC唤醒。而且唤醒后LED的GPIO时钟等是开启的。
HAL_Delay(5000);
BSP_LED_On(LED2);
HAL_Delay(1000);
BSP_LED_Off(LED2);
HAL_Delay(1000);
BSP_LED_On(LED2);
HAL_Delay(1000);
BSP_LED_Off(LED2);
HAL_Delay(1000);
PWR_STANDBY 要按用户按键就闪。
2, PWR_STOP PWR_STOP_RTC要闪LED不行(但还是运行和停止可以的,反正四个程序都能测试节电和正常运行用电),看了一下,估计是没打开GPIO设备时钟。也懒得搞了。喜欢的可以加进去。
这
两个程序和前面两个程序的最好还是搞个万用表可以测试UA电流。直接接到JP6,注意是红表笔接靠近C17,黑表笔靠近LM1117
测试发现,唤醒的电流在5.85毫安左右,停止模式1UA左右,但因为表不是很准,只能大概。
上面1的例子如果去掉LED显示电流接近。
测试注意不要用调试,直接编译成HEX文件去掉调试信息。烧进芯片。
以图为证:
下面两个图为20MA和2000UA档测运行电路图
下面两个图为2000UA档测试停止电流图
总结一下,
STM32的停止模式和STANDBY模式可以有IO和RTC唤醒。
它们都连到EXTI Line。也就是说配置了EXTI Line去唤醒。
然后EXTI Line去配置一个IO或者RTC:
RTC有外部32.768 LSE和内部的LSI时钟都可以选。随便选一个,大概都是耗费1~2UA的电流。
看STM32F030的资料停止模式等的电流也是比较小和这个差不多,就是运行时电流有些差别。
因为运行时要内核动的,内核一个是M0,一个是M0+,外设都差不多。特别是RTC这些,还有内存什么的这些我想ST都是使用的一样的技术。
本帖最后由 damiaa 于 2014-12-8 11:30 编辑