PWR & 低功耗三种模式

睡眠模式:

int main(void)
{
OLED_Init();
OLED_ShowString(1, 1, "RxData:"); Serial_Init(); while (1)
{
if (Serial_GetRxFlag() == 1)
{
RxData = Serial_GetRxData();
Serial_SendByte(RxData);
OLED_ShowHexNum(1, 8, RxData, 2);
} OLED_ShowString(2, 1, "Running");
Delay_ms(100);
OLED_ShowString(2, 1, " ");
Delay_ms(100); __WFI();
}
}
在低功耗下无法直接下载程序到单片机,需要长按复位按钮,然后点击下载后松开,就可下载成功
只有在发送数据时,单片机接收数据并处理,运行到__WFI();时就进入睡眠状态,(循环体里面的逻辑不再执行),等待唤醒:USART收到数据产生中断, 唤醒之后程序继续执行,因为此时有中断,所以直接进入到中断函数内处理逻辑,再进入主循环
---
cpu核心以1.8V(内核电压一般1.2-1.8V左右)供电(省电),对外转换成3.3V


三种低功耗模式,从上到下越来越省电(越来越难唤醒)
PDDS=0,进入停机模式,PDDS=1。进入待机模式 ;然后LPDS,用来设置最后这个电压调节器(0开启,1进入低功耗模式),再使用WFI或WFE命令,芯片就可以进入停机模式
SHI&HSE关闭,LHI&LSE(内外部低速时钟)若之前开启的话不会关闭【因为维持着RTC和看门狗IWDG】
电压调节器开启或低功耗都可以维持1.8V区域寄存器和存储器的数据内容,区别是更省电(唤醒时间更久)与否
待机模式:PDDS=1 SLEEPDEEP=1 +FEI或WFE 进入,只有特定唤醒。



当停止后重新唤醒,HSI为系统时钟8M,此时需要重启HSE,配置主频率为72M (Systemlnit函数)
停止模式设置内核外的电路操作,需要用到PWR外设

int main(void)
{
OLED_Init();
CountSensor_Init(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE); OLED_ShowString(1, 1, "Count:"); while (1)
{
OLED_ShowNum(1, 7, CountSensor_Get(), 5); OLED_ShowString(2, 1, "Running");
Delay_ms(100);
OLED_ShowString(2, 1, " ");
Delay_ms(100); PWR_EnterSTOPMode(PWR_Regulator_ON, PWR_STOPEntry_WFI);
SystemInit();
}
}

示例用定时器间隔唤醒
使用待机模式一定把外部耗电电路的元器件省去隔绝(LDO&指示发光二极管等),才能真正省电

int main(void)
{ //因为是从头开始运行,自动调用SystemInit();
OLED_Init();
MyRTC_Init(); RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR, ENABLE);//开启PWR时钟 OLED_ShowString(1, 1, "CNT :");
OLED_ShowString(2, 1, "ALR :");
OLED_ShowString(3, 1, "ALRF:"); PWR_WakeUpPinCmd(ENABLE);//可以使用引脚触发高电平唤醒,使能后自动配置这个引脚 uint32_t Alarm = RTC_GetCounter() + 10;
RTC_SetAlarm(Alarm);
OLED_ShowNum(2, 6, Alarm, 10); while (1)
{
OLED_ShowNum(1, 6, RTC_GetCounter(), 10); //随着CNT增大,会和设定的闹钟值ALR相等,触发闹钟标志位1(可开中断)
OLED_ShowNum(3, 6, RTC_GetFlagStatus(RTC_FLAG_ALR), 1); OLED_ShowString(4, 1, "Running");
Delay_ms(100);
OLED_ShowString(4, 1, " ");
Delay_ms(100); OLED_ShowString(4, 9, "STANDBY");//记得要在待机之前把外部控制的设备全部关停
Delay_ms(1000);
OLED_ShowString(4, 9, " ");
Delay_ms(100); OLED_Clear(); PWR_EnterSTANDBYMode(); //开启待机
}
}
当VDD或VDDA电压过低时复位


