低功耗可以说是stm8l系列单片机的核心特色了。假设假设我们有一个温度传感器设备,他处于某种很特殊的地方,只能使用电池,而且我们很难去更换,那么低功耗就显得尤为重要。那么继续假设我们这个温度传感器不需要一直工作,只需要1小时采集一次数据就行了,也就是说,一个小时内,我们这个传感器只工作1秒钟,那么剩下的59分59秒怎么办?也许有的同学就会说了,while(1)循环啊,这种回答就很没有灵性。都不需要工作了,我们还关机不就行了,让它一小时启动一次,测量完就继续关机。那么就可以让电池里的电物尽其用。stm8l就有一个停机指令halt(),执行这条指令后,内核时钟停止工作,就相当于关机了。

但是并不是停机了,整个电路中的电流消耗就达到了最小!

第一:

虽然MCU是停机了,但是电路板还有其他的芯片在工作,它们仍然在消耗电量,所以我们在停机前应该要把其他芯片给关闭(可以通过特定的指令或者片选线)。条件好的可以直接用切断它们的电源。

第二:

我是这样理解的:进入停机模式后,只是MCU中最耗电的内核部分被关了,而所有寄存器和内存中的值是保持不变的,所以它的外设还在消耗电量,所以我们要在停机之前把开启的外设给关了。这里要注意一点:外设开启时是先开时钟再设置寄存器,关闭时先清除寄存器再关闭时钟。我是这样理解的:操纵一个外设的寄存器肯定是需要时钟的,如果我们先把时钟给关了,那么还怎么操作寄存器呢,如果光关了时钟,不清寄存器的相应位,那么外设还处于“静态耗电”的状态。在研究低功耗的过程中,我被这个坑了好久。关于这一点的实例可以参考这篇博客:

http://blog.csdn.net/qq_25186745/article/details/52777375

第三:

关于IO口的电平,这个是非常重要的一点,和之前提到的外设一样,GPIO也是一种外设,但是特殊的是,这个外设是和芯片外部直接打交道的,如果GPIO外部接了个上拉电阻,而你在停机之前设置的IO口是低电平的,那么电流不就通过电阻,流到IO口里来了,比如正常的说接了个10k的上拉电阻,接到3.3v电压上,那么电流就是330uA,这个值可不小呢,stm8l在停机时极限最小电流好像能达到0.4uA。那么你这个电路就是因为这个电阻,停机电流比别人大了将近800倍了,那么假如你的产品能待机1年,人家待机800年,这还怎么比?所以IO口是绝对不能被忽视的。stm8l芯片复位以后所有引脚都是浮空输入模式,理论上悬浮空输入时IO口的状态为高阻态是最省电的,那么我们只要把所有IO都DeInit就可以了。但是事实上不是,我把没有用到的管脚全部推挽输出高电平或低电平,不用的外部晶振的引脚要改为上拉输入才省电,外部有上拉下拉电阻的引脚分别推挽输出高电平和低电平,一般电路中上拉电阻比较多(比如IIC的总线外部都有上拉的)。和外部芯片相连的引脚都推挽输出低电平,因为外部芯片断电后所有引脚都是高阻态或接地的吧,如果你弄个高电平,就可能会有电流流过去。

在实际的项目中我们采用的方法是进入停机模式后,只有RTC时钟在工作,然后RTC每隔一段时间唤醒一次MCU,MUC工作完成后继续停机。

停机的代码为:

DeInit外设;
关闭外设时钟;
逐个配置GPIO的电平
CLK_HaltConfig(CLK_Halt_FastWakeup,ENABLE);   //快速唤醒后时钟为HSI
PWR_FastWakeUpCmd(ENABLE);                    //开启电源管理里的快速唤醒
PWR_UltraLowPowerCmd(ENABLE);                 //使能电源的低功耗模式(这句话的作用很大)
RTC_ITConfig(RTC_IT_WUT, ENABLE);             //使能RTC中断
CLK_HSICmd(DISABLE);                          //关闭内部高速时钟(之前内核是工作在HSI下的)
//sim();                                      //关闭所有中断,手册上说最好关闭所有中断在进入停机模式,但是好像这条指令并不会关闭RTC中断,我也没用这行代码
halt();                                       //到这一步执行完后,内核时钟就停止了,进入停机模式
WakeUp_Init();                                //rtc唤醒后PC指针在这里,从这里开始执行,所以我们要在这里添加初始化各种外设和外部芯片的代码

最后我测出来实际进入休眠模式后电流5~6uA左右,和理想的还是有一点差距,因为我们的板子上带有稳压芯片,消耗量一部分的电流。

这里有网友分享的低功耗模式下电流的数据:

