单片机休眠与唤醒二三事
Flow of PWR Mode intro单片机休眠
- 一、What is PWR Mode
- 二、 Details
- 1. Different Mode
- 2. Power Control
- 三、 Flow of config to PWR Mode ***休眠流程***
- 四、 Warning of PWR config
- 1. error of code to fall asleep ***进入休眠指令错误***
- 2. Error of config before entering asleep ***进入休眠前的配置错误***
- 3. Error of config after awaking ***唤醒后的初始化配置***
经过几次项目在用到低功耗休眠模式的配置时老是出错的囧态百出之后,痛定思痛,决定对这部分内容单独进行整理总结。
一、What is PWR Mode
PWR 即是 Power, 是低功耗休眠相关操作的关键词。 电池供电工作的电子设备为了保证续航和寿命,都在不用的时候进行低功耗休眠处理。都离不开的一项指标就是,在非工作模式状态下的低功耗休眠模式的静态功耗。
通过配置主控芯片单片机的外围IO配置以及单片机的休眠,使主控芯片在内的相关电路的静态功耗降低,起到减少消耗进而增加续航的作用。
二、 Details
1. Different Mode
一般来说,各种主控芯片MCU都会提供不同等级的休眠模式————即在不同的休眠模式里可供活动和调用的资源不尽相同,自然,他们的静态功耗等级也是不一样的。
2. Power Control
在进入对应等级的低功耗休眠模式之前(指进入休眠这条指令之前),要对相应的资源进行关闭处理。
不关闭的话,举个例子,假如你的休眠模式是可以被定时器中断或者ADC捕获/ADC转换中断唤醒了,在休眠之前没有关闭这些中断的话,就会被频繁的唤醒(尤其在时基较小的情况下)。
要注意关断的资源包括但不限于:ADC、Timer、WTD等
三、 Flow of config to PWR Mode 休眠流程
- 关总中断
- GPIO的睡前配置:非休眠唤醒的引脚通常是配置成输出低,减少漏电流。(应根据具体电路做相应调整)
- 关闭ADC和Timer
- 关闭PWR的低电平自动唤醒功能
- 使能唤醒IO的外部中断
- 刷新各标志位(外部中断标志位、休眠唤醒标志位)
- 判断此时无按键或适配器插入(有任意其一即跳过下一步的休眠指令,恢复单片机初始化配置)
- 进入休眠模式(根据功耗要求及需要待机的资源要求选择对应的休眠模式)
- (被唤醒之后从休眠指令之后继续执行)
- 系统休眠唤醒的初始化
- 使能Timer,时基开始运转。
四、 Warning of PWR config
And then I’d like to talk about the warnings and errors in PWR’s config.
1. error of code to fall asleep 进入休眠指令错误
可通过观测整个主控板的整体静态功耗来判断是否进入休眠模式,较低功耗的休眠模式常为几个uA微安级别,而非休眠状态下的静态功耗则至少是mA毫安级别,如果没有进入睡眠,首先检查进入睡眠的这条指令封装的对应的寄存器操作是否是正确的.
2. Error of config before entering asleep 进入休眠前的配置错误
这种错误会导致出现能顺利进入睡眠但是会被错误的配置频繁唤醒,或者静态功耗居高不下。
优先检查PWR_LVR 和 PWR_LVI 即单片机自带的低电平自动复位和唤醒。
其次检查Timer和ADC 的对应中断 有些单片机的休眠模式允许的唤醒中断方式比较多,未关闭Timer定时器中断和ADC中断的话,很大可能会被时基的定时器中断唤醒或者被ADC采样转换中断唤醒。
3. Error of config after awaking 唤醒后的初始化配置
如果唤醒之后Timer没有及时使能,系统的时基没有正常工作,则一切跟时基相关的状态切换和输出都会瘫痪,造成系统假死在这一段的现象。
单片机休眠与唤醒二三事相关推荐
- STC15W系列单片机休眠唤醒与看门狗配置问题
STC15W系列单片机休眠唤醒与看门狗配置问题 关于STC单片机之定时器唤醒与看门狗寄存器配置 硬件看门狗 硬件看门狗配置 主程序参考配置 本次是记录自己在STC单片机低功耗模式下使用过程中遇到的一些 ...
- 安装WIN10Ubuntu双系统二三事
目录 第一章 安装WIN10&Ubuntu双系统二三事 文章目录 目录 前言 一.个人电脑上安装Linux环境 二.Ubuntu的U盘引导盘制作 三.Ubuntu磁盘分区 四.安装Ubuntu ...
- Linux进程休眠和唤醒
当进程以阻塞的方式通信,在得到结果前进程会挂起休眠. 为了将进程以一种安全的方式进入休眠,我们需要牢记两条规则: 一.永远不要在原子上下文中进入休眠. 二.进程休眠后,对环境一无所知.唤醒后,必须再次 ...
- 计算机休眠唤醒后 网络受限,Win7系统待机/休眠被唤醒后笔记本WIFI无线网络无法连接解决方法...
有的时候,我们会暂时离开电脑,希望回来的时候又可以快速使用电脑,所以我们经常会使用待机.休眠功能,当我们将系统待机时,不仅可以快速的恢复到之前电脑的工作状态,还可以省电.但是我们使用笔记本的时候,发现 ...
- 2022-06-29 AndroidR 获取接近传感器Proximity Sensor的信号,休眠和唤醒。
一.底层的驱动在这里不提,只关心上层. 二.实现AndroidR 获取接近传感器Proximity Sensor的信号,休眠和唤醒的方法:获取SENSOR_SERVICE服务,侦听Sensor事件. ...
- 计算机的二三事——软件篇
计算机的二三事--软件篇 写在前面 第一部分 操作系统 1.1 操作系统(OS) Windows MacOS Linux 1.2 操作系统的架构(x86(32位)/x64(64位)/arm(64位)) ...
- 【RTOS训练营】队列的读写、休眠和唤醒、常规应用、使用和晚课提问
一:队列的读写 对于队列,我们只要理解它就是一个环形缓冲区,然后还可以去休眠.唤醒,就可以了. 1.写数据的时候,如果没有空间自己就休眠 2.读数据的时候,如果没有数据自己就休眠 3.写数据成功之后, ...
- 标准linux休眠和唤醒机制分析
标准linux休眠和唤醒机制分析 标准linux休眠和唤醒机制分析(一) 说明: 1. Based on linux2.6.32, only for mem(SDR) 2. 有兴趣请先参考阅读:电源管 ...
- 标准linu休眠和唤醒机制分析(一)
说明: 1. Based on linux2.6.32, only for mem(SDR) 2. 有兴趣请先参考阅读: 电源管理方案APM和ACPI比较.doc Linux系统的休眠与唤醒简介.d ...
最新文章
- 计算机word做课程表实验报告,word制作课程表.doc
- GridView自动排序(原创)
- 图论(八)最小生成树
- 微信验证服务器是怎么回事,微信服务器认证为什么需要这么多参数?
- python-argparse使用
- linux下如何产生core,调试core
- createprocess失败代码2_极客战记[森林]:边地之叉-通关代码及讲解
- Tecplot中如何提取水线面(自由表面)并绘图
- c语言综合编程,C语言编程入门——综合练习(一)
- numpy 库使用说明
- vbe编程真人小代码
- vue json对象转数组_Vue优秀表单组件,用Vue构建表单的最简单方法——Vue Formulate
- 【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
- 常见测试概念-分级测试、灰度测试、AB测试
- 【HNOI2015】落忆枫音
- Linux CentOS 7网络配置基础
- 使用 LayUI+SpringBoot+Solr 模仿百度、做站内搜索引擎
- 淘宝客订单同步,关联私域授权用户,给用户返分,流程是如何串起来的
- GraphSAGE论文阅读笔记
- 【前端】vue-slider实现可设置选择范围的时间轴