可编程PVD
正常供电3.3 ;
2.9-2.2 PVD监控【正常0,过低1】(提醒电压低), 可申请中断(外部中断【可以唤醒低功耗】),此时还可以正常工作
1.9就是复位电路工作了,不让动了
PWR & 低功耗三种模式的更多相关文章
- git push :推送本地更改到远程仓库的三种模式
摘要:由于在git push过程中,no-fast-forward 的push会被拒绝,如何解决git push失败的问题?这里面有三种方法,分别会形成merge形式的提交历史,线性形式的提交历史,覆 ...
- App开发三种模式
APP开发三种模式 现在App开发的模式包含以下三种: Native App 原生开发AppWeb App 网页AppHybrid App 混合原生和Web技术开发的App 详细介绍: http:// ...
- [转]VMware Workstation网络连接的三种模式
经常要使用VMWare Workstation来在本地测试不同的操作系统,以前也搞不清楚网络连接三种模式,最近看了几篇文章才算明白.现总结如下: 1. VMware Workstation的虚拟网络组 ...
- LVS三种模式配置及优点缺点比较
目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种(LVS-DR,LVS-NAT,LVS-TUN)模式的简要配置 LVS是什么: http://www.lin ...
- LVS三种模式配置及优点缺点比较 转
LVS三种模式配置及优点缺点比较 作者:gzh0222,发布于2012-11-12,来源:CSDN 目录: LVS三种模式配置 LVS 三种工作模式的优缺点比较 LVS三种模式配置 LVS三种 ...
- MySQ binlog三种模式
MySQ binlog三种模式及设置方法 1.1 Row Level 行模式 日志中会记录每一行数据被修改的形式,然后在slave端再对相同的数据进行修改 优点:在row level模式下,bin- ...
- delegate,notifucation,KVO三种模式实现通信的优缺点
在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delega ...
- 辛星跟您玩转vim第一节之vim的下载与三种模式
首先值得一提的是,我的vim教程pdf版本号已经写完了,大家能够去下载,这里是csdn的下载地址:点此下载 ,假设左边的下载地址挂掉了,也能够自行在浏览器以下输入例如以下地址进行下载:http://d ...
- VMware虚拟机上网络连接(network type)的三种模式--bridged、host-only、NAT
VMware虚拟机上网络连接(network type)的三种模式--bridged.host-only.NAT VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换 ...
- hadoop学习;自己定义Input/OutputFormat;类引用mapreduce.mapper;三种模式
hadoop切割与读取输入文件的方式被定义在InputFormat接口的一个实现中.TextInputFormat是默认的实现,当你想要一次获取一行内容作为输入数据时又没有确定的键.从TextInpu ...
随机推荐
- 18.3 NPCAP自定义数据包过滤
NPCAP 库是一种用于在Windows平台上进行网络数据包捕获和分析的库.它是WinPcap库的一个分支,由Nmap开发团队开发,并在Nmap软件中使用.与WinPcap一样,NPCAP库提供了一些 ...
- C# 实现对网站Get与Post请求
C# 是一种面向对象的编程语言,提供了强大的Web请求库和API来执行 HTTP GET 和 POST 请求.在C#中,我们可以使用 System.Net 命名空间下的 WebRequest 和 We ...
- 监控Celery不一定非要使用Flower
运维平台中有许多的周期/定时/异步任务,例如证书扫描.数据备份.日志清理.线上作业等等,这些任务的执行都是借助于Celery来完成的.任务多了之后就会遇到一系列的问题,例如我之前写过的将任务分多队列来 ...
- python函数:匿名函数,闭包,装饰器
匿名函数 可以只有一个入参或多个入参,但返回值只能是一个函数 #普通函数 def sum(a,b): return a+b #等价的匿名函数 add = lambda a,b: a+b 闭包 举一个 ...
- 手撕B树 | 二三查找树,B+树B*树你都会了吗? | 超详细的数据结构保姆级别实现
说在前面 今天给大家带来B树系列数据结构的讲解! 博主为了这篇博客,做了很多准备,试了很多画图软件,就是为了让大家看得明白!希望大家不要吝啬一键三连啊!! 前言 那么这里博主先安利一下一些干货满满的专 ...
- Softmax偏导及BP过程的推导
Softmax求导 其实BP过程在pytorch中可以自动进行,这里进行推导只是强迫症 A Apart证明softmax求导和softmax的BP过程 本来像手打公式的,想想还是算了,引用部分给出la ...
- 面试官:Sentinel是如何实现限流的?
限流是一种通过控制系统对外提供的资源.服务或接口的访问数量或速率,以保护系统免受过载的一种策略. 它的目的是确保系统能够在承受范围内提供稳定和可靠的服务,避免因过多的请求而导致系统崩溃.资源耗尽或响应 ...
- shell 两个数组比较,得到元素的并集、交集等
linux shell 实现数组比较,取元素的并集.交集时,可以使用sort排序.uniq统计和awk数据过滤. shell 实现如下 file_list_1=("test1" & ...
- SQLWorkbench使用自定义JDBC驱动连接数据库
一.Windows上使用SQLWorkbench 1. 添加CloudDB的驱动,点击"Manage Driver". Name : Fandatsys-CDB sample U ...
- Linux-MySQL导入示例数据库employees
1. 下载employees示例数据库employees是一个官方提供的简单数据库,在mysql的官方找到employees的说明页面,通过github下载该数据库. https://github.c ...