STM32超低功耗入门之唤醒
一. 认识唤醒
人每天晚上要睡觉,早上要醒来。那 MCU 进入低功耗模式之后,在我们需要他卖力干活的时候,还需要他能醒来,所以在前面的文章对于各种功耗模式有了一个全面的认识了之后,还要再总结以下再不同模式下改如何来唤醒 MCU。
二,唤醒 MCU
如何唤醒 MCU 最好的办法当然是查看官方的手册。 STM32L4 系列提供了多种低功耗模式,不同的模式下唤醒的方式也不相同,可以查看手册。
睡眠模式的唤醒
睡眠模式分为,普通睡眠模式 和 低功耗睡眠模式。
通过上图知道唤醒方式的描述是:any interrupt or event
意思就是,所有的中断或者事件。
中断:中断比较好理解,比如定时器中断,串口中断
事件:wakeup 按键触发事件
睡眠模式唤醒后会从进入低功耗模式之后的代码开始执行
注意 :- 如果使用 CUBEMX 生才的代码默认是开启了
systick
,模式会每 ms 产生一次中断,在 MCU 进入睡眠模式的时候,需要调用HAL_SuspendTick();
来关闭systick
中断
- 如果使用 CUBEMX 生才的代码默认是开启了
STOP 0 模式的唤醒
STOP0 模式下的唤醒上图已经描述的很详细了,他和睡眠模式唤醒的区别在于,不是所有的中断了,仅仅是在 STOP 0 模式下可以运行的外设中断才可以唤醒 MCU。
STOP 0 模式 唤醒之后会从进入 STOP 0 模式之后的代码开始运行。
STOP 0 模式唤醒之后需要重新配置时钟
唤醒方式的名词解释:
名词 | 解释 |
---|---|
reset pin | 复位按键 |
all I/Os | 所有可以配置成 GPIO 的 |
BOR | 掉电复位 |
PVD | 可编程电压检测器 |
PVM | 外围电压监测 |
其他都是常见外设的中断,要注意检查支持唤醒的外设。
STOP 1 模式的唤醒
STOP 1 模式下的唤醒参考上图,他和 STOP 0模式唤醒的区别在于,支持的外设进一步减少
STOP 1 模式 唤醒之后会从进入 STOP 1 模式之后的代码开始运行。
STOP 1 模式唤醒之后需要重新配置时钟STOP 2 模式的唤醒
STOP 2 模式下的唤醒参考上图,他和 STOP 1 模式唤醒的区别在于,支持的外设进一步减少
STOP 2 模式 唤醒之后会从进入 STOP 2 模式之后的代码开始运行。
STOP 2 模式唤醒之后需要重新配置时钟
注意- 支持的外设要注意,比如 STOP2 已经不支持 USART 的中断唤醒
- 支持的外设要注意,比如 STOP2 仅仅支持 I2C3 的中断唤醒,I2C1 I2C2 已经不再支持了。
5. 待机模式的唤醒
待机模式的唤醒方式见上图,可以在 cubemx 配置唤醒引脚
配置完之后,就可以直接在程序中使用了,使用方法如下:
HAL_PWR_DisableWakeUpPin(PWR_WAKEUP_PIN2);//禁用所有使用的唤醒源:PWR_WAKEUP_PIN2 connected to PC.13__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU);//清除所有相关的唤醒标志HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2_HIGH);//启用连接到PC.13的WakeUp PinHAL_PWR_EnterSTANDBYMode(); // 进入待机模式
这里要根据具体板子的设计确定按下按键之后是高电平还是低电平。
停机模式唤醒后,MCU 复位,从程序开始的地方运行
待机模式下,唤醒之后需要判断程序是否是从待机模式唤醒的
if (__HAL_PWR_GET_FLAG(PWR_FLAG_SB) != RESET){ /* Clear Standby flag */__HAL_PWR_CLEAR_FLAG(PWR_FLAG_SB); __HAL_PWR_CLEAR_FLAG(PWR_FLAG_WUF2);}
- 停机模式的唤醒
停机模式下只有三种方式唤醒:复位,唤醒按键,RTC。其中唤醒和停机模式下是一样的。
RTC 唤醒 MCU 有两种方式:设置为唤醒 和 闹钟
设置唤醒的代码如下:
To configure the wake up timer to 60s the WakeUpCounter is set to 0xFFFF:Wakeup Time Base = 16 /(~32.000KHz) = ~0.5 msWakeup Time = 0.5 ms * WakeUpCounterTherefore, with wake-up counter = 0xFFFF = 65,535 Wakeup Time = 0,5 ms * 65,535 = 32,7675 s ~ 33 sec. */HAL_RTCEx_SetWakeUpTimer_IT(&RTCHandle, 0x0FFFF, RTC_WAKEUPCLOCK_RTCCLK_DIV16);/* Enter the ShutDown mode */HAL_PWREx_EnterSHUTDOWNMode();
三,总结
不同的模式下会有不同的唤醒方式,在实际使用过程中要注意不同模式下支持的外设是不一样的,不同的低功耗模式,唤醒之后开始代码执行的位置也不一样。要根据实际的项目需求,来选择使用的低功耗模式和对应的唤醒方式。
STM32超低功耗入门之唤醒相关推荐
- STM32超低功耗入门之睡眠模式
一. 认识睡眠模式 查看官方手册对睡眠模式的描述: 通过上图可以得出结论: 睡眠模式有 4 种电压调节器方案 在睡眠模式下 CPU 是停止状态 在睡眠模式下程序在 SRAM 执行情况下,Flash 可 ...
- STM32超低功耗入门之停止模式
一. 认识停止模式 STM32L4 系列提供了 3 种停止模式:stop0 , stop1 , stop2. 功耗逐次更低. 通过上图可以得出结论: stop0 模式有 2 种电压调节器方案.stop ...
- STM32超低功耗入门之待机模式
一. 认识待机模式 进入待机模式之后,唤醒 MCU 后程序不是从进入低功耗模式之后的下一行代码开始执行,而是重新启动了. 通过上图可以得出结论: 待机模式有 2 种电压调节器方案 待机模式下 CPU ...
- STM32超低功耗入门之关机模式
一. 认识关机模式 进入关机模式之后,唤醒 MCU 程序不是从进入低功耗模式之后的下一行代码开始执行,而是重新启动了. 通过上图可以得出结论: 所有电压调节器都被关闭了 关机模式下 CPU 是停止状态 ...
- STM32学习——入门小项目
博客地址:STM32学习--入门小项目 – Infinite's Blog 这个小项目是来自参加电设时,老师发的STM32入门(进阶)任务,具体的要求如下: 软件设计要求 编写简单I/O程序,能用板上 ...
- 单片机stm32LED流水灯C语言,STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二)...
STM32单片机入门 篇二:单片机编程:从点亮LED灯开始(二) 2019-04-26 13:21:48 19点赞 73收藏 19评论 写在前面的话:本篇是承接上一篇文章,属于小白向. 没看过的朋友点 ...
- 【玩转STM32】:串口唤醒低功耗的三种方式/低功耗下打印数据
在使用STM32做低功耗项目时,大概率会遇到一个问题:低功耗模式下想打印数据怎么办? 今天,学长给大家另辟蹊径,介绍一种使用串口唤醒低功耗的案例.方法.可设置三种唤醒方式:检测到起始位唤醒.检测到 R ...
- 入门单片机选择51还是stm32?入门单片机有哪些好的教学视频?
不知道大家还记不记得自己小学时候自己的梦想? 有人想成为医生.有人想成为医生,有人想成为飞行员,而我想成为发明家. 可能真是我这种想法,也导致我的性格从小就比较内向,毕业出来以后也从事技术. 人生的上 ...
- stm32单片机入门视频教程看哪个?一般用什么软件编程比较好?
现在我们随便去招聘平台搜索"嵌入式工程师",有很多岗位要求都是需要STM32. 可见目前STM32市场之大,如果我们想从事这个嵌入式单片机开发这个工作,就必须要跟着市场走. 这也是 ...
- stm32编程入门_电子设计与单片机编程书籍资料推荐
有些同学让我推荐些入门书籍,尝试写写: 注:请多看下目录与介绍,网络上也有一些读书笔记和推荐,自行判断是否符合现有层次和水平,再决定是否购买. 针对零基础.非专业的电子爱好者,我的推荐学习步骤是: 自 ...
最新文章
- 三十二、图的创建深度优先遍历(DFS)广度优先遍历(BFS)
- CentOS6.3中挂载NTFS移动硬盘的经历
- 《ASP.NET Core 微服务实战》-- 读书笔记(第11章)
- jquery实现双击事件不触发单击事件
- “培训班”出身的AI工程师,要得要不得?
- codeblocks报错Process terminated with status -1073741510 (0 minute(s), 3 second(s))
- 可配置语法分析器开发纪事(二)——构造符号表
- Asp.net core WebApi 使用Swagger生成帮助页实例
- python将一个文本文件复制到另一个文件中_使用Python逐行从一个文本文件复制到另一个文本文件...
- 楚留香ai识别人脸_【专利解密】商汤科技:AI加持人脸识别
- BLE无线信号的调制方式
- 区块链开发完整指南。如何开发一款区块链项目?
- “造星工厂“乐华娱乐IPO,如何寻找下一个“王一博“?
- matlab 三维立方体,使用matlab函数构建三维立方体的几种方法
- Fragment already added 解决方式
- 核心网MANO构架介绍
- java的Map接口
- 深入探究Windows平台客户端安全问题-进程地址空间入侵和白加黑高阶利用
- Yolov5环境配置 配不好来打我
- 2012 lt;c语言综合实验gt;答案,厦门理工学院c语言实验4循环答案.doc
热门文章
- 小技巧 - 查询微信被谁投诉方法技巧
- Tomcat: Error starting child 原因以及处理方法
- MATLAB 常用函数学习笔记
- 一阶线性齐次,非齐次方程的通解和解的结构定理,推导过程。
- android wear 应用推荐,2015年Android Wear十大必装应用
- r去掉向量中的空字符串 在R里如何去掉字符串矩阵中的空字符串 r r 识别字符串中的双引号 识别字符串中的双引号 str_detect
- MYSQL根据经纬度查询最近距离
- 【论文解读】(2019-EMNLP)Tackling Long-Tailed Relations and Uncommon Entities in Knowledge Graph Completi
- 哪款软件可以测试脉冲信号,脉冲测试
- 建立两个磁盘文件f1.text和f2.text,编程实现以下工作