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 ...
随机推荐
- 书写自动智慧文本分类器的开发与应用:支持多分类、多标签分类、多层级分类和Kmeans聚类
书写自动智慧文本分类器的开发与应用:支持多分类.多标签分类.多层级分类和Kmeans聚类 文本分类器,提供多种文本分类和聚类算法,支持句子和文档级的文本分类任务,支持二分类.多分类.多标签分类.多层级 ...
- hv_balloon: Balloon request will be partially fulfilled. Balloon floor reached
windows 的hyper-v 安装了 centos 或者龙蜥 操作系统,会一直提示这个信息: hv_balloon: Balloon request will be partially fulfi ...
- Java并发(二十三)----同步模式之保护性暂停
1.定义 即 Guarded Suspension,用在一个线程等待另一个线程的执行结果 要点 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject 如果有结果不断从 ...
- Java开发学习(四十七)----MyBatisPlus删除语句之多记录操作
1.多记录操作 先来看下问题: 之前添加了很多商品到购物车,过了几天发现这些东西又不想要了,该怎么办呢? 很简单删除掉,但是一个个删除的话还是比较慢和费事的,所以一般会给用户一个批量操作,也就是前面有 ...
- ES6学习 第四章 字符串的新增方法
前言 本章介绍字符串对象的新增方法.不常用的方法不做重点笔记. 本章原文链接:字符串的新增方法 includes().startsWith().endsWith() 确定一个字符串是否包含在另一个字符 ...
- vue3的宏到底是什么东西?
前言 从vue3开始vue引入了宏,比如defineProps.defineEmits等.我们每天写vue代码时都会使用到这些宏,但是你有没有思考过vue中的宏到底是什么?为什么这些宏不需要手动从vu ...
- 【Lua】xLua逻辑热更新
1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新. 逻辑热更新 ...
- 【OpenGL ES】绘制魔方
1 前言 在立方体贴图(6张图)中,绘制了一个立方体,贴了 6 张图,本文的魔方案例,将实现绘制 27个立方体,贴 162 张图.贴图图片如下: 说明:inside.png 为魔方内部色块,用 ...
- eclipse安装UML插件
安装AmaterasUML AmaterasUML 是一个用于 Eclipse 的轻量级 UML 和 ER 图编辑器. 将AmaterasUML的3个jar包拷到Eclpise的plugins文件下: ...
- ORACLE FORALL介绍
ORACLE 10G OFFICIAL DOCUMNET ---------------------------------------------------------------------- ...