授权转载自公众号:嵌入式IoT

1.说明

本文主要叙述在stm32进入stop时如何保持最低功耗的问题,并对部分细节问题进行分析整理。STM32L提供5种低功耗模式:低功耗运行模式、睡眠模式、低功耗睡眠模式、停止模式、待机模式。

待机模式电流最低,但是待机模式时的MCU处于不受控制的状态,所有的IO口都工作在高阻抗的状态的下,只有专门的几个引脚能够将MCU唤醒,而每次唤醒后相当于系统复位,RAM中的数据全部丢失,在外部器件连接的情况下,器件的引脚可能会吸收大量的电流,反而达不到低功耗的要求。

停止模式的功耗仅次于待机模式,在STOP模式下,PLL,HSL,HSE都被停止,RAM和寄存器的值保留。

2.引脚配置

在stop模式下,由于所有的引脚的状态都可以保留,所以需要进行适当的引脚配置才能达到效果。在实际的配置过程中,如果在stm32最小系统中,要在stop模式下保持最低功耗,可将所有的GPIO设置成模拟输入,如果不进行配置,将是默认是浮空输入,此时stop模式的电流很大。在设置的过程中,有几个特殊的引脚需要注意。


对于stm32来说,除了PA,PB,PC每个组有16个GPIO之外,还有PD2,PH0, PH1这三个GPIO。不能错过任何一个引脚的配置,否则功耗会很大。

在所有的引脚配置成GPIO模式后,在stm32最小系统中采用3.3V电压供电,实测电流为0.75uA。但是如果将全部的引脚都配置成模拟输入的GPIO后,将不能正常的使用,根据实际使用的情况,预留9个中断口作为唤醒源。当配置完成之后,可以将电流控制在3.5uA。

降低功耗的控制,主要需要注意的是引脚的上下拉,在有中断引脚上有外设时,可以将引脚配置成浮空输入的模式,不需要配置上下拉。而当该引脚上未接任何外设时,一定需要设置内部的上拉或者下拉,这是比较关键和重要的。

3.通讯类外设的控制

对于stm32内部的通信类的外设,除了设置GPIO的引脚之外,还需要将内部的uart或者i2c或者spi等通信类设备关闭。由于目前只使用了uart,所以在关闭uart可以通过HAL的HAL_UART_MspDeInit(&huart1);函数进行deinit。该函数会关闭中断,清空内部寄存器,并且设置引脚为GPIO模式。所以可以达到降低功耗的目的。

在测试过程中,也遇到了一个问题,就是唤醒后,串口将无法接收和发送数据。刚开始认为休眠时DeInit,唤醒后Init即可,但是还有一个重要的步骤没有做,就是开启串口的中断。

HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART1_IRQn);HAL_NVIC_SetPriority(USART2_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART2_IRQn);HAL_NVIC_SetPriority(USART3_IRQn, 0, 0);HAL_NVIC_EnableIRQ(USART3_IRQn);

目前三路串口采用的是DMA+空闲中断的方式进行的,所以这里需要重新开启中断才行。

第二个问题就是ADC,当时测试,一采用ADC进行采样后,下次休眠后电流就很大,实测可达到1.8mA,而不采用ADC进行采样的情况下只有38uA。所以ADC也在耗电,ADC不属于通信类的外设,但是采用了DMA,所以需要关闭掉ADC的中断即可HAL_ADC_Stop_IT(&hadc);,一般来说,如果不是采用DMA的方式,非通讯类的外设只需要关掉时钟即可。__HAL_RCC_ADC1_CLK_DISABLE();

4.特殊引脚的控制

有一个引脚也是需要注意,PH0,该引脚以前是作为外部的32k晶振使用,可用作独立看门狗的时钟源,由于该引脚目前作为了GPIO,所以在使用时作为普通的GPIO使用。作为普通的GPIO使用的必要条件是HSE时钟关闭。但是在测试过程中还是遇到一个问题,该引脚配置成模拟输入后,stop模式下的电流仍有800uA,后来经过测试,发现是Debug调试器未关,也就是HAL_DBGMCU_DisableDBGSleepMode();函数没有有调用。所以在测试时电流才有800多uA。

5. 总结

对于降低功耗来说,standy模式功耗最低,但是唤醒源比较少,可以选择stop模式。由于stop模式的引脚状态和断电前保持一致,所以在进入stop之前需要将不需要控制的引脚设置成模拟输入。同时中断引脚设置相应的浮空或者上拉,这时,如果在中断引脚上未接任何的东西,内部需要上拉或者下拉,这样才能保证最低功耗。

