搜索
热搜: ROHM 模拟 车载
查看: 1334|回复: 2

[分享] 如何实现单片机的待机唤醒

  [复制链接]

该用户从未签到

1347

主题

6657

帖子

0

精华

论坛元老

最后登录
2020-7-26
发表于 2020-4-3 09:11:25 | 显示全部楼层 |阅读模式
                                                                                                                       

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


                                                                               

回复

使用道具 举报

该用户从未签到

2384

主题

9837

帖子

0

精华

论坛元老

最后登录
2024-4-23
发表于 2020-4-3 12:19:29 | 显示全部楼层
学习学习如何实现单片机的待机唤醒
Rohm.png
回复 支持 反对

使用道具 举报

该用户从未签到

1347

主题

6657

帖子

0

精华

论坛元老

最后登录
2020-7-26
 楼主| 发表于 2020-4-4 12:50:35 | 显示全部楼层
shakencity 发表于 2020-4-3 12:19
学习学习如何实现单片机的待机唤醒

那你多学习学习 luomu.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|罗姆半导体技术社区

GMT+8, 2024-4-24 15:40 , Processed in 0.096264 second(s), 15 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表