一、低功耗模式
1、概述
2. 身边应用的例子
A. 电脑
A. 小米手环
二、睡眠模式
三、停止模式
关于PWR_EnterSTOPMode的参数PWR_MainRegulator_ON与PWR_LowPowerRegulator_ON的区别:
#define PWR_MainRegulator_ON ((uint32_t)0x00000000)
#define PWR_LowPowerRegulator_ON PWR_CR_LPDS
#define PWR_CR_LPDS ((uint32_t)0x00000001) /*!< Low-Power Deepsleep */
执行PWR_EnterSTOPMode函数并传递PWR_LowPowerRegulator_ON参数表示连为SRAM、寄存器供电的调压器也进入低功耗模式,可参考以下PWR_CR寄存器的描述:
PWR_MainRegulator_ON表示停止模式下调压器还是在开启状态。
四、待机模式
注意事项,当使用停止模式或待机模式下,如果要使用JLink烧录程序,必须得按一下复位键,然后立即点击下载键才能进行下载,原因在于唤醒的时候需要时间过长,导致超时不能进行正确地下载!
思考题:
在红外接收解码的程序当中,添加LED灯的控制、蜂鸣器的控制,并结合低功耗模式的使用。思考当低功耗模式为睡眠模式和停止模式,这两种有什么区别?区别是什么?
答:在睡眠模式下,红外数据能够正确地接收!在停止模式下,由于重新唤醒CPU,且切换时钟,导致接收红外数据超时,所以红外数据不能够正确地接收!
五、程序设计
1、睡眠模式
唤醒时间短,执行_WFI(); 内核停止,外设依然工作
printf("This is sleep testrn");
while(1)
{
printf("cpu run into sleep....rn");
//执行__WFI指令,让CPU进入睡眠模式,立即停止运行指令
__WFI();
//延时500ms
//delay_ms(500);
printf("cpu wake up from sleep...rn");
//延时500ms
//delay_ms(500);
}
2、停止模式
printf("This is stop testrn");
while(1)
{
printf("cpu run into stop....rn");
//添加一个小延时,原因在进入停止模式的时候,串口缓冲区还有部分的数据,但是串口时钟已经开始不准确
delay_us(100);
//让CPU进入停止模式,CPU不仅仅停止运行任何指令,而且所有的时钟都停止
//内部的SRAM与寄存器的内容都会保留、PWR_LowPowerRegulator_ON参数表示连为SRAM、寄存器供电的调压器也进入低功耗模式
PWR_EnterSTOPMode(PWR_LowPowerRegulator_ON, PWR_STOPEntry_WFI);
//退出停止模式之后,M4会自动选择内部的HSI RC振荡器作为时钟源,但是实际上我们之前的代码都是使用到PLL,得重新初始化所有时钟
SystemInit();
printf("cpu wake up from stop...rn");
}
3、待机模式
printf("This is standby testrn");
while(1)
{
printf("cpu run into standby....rn");
//添加一个小延时,原因在进入待机模式的时候,串口缓冲区还有部分的数据,但是串口时钟已经开始不准确
//delay_us(100);
//让CPU进入待机模式,CPU不仅仅停止运行任何指令,而且所有的时钟都停止,1.2V域断电 RAM断电,唤醒效果相当于复位
PWR_EnterSTANDBYMode(); //RTC闹钟事件可唤醒
printf("cpu wake up from standby...rn");
}
上一篇:STM32小白入门(第16天)-------红外
下一篇:STM32小白入门(第14天)-------Flash
推荐阅读最新更新时间:2024-11-09 10:49
设计资源 培训 开发板 精华推荐
- LT1021DCN8-7 负串联电压基准的典型应用
- stm32f401ccu6
- LMT70线性温度传感模块
- LT1615,锂离子至 15V 升压转换器
- #第八届立创电赛#桌面时钟pro
- LED点阵时钟
- 具有 DCR 检测、非线性控制和 DCR 温度补偿的 LTC3867IUF 1.5V、15A 输出的典型应用电路
- 使用 RP40-11005SFR DC/DC 转换器并根据 EN55022 Class B 进行 EMC 滤波的典型应用(110Vin 双输出)
- 使用 ams AG 的 AS1312-BTDT-33 的参考设计
- 使用 Richtek Technology Corporation 的 RT8153D 的参考设计