翻开stm32的中文参考手册,里面关于stm32的低功耗模式有详细的标注。
1、睡眠模式(cortex-m3内核停止,所有外设包括cortex-m3核心的外设,如nvic、系统时钟(systick)等仍在运行)
2、停止模式(所有的时钟都已停止)
3、待机模式(这是本文具体介绍的一种模式,也是功耗最低的模式)单片机待机唤醒的几种方法解析
在本博客中,就利用wkup引脚的上升沿来唤醒mcu、所以我们就具体来介绍待机唤醒的实现方法:
那我们要怎么来进入待机模式、、又要怎么唤醒呢?
单片机待机唤醒的几种方法解析
接下来一一介绍这三个步骤如下下:
1、 cotex_m3系统控制寄存器中的sleepdeep位:
2、电源控制寄存器(pwr_cr)中pdds位:寄存器的位:
单片机待机唤醒的几种方法解析
3、电源控制/状态寄存器(pwr_csr)中ewup位单片机待机唤醒的几种方法解析
至此、我们通过这三步、完成了进入待机模式的任务、、单片机待机唤醒的几种方法解析
继续介绍退出待机模式:还是上面那张图:
单片机待机唤醒的几种方法解析
在这里我们就利用其中一种方式来唤醒:wkup引脚的上升沿唤醒。
具体程序参考原子哥的唤醒实验代码。
从正常运行模式切换到待机模式:按住wkup键 外部中断0中断被触发 执行中断服务函数 check_up()函数开始检测 如果时间没超过3s 返回零 这时工作在正常运行模式 如果按住时间超过了3s 返回值为1进入待机模式 我们的程序在刚开始运行时就是没有按键按下、、所以没有上升沿,初始化函数里条件成立,从而进入了待机模式。
从待机模式切换到正常运行模式:按住wkup键的那一瞬间会有一个上升沿 而这个上升沿执行了唤醒功能但是没有执行外部中断0的中断服务函数 待机模式下cpu是不工作的从待机模式唤醒后的代码执行等同于复位后的执行所以程序又会从头开始执行(这句话很重要)然后又会执行到 check_up()函数检测 如果按住键盘的时间没有超过3s 还是会处于待机模式 加入超过了3s 返回值为1条件不成立 就会切换到正常运行模式 所以结论就是外部中断0的中断服务程序在待机模式切换到正常运行模式的时候从始至终是不会运行的记住:唤醒中只是说需要上升沿、并没有说要进入中断、所以实现的效果就是:
1 、如果是正常运行,先执行中断程序,判断是否3秒,决定是否待机。
2 、如果是待机状态,则先复位并初始化,判断是否3秒,决定是否开机。
UWB定位在工业领域的应用价值
MEMS是什么?
推动统一供应链“度量衡”,上汽大通携手法大大突破传统拥抱SaaS生态
电源测试一体化解决方案
房地产视频旅游专家OpenFrame收购了360度相机公司
如何实现单片机的待机唤醒
看过来看过来,PCB设计攻城狮的秘密武器在这!
不惧美国打压!华为2020年营收和利润双增长 中国市场已成营收主力
低压电工和高压电工的区别
日本将在高速公路测试自动驾驶汽车
电工电路图怎么画 电工电路图讲解
基于DS1090的频率计算器
高精度小流量双活塞式流量计的原理及设计
SKI计划在2025年占据全球30%的隔膜市场份额
气体质量流量控制器在半导体行业中的应用优势
Vishay推出性能先进的高可靠性表面贴装陶瓷安规电容器
区块链网络性能有哪一些关键的指标
计算机视觉与图像处理、机器学习之间的关系
RFID(射频识别)厂商:坤远电子(上海)有限公司简介
光伏电站的容量怎么算