单片机待机唤醒的几种方法解析

翻开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秒,决定是否开机。


在病理学领域中人工智能的技术应用
计算机网络安防系统的应用场所
科技带来便捷生活,全屋智能核心赋能者芯片原厂力合微
电动汽车的无线充电技术解析
韩国半导体设备商积极开发新一代HBM加工工具
单片机待机唤醒的几种方法解析
安森美半导体高额全现金收购California Micro
水表检定设备的原理及设计
太辰光扩展光器件版图 寻找国内厂商并购机会
迄今设计最漂亮的苹果手机:iphone8设计欣赏
低功耗24位 Δ-ΣADC MAX11410的特性及应用分析
汇顶科技成为首家市值破千亿的A股半导体公司
第九届国际柔性与印刷电子大会(ICFPE 2018)在常州成功举办
2016年全球汽车半导体厂商排名
一种新颖的触摸式开关台灯电路
奥迪威智能触控及反馈系列产品概述
10亿谷歌安卓手机用户可能面临着被黑的风险
为什么毫米波需要不同的DPD方法以及如何量化其价值
防雷浪涌保护器的行业应用综合解决方案
细菌测试仪的应用、特性及参数