三种模式
Sleep,stop,standby,省电量由小到大Sleep模式
在STM32F103中没有专用的外部库函数,而是直接利用了系统的底层库函数
__WFI(); //进入SLEEP模式
只是让CPU停止了,其他都在供电,尤其是寄存器
任意中断,不论外部还是内容,及定时、串口,管脚输入,都可以退出此模式
而在STM32F030中用专门的函数,PWR_EnterSleepMode(PWR_SLEEPEntry_WFI);
//通过中断唤醒CPU
省电量一般Stop模式
有专门的函数,PWR_EnterSTOPMode(),
可以通过任一配置成EXTI的信号把微控制器从停机模式中唤醒,EXTI信号可以是16个外部I/O口之一、PVD的输出、RTC闹钟或USB的唤醒信号。
这句话的意思是要想唤醒,必须把中断配置成exti中断,例如串口,本身有串口中断服务,但是不能唤醒,你需要把串口的输入引脚配置成exti中断才可以唤醒,tim定时器不具有外部中断功能,不能唤醒,而RTC很特殊,给了一个外部中断号,也可以唤醒,STM32官方的例子就是讲的RTC的例子,具体外部中断如下。
个人觉的,这个功能很蛋疼,主要时定时唤醒问题,只能用RTC,没有的选了。
再者是这外部输入,例如串口,这个要想唤醒,需要进行管脚的增加配置,除去正常的串口配置外,还需要把输入引脚配置成exit中断,这样才能唤醒,增加了复杂性。
串口唤醒还有问题,串口是1跟线接收数据,结果数据有8到10位,高低电平变化,不断产生中断,这样就不是一次唤醒的问题了,没有调试通过,放弃此想法
4. Standby模式
不用考虑了,寄存器数据丢失了。