打印
[应用相关]

【转】STM8L的低功耗模式

[复制链接]
1668|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
联通移不动|  楼主 | 2017-2-25 12:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一、简介

本文介绍STM8L系列如何实现:默认低功耗模式,用按键实现唤醒并发射红外信号,随即又进入低功耗模式



二、实验平台

编译软件:IAR for STM8 1.42.2

硬件平台:stm8l101f3p6开发板

仿真器:ST-LINK

库函数版本:STM8L_STMTouch_Lib_V1.1.0




、版权声明


博主:甜甜的大香瓜

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.NET/feilusia

联系方式:897503845@qq.com

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

[size=13.6364px]香瓜单片机之STM8/STM32群:164311667

甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i



四、基础知识

1、STM8L有几个模式?

答:

1)非低功耗模式(1个)

Run mode(运行模式)


2)低功耗模式(3个)

Wait(等待模式)、Active-halt(活跃停机模式)、Halt(停机模式)。


2、STM8L低功耗的3个模式有什么区别?

答:


简单地来说,就是:

1)wait(等待模式):时钟关闭、外设可用。通过中断、外部中断、复位,能退出本模式。

2)Active-halt(活跃停机模式):时钟关闭、外设关闭、RTC开启。通过RTC中断、外部中断、复位,能退出本模式。

3)Halt(停机模式)(功耗最低):时钟关闭、外设关闭。通过外部中断、复位,能退出本模式。


另外,上图同时说明了默认上电时是运行模式,在运行模式时可通过如下方法降低功耗:

1)降低时钟频率。

2)关闭没用的外设时钟。

3)(香瓜补充)无用的IO口配置为输出低。


3、进入低功耗模式与低功耗唤醒的流程是如何的?

答:

1)进入低功耗模式的流程

①关闭外设时钟。

②所有IO设置为输出低(注意低电平使能的得设置为输出高)。

③初始化中断口的IO。

④时钟频率降至最低(2M)。

⑤打开中断总开关。

⑥调用停机模式的函数。


2)低功耗唤醒的流程

①初始化系统时钟。

②初始化用到的外设。


五、实验前提
在进行本文步骤前,请先阅读并实现以下博文:
1、《STM8L之红外发射(PWM产生38K信号)》:http://blog.csdn.NET/feilusia/article/details/53417291
2、《STM8L之定时器3的精确延时》:http://blog.csdn.net/feilusia/article/details/53407818

3、《STM8L之timer2产生PWM》:http://blog.csdn.net/feilusia/article/details/53403015
4、《STM8L之按键中断》:http://blog.csdn.net/feilusia/article/details/53372929


六、实验步骤

1、工程中添加自己写的低功耗的驱动

1)写一个驱动GUA_LowPowerConsumption.c(存放在工程的USER文件夹中)


3)工程中添加GUA_LowPowerConsumption.c



4)添加驱动的路径

[cpp] view plain copy


  • $PROJ_DIR$\..\USER   

注意USER文件夹是与“Project”等文件夹同级的自定义文件,用于存放香瓜写的代码。


2、应用层中调用


[cpp]
view plain copy


  • //******************************************************************************                           
  • //name:             main.h               
  • //introduce:        主函数的头文件        
  • //author:           甜甜的大香瓜                     
  • //email:            897503845@qq.com         
  • //QQ group          香瓜单片机之STM8/STM32(164311667)                     
  • //changetime:       2016.12.06        
  • //******************************************************************************   
  • #ifndef _MAIN_H_  
  • #define _MAIN_H_  
  •   
  • /*********************宏定义************************/     
  • //主轮询的宏  
  • #define FUNC_IDLE_EVENT                                 0x00    //空闲  
  • #define FUNC_GUA_KEY_SHORT_EVENT                        0x10    //短按键处理事件  
  • #define FUNC_GUA_KEY_LONG_EVENT                         0x11    //长按键处理事件  
  • #define FUNC_GUA_KEY2_SHORT_EVENT                       0x12    //短按键2处理事件  
  • #define FUNC_GUA_KEY2_LONG_EVENT                        0x13    //长按键2处理事件  
  • /*********************外部变量************************/  
  • extern u8 gGUA_Function;                                        //功能码  
  •   
  •   
  • #endif  



七、实验结果

将万用表的电流档串入VCC的跳线中,待机时为1uA~2uA之间跳变。

当按下按键发射红外时,电流值瞬间为1mA~2mA,随后又降低至待机状态。


对比datasheet的数据:“Halt: 0.3 µA、Active-halt: 0.8 µA、Dynamic Run:150 µA/MHz”。

比文档上的略高些,但已实现基本的低功耗。


因此,实验成功。

后续:有群友反馈增加“PWR_UltraLowPowerCmd(ENABLE);”可进一步降低功耗至0.3uA,待香瓜实测,先mark。


发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

127

帖子

0

粉丝