【STM32】【STM32CubeMX】STM32CubeMX的使用之八:低功耗模式及MCU唤醒
文章目录
- 0、前言
- 1、低功耗模式简介
- 2、CubeMX设置
- 3、软件设计
下载工程文件:
https://gitee.com/Joseph_Cooper/stm32-cube-mx-stm32-l151-c8-t6
MCU:STM32L151C8T6-A
IDE:MDK-Keil5
固件库:STM32Cube FW_L1 V1.10.2
0、前言
关于STM32L151系列MCU的低功耗模式的介绍推荐看这篇文章。
1、低功耗模式简介
STM32L151
系列MCU
的低功耗模式分为五种:
名称 | 功能 |
---|---|
低功耗运行模式 | 这种模式是通过将多速内部(MSI)RC振荡器设置为最小时钟(65kHz)、从SRAM或Flash存储器执行以及在低功耗模式下的内部调节器来实现的,以最小化调节器的工作电流。 在低功耗运行模式下,时钟频率和启用外围设备的数量都是有限的 |
睡眠模式 | 在睡眠模式下,只停止CPU。 所有外围设备继续操作,并可以在发生中断/事件时唤醒CPU。 |
低功耗睡眠模式 | 这种模式是通过在低功耗模式下与内部电压调节器进入睡眠模式来实现的,以最小化调节器的工作电流。 在低功耗睡眠模式下,时钟频率和启用外围设备的数量都是有限的;一个典型的例子是有一个计时器运行在32kHz。 当唤醒被事件或中断触发时,系统恢复到运行模式,并打开调节器 |
停止模式(带RTC) | 停止模式在保持RAM和寄存器内容和实时时钟的同时达到最低的功耗。 停止VCORE域中的所有时钟,禁用PLL、MSIRC、HSIRC和HSE晶体振荡器。 LSE或LSI仍在运行。 调压器处于低功耗模式。 设备可以在8µs内由任何EXTI线从停止模式唤醒。 EXTI线源可以是16条外部线之一。 它可以是PVD输出、比较器1事件或比较器2事件(如果内部参考电压打开),可以是RTC警报、USB唤醒、RTC篡改事件、RTC时间戳事件或RTC唤醒 |
停止模式(不带RTC) | 停止模式在保留RAM和寄存器内容的同时达到最低的功耗。 所有时钟停止,PLL,MSIRC,禁用HSI和LSIRC,LSE和HSE晶体振荡器。 调压器处于低功耗模式。 设备可以在8µs内由任何EXTI线从停止模式唤醒。 EXTI线源可以是16条外部线之一。 它可以是PVD输出,比较器1事件或比较器2事件(如果内部参考电压打开)。 它也可以被USB唤醒。 |
待机模式(带RTC) | 采用待机模式,实现最低功耗和实时时钟。 内部电压调节器被关闭,以便整个VCORE域被关闭。 锁相环、MSIRC、HSIRC和HSE晶体振荡器也被关闭。 LSE或LSI仍在运行。 进入待机模式后,除了待机电路中的寄存器(唤醒逻辑、IWDG、RTC、LSI、LSE晶体32KOSC、RCC_CSR)外,RAM和寄存器内容丢失)。 当外部复位(NRST引脚)、IWDG复位、三个WKUP引脚之一的上升边缘、RTC报警(报警A或报警B)、RTC篡改事件、RTC时间戳事件或RTC唤醒事件发生时,设备在60µs内退出待机模式 |
待机模式(不带RTC) | 采用待机模式,实现最低功耗。 内部电压调节器被关闭,以便整个VCORE域被关闭。 锁相环、MSI、RC、HSI和LSIRC、HSE和LSE晶体振荡器也被关闭。 进入待机模式后,除了待机电路中的寄存器(唤醒逻辑、IWDG、RTC、LSI、LSE晶体32KOSC、RCC_CSR)外,RAM和寄存器内容丢失)。 当发生外部复位(NRST引脚)或三个WKUP引脚之一的上升边缘时,设备在60µs内退出待机模式。 |
▲来自于STM32L151DataSheet中P14~P15
2、CubeMX设置
▲CubeMX RCC设置
▲CubeMX SYS设置
▲CubeMX USART1设置
▲CubeMX 时钟树设置
3、软件设计
关于串口配置在这里不做赘述有需求的同学戳这里,实现上升沿唤醒待机模式中的MCU后使用串口发送数据。
main.c
/* USER CODE BEGIN 0 */
void Sys_Enter_Standby(void){__HAL_RCC_PWR_CLK_ENABLE(); //使能PWR时钟__HAL_PWR_CLEAR_FLAG(PWR_FLAG_WU); //清除Wake_UP标志HAL_PWR_EnableWakeUpPin(PWR_WAKEUP_PIN2); //设置WAKEUP用于唤醒HAL_PWR_EnterSTANDBYMode(); //进入待机模式
}/* USER CODE END 0 */
...
/* USER CODE BEGIN 3 */printf("Time: 5\r\n");HAL_Delay(1000);printf("Time: 4\r\n");HAL_Delay(1000);printf("Time: 3\r\n");HAL_Delay(1000);printf("Time: 2\r\n");HAL_Delay(1000);printf("Time: 1\r\n");HAL_Delay(1000);printf("Entered Standby Mode...Please press KEY_UP to wakeup system!\r\n");Sys_Enter_Standby();
函数及宏定义介绍:
HAL_PWR_EnableWakeUpPin
说明: 启用唤醒PINx功能。
参数:
WakeUpPinx
: 指定要启用的电源唤醒引脚。 此参数可以是以下值之一:PWR_WAKEUP_PIN1
PWR_WAKEUP_PIN2
仅在STM32F410xx/STM32F446xx/STM32F412x G
上可用PWR_WAKEUP_PIN3
仅在STM32F410xx/STM32F412xG
设备上可用。
HAL_PWR_EnterSTANDBYMode
说明: 进入待机模式。
注意事项:
在待机模式下,所有的I/O引脚都是高阻抗的,除了:复位引脚(仍然可用)RTC_AF1引脚(PC13),如果配置为篡改、时间戳、RTC报警或RTC时钟校准。 RTC_AF2引脚(PI8),如果配置为篡改或时间戳。 WKUP引脚1(PA0)。
【STM32】【STM32CubeMX】STM32CubeMX的使用之八:低功耗模式及MCU唤醒相关推荐
- 【STM32】HAL库-电源控制(低功耗模式)
电源框图 STM32 的电源系统主要分为备份域电路.内核电路以及 ADC 电路三部分 备份域电路 STM32 的 LSE 振荡器.RTC.备份寄存器及备份 SRAM 这些器件被包含进备份域电路中,这部 ...
- stm32低功耗模式下mcu的实际功耗(ST芯片手册)
STM32F103xC. STM32F103xD和STM32F103xE增强型产品支持三种低功耗模式,可以在要求低 功耗.短启动时间和多种唤醒事件之间达到最佳的平衡. ● 睡眠模式 在睡眠模式,只有C ...
- TI-RTOS实时操作系统开发之低功耗模式和外部唤醒
写在前面 本文章适用基于TI-RTOS开发的芯片 以下说明是以CC2640R2F为例,低功耗模式分为两种:1.掉电模式(shutdown),2.睡眠模式(sleep或者standby) API说明 1 ...
- stm32f103c6t6下的HAL库搭建三种低功耗模式及实战分析(stm32通用)
目录 三种低功耗模式介绍 睡眠模式(sleep mode) 停止模式(stop mode) 待机模式(standby mode) 总结 实战测试 个别电路原理图 功耗分析 ADC功耗大解决方案 ADC ...
- 【STM32笔记】低功耗模式配置及避坑汇总
[STM32笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [STM32 ...
- 【STM32笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
[STM32笔记]低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER) [STM32笔记]低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_5340 ...
- STM32低功耗模式与烟雾报警器触发信号电路设计
STM32低功耗模式与烟雾报警器触发信号电路设计 https://www.cnblogs.com/kanite/p/5352642.html 1.STM32的3种低功耗模式 STM32有3种低功耗模式 ...
- 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别
点击上方蓝字关注我哦- 01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式 ...
- 【极海APM32替代笔记】低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER)
[极海APM32替代笔记]低功耗模式下的RTC唤醒(非闹钟唤醒,而是采用RTC_WAKEUPTIMER) [STM32笔记]低功耗模式配置及避坑汇总 前文: blog.csdn.net/weixin_ ...
最新文章
- CentOS 6.7 如何启用中文输入法
- Longest Substring Without Repeating Characters(最长不重复子序列求解)
- jquery 前台分页插件总结(1 前台假分页 2 后台分页)
- linux kernel的spin_lock的详细介绍(以arm64为例)
- Selenium + Grid + Testng并发运行用例
- runtime如何实现weak属性
- 数据仓库介绍与实时数仓案例
- php使用phantomjs
- 07-求解Ax=0:主变量、特解
- 【重新挂载磁盘空间】Linux系统/home的磁盘空间重新挂载给/root
- 在Flex4中嵌入字体
- linux中重要文件夹介绍
- 知识 | 四种渲染到底是啥?终于有人讲明白了(下)
- html中实现简单计算器功能,js实现简易计算器功能
- Kafka_producer
- javascript构造函数
- 尚硅谷 网上书城 代码 Book
- Xilinx FPGA资源解析与使用系列——DSP48E(一)
- 参数估计-矩估计和极大似然估计概述
- 视角来分析 腾讯 微信访客系统的一些问题 (二 )end
热门文章
- c语言操作access数据类型,2016计算机二级《ACCESS》基本操作题及答案
- python星号*在函数中、传参时的含义
- Flink java模拟生成自定义流式数据
- python selenium解决报错SessionNotCreatedException session not created: No matching capabilitie与问题解析
- weui 导航悬浮固定
- Parhaps you are running on a JRE rather than a JDK?
- shiro源码篇 - 疑问解答与系列总结,你值得拥有
- [译] 第十一天: AeroGear Push Server - 轻松推送提示信息
- 8.1 Android Basic 数据存储 Preferences Dialog(使用对话框的Preferences)
- ASP.NET 安全认证