STM32低功耗模式之待机模式

2019-11-13来源: eefocus关键字:STM32  低功耗模式  待机模式

上周完成了一个小项目,项目涉及到stm32的低功耗的待机模式,特在此记录下32的待机模式。


芯片:STM32f030F4


库:HAL库


唤醒方式:用RTC和PA0的上升沿唤醒


先来看下低功耗模式下的情况(只看停止跟待机):


停止模式


停止模式在保留SRAM和寄存器内容的同时实现了非常低的功耗。


1.8V域中的所有时钟停止,PLL、HSI RC和禁用HSE晶体振荡器。电压调节器也可以安装在正常或低功率模式。


该设备可以被任何一条exti线路从停止模式唤醒。


exti行源可以是16个外部行和rtc之一。


待机模式


待机模式用于实现最低功耗。内部关闭电压调节器,使整个1.8V域断电。


这个PLL、HSI RC和HSE晶体振荡器也关闭。


进入后待机模式、SRAM和寄存器内容丢失,但RTC域和备用电路中的寄存器除外。


当外部复位(NRST管脚)、IWDG复位时,设备退出待机模式。


Wkup管脚上的上升沿,或发生RTC事件。


可以看出待机模式跟停止模式差不多,其实功耗上停机配置的好的话也就比待机高一些,不过停止模式的唤醒方式的选择可以更自由,寄存器的数据也可以保存,所以我感觉停机模式更适合大多产品的需求,但是今天我只对待机模式的一些注意事项进行提出。


待机模式的进入很方便,只需要调用一句HAL_PWR_EnterSTANDBYMode()就可以进入待机模式了,待机模式唤醒就相当于复位,它之前的数据会全部丢失,所以要注意自己程序运行的时候,如有某些状态量一定要保存,那就保存进flash,唤醒的时候就去读取它。待机模式下所有IO口会处于高阻态,但不是说高阻态就是最省电的,跟电路设计还有一定的联系,当你进入待机发现电流跟手册上相差挺大的时候考虑下我的解决方法。


解决方法:其实这里可以考虑下把不使用的I/O口在休眠前都设置为模拟输入。原因:

额外的I/O电流消耗是由于I/O配置为输入,如果中间电压水平由外部施加。


这种电流消耗是由输入施密特引起的。


用于区分输入值的触发电路。除非此特定配置


根据应用程序的要求,可以通过配置这些I/O处于模拟模式。这是典型的ADC输入引脚的情况,应该是配置为模拟输入。

条件:典型和最大电流消耗


在以下条件下放置MCU:


•所有I/O引脚都处于模拟输入模式


•所有外围设备均被禁用,除非明确提及。


所以:官方其实也是在这个模式下测出的数据,实验证明,确实设置为模拟输入,电流跟手册上描写的差不多。


(也别忘了 __HAL_RCC_PWR_CLK_ENABLE();使能PWR时钟,这个能降功耗,唤醒之后要清除唤醒标志位)


如果功耗还是跟手册有区别,就要考虑供电电压,温度的影响。其实也可以通过供电电压的降低来降低功耗,STM32f030F4手册没有电压的对比,这里放下STM32F103C8的对比图:

 

要想让stm32进入更低功耗的状态,还需要考虑唤醒方式的种类和个数,比如在待机模式下,看门狗,RTC都是用内部40kHz的时钟,还有PA0外部中断的唤醒,如果全部模式都打开的话,功耗也会上升,所以要根据自己项目来设定唤醒模式,唤醒方式少一点,功耗就能低一点,总的来说就是这么些注意事项。


还有在使用RTC唤醒的时候要注意一下,如果你是cubeMx创建的工程每次唤醒RTC都是会重新初始化从0开始的计时的,这可能对一些人是好事,对一些人就不是那么好了,这个网上有很多解决方法,这里说一下闹钟的配置:

这里是要1小时唤醒一次,下面的配置就要设置上,要用到的设置为DISABLE,没用到的设置为ENABLE。


使用内部时钟的RTC时钟40KHz往往是不准的,所以你们可以自己去调节参数,让它秒中断跑的更精准。

大概就是这样了,低功耗待机模式总结下:


1、使能PWR时钟 __HAL_RCC_PWR_CLK_ENABLE();


2、配置I/O口为模拟输入


3、再进入待机模式


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

上一篇:stm32单片机进入休眠(STOP)模式后无法下载程序等问题解决
下一篇: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
那个棋牌平台送彩金最多 北京赛车Pk10全自动下注q群微信群机器人 白菜送彩金论坛 彩金宏辉送彩金 娱乐平台加微信送彩金 百家乐免费送彩金 太阳城送彩金 永利高网上注册送彩金 送彩金棋牌游戏 广西快三机器人