一.待机模式.待机模式是低功耗中最低功耗的,内部电压调节电路被关闭,  HSE、HIS、PLL被关闭;进入待机模式后,SRAM和寄存器的内容将丢失。  (CPU停止,外设停止,RAM的数据寄存器的内容丢失)

1.特点:SRAM和寄存器的内容会丢失。外设不供电,只有CPU的备用电源在运行

2.唤醒条件:NRTS的外部复位信号,IWDG复位、WKUP引脚上的一个上升边沿或者RTC闹钟。唤醒后相当于软重启使系统复位。

3.使用步骤:

3.1 #include

void Standby_Config(void)

{

// 使能PWR时钟与BKP时钟

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

//使能后备寄存器访问

PWR_BackupAccessCmd(ENABLE);

// 使能WKUP引脚

PWR_WakeUpPinCmd(ENABLE);

// 检测Standby标志位

if(PWR_GetFlagStatus(PWR_FLAG_SB) != RESET)

{

printf("\r\n从待机模式退出\r\n");

//清除Standby标志位

PWR_ClearFlag(PWR_FLAG_SB);

}

else

{

printf("\r\n从运行模式复位\r\n");

}

}

3.2 进入睡眠模块。PWR_EnterSTANDBYMode();//使能待机模式

3.3 满足唤醒条件,进入软重启!

二 睡眠模式:相当于中场休息。退出睡眠后还得做好恢复退出时的状态(初始化系统时钟即可)

2.1特点:只有CPU停止工作,所有外设处于工作状态,SRAM和寄存器的内容保持不变。

2.2.唤醒条件:所以的外部中断,包括RTC中断.唤醒后需要初始化系统时钟。

2.3使用步骤:

2.3.1 在干完必须得工作后,通过    __WFI();//进入睡眠模式,后面的代码不执行

2.3.2 唤醒条件发生,比如外中断发生,在中断服务程中通过调用Stop_SysClkConfing()函数退出睡眠模块,执行__WFI()后面的功能。Stop_SysClkConfing()实际上就是重新初始化系统时钟即调用SystemInit()。

三 停止模式:相当于深度睡眠,放长假,比“”中场休息(睡眠模块)“”的时间长

3.1特点:停止内部1.8V供电,HSE、HIS、PLL时钟被关闭CPU时钟停止,外设全部不工作;只有CPU内存工作,数据不丢失。

3.2唤醒条件:任意的外部中断,RTC闹钟,PVD输出,USB唤醒条件。

3.3时钟步骤:与睡眠模式的操作基本相同,唯一区别就是进入睡眠时调用的函数不一样,停止模式调用的是以下函数

PWR_EnterSTOPMode(PWR_Regulator_LowPower, PWR_STOPEntry_WFI);

四 RTC定时中断:

STM32L152 RTC 日历和定时中断使用 https://blog.csdn.net/jnu_fangzebin/article/details/51543506

466ab7f51cef7bd484550fb998be8279.png

fcae959a9b57e11fc0b65d7a28ec59fd.gif

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