STM32睡眠模式低功耗(停止模式)

2019-11-13来源: eefocus关键字:STM32  睡眠模式  低功耗  停止模式

目前stm32已经非常流行了,那么本文讨论下stm32低功耗模式,不多说先上手册内容! 

这里写图片描述

这是英文文档 不好看懂是吧,下面看中文文档! 

这里写图片描述

我对比了 STM32F0 和 STM32F1 两者进入低功耗是一样的,STM32F4的类似目前没有研究。 

低功耗模式有三种, 

1。睡眠模式,( CM3 内核停止,外设仍然运行)此功耗是最高的。 

2。停止模式,(所有时钟都停止)此功耗较低,典型大概在20uA左右。 

3.待机模式,( 1.8V 内核电源关闭)此功耗最低,典型大概在2uA左右。 

如果不行那就看手册,上图 

这里写图片描述 

一般我们做开发大多都是选择停机模式,因为停机模式功耗较低。而且任一中断或事件都能唤醒,待机模式虽然功耗最低,也就差10个微安,但是只有特定的唤醒脚可以唤醒,实时性不是很好。 


我们用停机模式也能降到10几个uA,实时性又好,干嘛不用呢。 

要怎么做才能把停机模式功耗进一步降低呢。我们先看官方库进入低功耗。


void PWR_EnterSleepMode(uint8_t PWR_SLEEPEntry); //睡眠模式

void PWR_EnterSTOPMode(uint32_t PWR_Regulator, uint8_t PWR_STOPEntry);  //停机模式

void PWR_EnterSTANDBYMode(void);    //待机模式


这里我们用到停机模式,有两个参数 

第一个PWR_Regulator是选择电源是否进入低功耗


#define PWR_Regulator_ON               //电源不进低功耗 唤醒基本没延迟

#define PWR_Regulator_LowPower         //电源进去低功耗 不过唤醒启动有一点延迟    

第二个参数PWR_STOPEntry


#define PWR_STOPEntry_WFI              //中断唤醒

#define PWR_STOPEntry_WFE              //事件唤醒


停机模式唤醒后自动选择系统内部时钟,看自己的应用是否需要重新配置;如果你的系统时钟是HSI或者HSE是要重新配置,一般都需要重新配置,直接调用系统时钟配置函数。 

另外停机模式唤醒后,flash程序是从中断或事件开始执行的。


我们要做到停机模式更低功耗,例程


RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);  //使能时钟

PWR_EnterSTOPMode(PWR_Regulator_LowPower,PWR_STOPEntry_WFI);


第一个参数要配置电源低功耗模式,第二个随你是中断唤醒还是事件唤醒,或者两者都要;


第二步你要把所有引脚IO口释放,全部配置成模拟输入状态,IO口几乎0消耗,如果不信下面我们来看手册 

这里写图片描述
这里写图片描述

我们只要在进入低功耗之前把IO口配置一下就行了(根据自己应用需要配置IO),但是唤醒之后就要重新配置IO口了。


在这里我要提醒广大朋友,在配置IO模拟输入之前,一定不要锁定IO口,我就犯了这个毛病,在配置成模拟输入之前我们串口两个引脚锁定了导致我的功耗一直在90uA左右下不去,老费劲了,挣了我一天时间才发现,最后功耗在10几uA左右,这功耗已经相当低了,能适应现在电池行业不是很发达的时代了,用四节5号电池够你用至少1年了。

关键字:STM32  睡眠模式  低功耗  停止模式 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic479857.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM32低功耗模式---停机和待机模式
下一篇:stm32 低功耗下使用看门狗(不喂狗)

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

关于STM32CubeMx printf重定向,及报错。"FILE" is undefined
PFP *//* USER CODE BEGIN 0 */PUTCHAR_PROTOTYPE{    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);    return ch;}/* USER CODE END 0 */ 这样写会报错"FILE" is undefined  添加头文件 stdio.h即可
发表于 2020-06-06
【STM32】keil MDK下重定向printf到串口(基于STM32CubeMX)
概述在keil MDK环境下重定向printf与keil C51不同,由于本人使用了STM32CubeMX生成工程模板,HAL_USART_Transmit函数即是模板里串口输出的函数。由于printf最终是调用fputc输出数据,fputc是一个弱引用(weak)函数,覆写即可重定向printf。代码清单extern USART_HandleTypeDef husart1;int fputc(int ch, FILE *f) {    HAL_USART_Transmit(&husart1, (uint8_t *)&ch, 1, 0xFFFF);    return ch
发表于 2020-06-06
STM32CubeMx启动串口调试功能Printf调试
## 概述项目中往往需要调试信息,调试stm32的时候,需要标准库里面的printf函数。在keil MDK环境下重定向printf与keil C51不同,由于本人使用了STM32CubeMX生成工程模板,HAL_USART_Transmit函数即是模板里串口输出的函数。由于printf最终是调用fputc输出数据,fputc是一个弱引用(weak)函数,覆写即可重定向printf。代码清单/* USER CODE BEGIN Includes */#include "FreeRTOS.h"#include "task.h"#include "queue.h"
发表于 2020-06-06
STM32CubeMx启动串口调试功能Printf调试
STM32F1xx HAL库中文版——USART篇
38.1 UART Firmware driver registers structures //串口固件驱动寄存器结构38.1.1 UART_InitTypeDefUART_InitTypeDef被定义在stm32f1xx_hal_uart.h头文件中数据字段:• uint32_t BaudRate 波特率• uint32_t WordLength 字长• uint32_t StopBits 停止位• uint32_t Parity 奇偶校验位• uint32_t Mode 模式• uint32_t HwFlowCtl 硬件流控制• uint32_t OverSampling 过采样字段的文档:• uint32
发表于 2020-06-06
Stm32-输入捕获
输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。STM32 的输入捕获,简单地说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)中。1. 相关寄存器介绍1) 捕获/比较模式寄存器 (TIMx_CCMRx) 当在输入捕获模式下使用的时候,对应上图的第二行描述,从图中可以看出,TIMx_CCMR1 明显是针对 2 个通道的配置,低八位[7:0]用于捕获/比较通道 1 的控制,而高八位[15:8]则用
发表于 2020-06-06
Stm32-输入捕获
STM32库函数和寄存器的区别
库函数版和寄存器版的系统时钟设置的区别:**1.**库函数的目的是让用户应用的,而寄存器更加原始库函数的系统时钟是默认设置的,且放在启动文件里。而寄存器版的系统时钟是Stm32_Clock_Init(336,8,2,7);.**2.**库函数的快捷的,但不是每个芯片都有的;寄存器是复杂的,但是每个芯片厂商都有提供系统的寄存器设置信息。分别打开库函数和寄存器版的I/O口设置:库函数:RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);gotoh后先通过assert_param();函数检查格式是否正确同时只要是ENABLE,RCC->AHB1ENR
发表于 2020-06-06
STM32库函数和寄存器的区别
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 2689mr.com, Inc. All rights reserved
免费送彩金可提款 免费送彩金可提款 hg平台送彩金 购彩送彩金 易迅彩票送彩金 百家乐免费送彩金 首存送彩金低打码 送彩金的网址怎么找 可以免费送彩金的网站 彩票大赢家