stm32 系统进入stop模式_STM32低功耗控制心得体会相关推荐

  1. stm32实验报告心得体会_stm32实训心得体会.docx

    stm32实训心得体会 stm32实训心得体会 篇一:STM32 实验2报告 实验2MINI STM32按键控制LED灯实验 一. 实验目的 1. 掌握嵌入式程序设计流程. 2. 熟悉STM32固件库 ...

  2. 开发标准化软件组件能让程序员在大城市过上体面的生活 -- 多系统用户权限管理标准件开发销售心得体会...

    其实很多人都有顾虑,选择程序员这个行业是否有前途?是否可以长久?我是78年出生的,现在算算已经35岁了,虽然在同学里算不上最成功的,但是也足够不是最差的.生活中该有的都有了,虽然身体没往日那么强壮,但 ...

  3. stm32芯片休眠模式_STM32睡眠模式低功耗(停止模式)

    目前stm32已经非常流行了,那么本文讨论下stm32低功耗模式,不多说先上手册内容! 这是英文文档 不好看懂是吧,下面看中文文档! 我对比了 STM32F0 和 STM32F1 两者进入低功耗是一样 ...

  4. 32怎么通过一个按键实现不同工作模式_stm32几种低功耗模式的实现和差别

    点击上方蓝字关注我哦- 01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式 ...

  5. stm32芯片休眠模式_STM32的运行、睡眠、停止和待机四种工作模式

    01 前言 按功耗由高到低排列,STM32具有运行.睡眠.停止和待机四种工作模式.上电复位后 STM32 处于运行状态,当内核不需要继续运行,就可以选择进入后面的三种低功耗模式降低功耗,这三种模式中, ...

  6. 最简单DIY基于STM32的远程控制电脑系统②(无线遥杆+按键控制)

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  7. stm32芯片休眠模式_stm32单片机进入休眠模式后无法下载程序等问题的解决

    利用stm32单片机的休眠模式,使单片机间歇的休眠从而实现低功耗的目的.往往会出现进入休眠后无法唤醒,导致下一次程序烧不进去.通常的解决办法是:一般的开发板或单片机最小系统都会有复位键,按住复位键,点 ...

  8. STM32 - 定时器的设定 - 基础-04 - 输出波形控制 - PWM 模式

    PWM为诸多应用的基本波形,如何实现和如何定制,首先要了解STM32中PWM的实现方法. 在STM32中,PWM的实现主要通过控制 OCxRef (active high).:output compa ...

  9. stm32之电源管理(实现低功耗)

    目录 1.硬件原理 2.低功耗模式 3.睡眠模式实验 4.停止模式实验 5.待机模式实验 前言:STM32F10xxx系列产品都有电源管理模块,芯片功耗会影响到一个产品的续航能力:比如在一些终端传感器 ...

最新文章

  1. autosize px转dp_Android 屏幕适配以及autoSize的原理.md
  2. springboot 入门教程(4)--web开发(spring mvc和Thymeleaf模板,带源码)
  3. python3d动态图-Python图像处理之gif动态图的解析与合成操作详解
  4. redis 哨兵_Redis哨兵配置
  5. 使用Eclipse连接SAP云平台上的HANA数据库实例
  6. 线程池ThreadPool,线程池底层ThreadPoolExecutor方法七大参数,拒绝策略,以及实际开发中高并发下用到哪个线程池?
  7. html中不支持什么元素,html5新元素和html不支持的元素
  8. android车机播放器,万能视频播放器 车机版
  9. [java]房屋出租系统
  10. 硬件编解码与软件编解码的区别
  11. word中的特殊文本符号
  12. PS高斯模糊后变清晰(智能滤镜、蒙版)的使用
  13. 如何在三天内使用Thinkphp搭建商城系统(一)
  14. ffmpeg中文文档
  15. [linux小水滴]工具安装与使用
  16. 生存还是毁灭?新物种爆发时代,企业请回答
  17. 【esp8266】④esp8266对接贝壳物联平台
  18. Haul truck运输卡车专为矿用设计
  19. 判断是否是移动端--微信-企业微信
  20. 戴尔服务器R730XD增加万兆光卡后风扇满速运转解决办法

热门文章

  1. abp 使用 hangfire结合mysql
  2. 【Python学习笔记】Coursera之PY4E学习笔记——String
  3. Java之正則表達式【使用语法】
  4. jsonp使用,spring4.x对jsonp的支持
  5. Lambda 表达式浅谈- 01
  6. HDU 1551 Cable master
  7. 2018年广西计算机一级,关于2018年上半年广西壮族自治区全国计算机等级考试报名工作的通知...
  8. C语言,产生一组数字,并将其写入txt文档中
  9. Linux环境下安装单实例MySQL 5.7
  10. 第三次小组实践作业小组每日进度汇报:2017-12-3