http://bbs.21ic.com/icview-670756-1-1.html
--------------------- 
作者:chenqt123 
来源:CSDN 
原文:https://blog.csdn.net/chenqt123/article/details/73848798 
版权声明:本文为博主原创文章,转载请附上博文链接!

STM8L的低功耗模式的配置相关推荐

  1. 【STM8L】STM8L之低功耗模式

    本篇博文最后修改时间:2016年12月14日,14:48. 一.简介 本文介绍STM8L系列如何实现:默认低功耗模式,用按键实现唤醒并发射红外信号,随即又进入低功耗模式 . 二.实验平台 编译软件:I ...

  2. 【MSP430G2553】图形化开发笔记(2) 系统时钟和低功耗模式

    目录 系统时钟概述 BCS+模块单元的基本构造 时钟-概览 介绍 Basic User 模式 Power User 模式 1. 数控振荡器 DCO 2. 出厂预校正频率 3. 低频振荡器 VLO 4. ...

  3. 【STM8L】Active-Halt模式下的低功耗

      大家好,我是小政.本篇文章我将针对STM8L Active-halt模式下的低功耗进行详细的讲解,让准备做低功耗产品的小伙伴能够更好的理解在STM8L低功耗模式下运行,低功耗模式主要在各类仪器仪表 ...

  4. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  5. 【STM32笔记】低功耗模式配置及避坑汇总

    [STM32笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [STM32 ...

  6. 【STM32笔记】HAL库低功耗模式配置(ADC唤醒无法使用、低功耗模式无法烧录解决方案)

    [STM32笔记]HAL库低功耗模式配置(ADC唤醒无法使用.低功耗模式无法烧录解决方案) [STM32笔记]低功耗模式配置及避坑汇总 一.低功耗模式简介 系统提供了多个低功耗模式,可在 CPU 不需 ...

  7. 【极海APM32替代笔记】低功耗模式配置及配置汇总

    [极海APM32替代笔记]低功耗模式配置及配置汇总 文章总结:(后续更新以相关文章为准) [STM32笔记]低功耗模式.WFI命令等进入不了休眠的可能原因(系统定时器SysTick一直产生中断) [S ...

  8. MSP430低功耗模式-while循环失效

    如下代码实现MSP430G2553单片机两个led交替闪烁 #include <msp430.h> /*** main.c*/ int main(void) {WDTCTL = WDTPW ...

  9. MSP430F5529 DriverLib 库函数学习笔记(十三)认识低功耗模式

    目录 硬知识 低功耗模式 MSP430单片机各工作模式下的电流消耗 API 进入低功耗模式 退出低功耗模式 平台:Code Composer Studio 10.3.1 MSP430F5529 Lau ...

最新文章

  1. 报告 | 2017年云商业智能市场分析:云计算比大数据更重要
  2. 【数据挖掘】神经网络 后向传播算法( 向后传播误差 | 输出层误差公式 | 隐藏层误差公式 | 单元连接权值更新公式 | 单元偏置更新公式 | 反向传播 | 损失函数 | 误差平方和 | 交叉熵 )
  3. MySQL千万级数据JDBC插入
  4. powercmd注册码
  5. jsf组件不显示_JSF组件库–质量不只是零缺陷
  6. (王道408考研数据结构)第五章树-第四节4:红黑树基本概念及操作
  7. Origin 移动图像
  8. Android中MVC、MVP、MVVM具体解释
  9. ValueAnimator 使用注意事项
  10. swoole深入学习 2. tcp Server和tcp Client
  11. 如何控制Asp.net Login控件的重定向地址
  12. MediaChooser图库浏览器
  13. DeepLab图像分割
  14. Proteus中8259的仿真[无dos,纯手工]
  15. linux命令行启动新终端,12个让您震撼的Linux终端命令
  16. 运用spss modeler运用支持向量机_使用支持向量回归进行Facebook股票预测
  17. 变色龙配置文件功能介绍
  18. 看看程序猿们七夕都是怎么给对象表白的
  19. mysql 查询 唯一_Mysql中如何查询所有唯一记录
  20. oracle dba要学多久,Oracle DBA速成法的潜规则

热门文章

  1. 太阳能电池光伏系统模型
  2. PHP字符串函数strrpos(查找字符串最后一次出现的位置,区分大小写)
  3. error: subprocess-exited-with-error完美解决Weditor安装不了问题
  4. 基于人货场内容的产品设计攻略
  5. HTML 30 年进化史
  6. Compose Desktop 初体验之踩坑
  7. 使用DocX和Aspose.Words实现在线生成word和word转ps
  8. android审计日志,hdfs auditlog(审计日志)
  9. Python实现自动发送B站直播弹幕软件
  10. Python计算21点扑克牌概率,判断是否要牌