STM8L低功耗HALT模式一些总结

2019-11-07来源: eefocus关键字:STM8L  低功耗  HALT模式

进入HALT注意事项


将未使用到的IO口设置为输出低;

关闭所有用到的外设时钟(如 ADC、USART等);

失能所使用到的外设;

实测进入HALT模式待机约为0.3uA

下面列出示例代码,如有错误,还请广大网友指出。 ^_^


#include "stm8l15x.h"


uint8_t  sys_1ms_flg = 0;

uint16_t SleepTime   = 0;


/*LED工作2S灭 进入HALT模式 外部唤醒 */

void main(void){

 CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE);  /* 使能外设时钟                 */

 TIM4_DeInit();

 TIM4_TimeBaseInit(TIM4_Prescaler_8, 0xfa);               /* 16M/8/8=250K,0xfa=250,250*(1/250)=1mS */

 TIM4_ITConfig(TIM4_IT_Update, ENABLE);                   /* 向上溢出中断使能,中断向量号25 */

 TIM4_Cmd(ENABLE);                                        /* TIM4使能                     */

 

 GPIO_Init(GPIOD,GPIO_Pin_0,GPIO_Mode_Out_PP_High_Slow);  /* 初始化LED端口                */

 

 GPIO_Init(GPIOB, GPIO_Pin_1, GPIO_Mode_In_PU_IT);        /* 配置GPIB PIN1脚为外部中断脚  */

 EXTI_DeInit ();                                          /* 恢复中断的所有设置           */

 EXTI_SetPinSensitivity(EXTI_Pin_1, EXTI_Trigger_Falling);/* 配置外部中断 唤醒Halt模式    */

   

 PWR_FastWakeUpCmd(ENABLE);                               /* 快速唤醒使能                 */

 PWR_UltraLowPowerCmd(ENABLE);                            /* */

 enableInterrupts();                                      /* 开启中断总开关               */

 while (1){  

   if(sys_1ms_flg){

     sys_1ms_flg = 0;

     GPIO_ResetBits(GPIOD, GPIO_Pin_0);

     SleepTime++;

     if(SleepTime==2000){

       SleepTime = 0;

       /* 进入HALT前 需把所有为用到的端口设置为低*/

       GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

       GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

       GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

       GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);

       

       /* 我的板子LED是低点亮 所以置高 */

       GPIO_SetBits(GPIOD, GPIO_Pin_0);

       

        /* 上面把端口配置为输出低 但是不是我们想要的 所配置回来GPIB PIN1脚为外部中断脚  */

       GPIO_Init(GPIOB, GPIO_Pin_1, GPIO_Mode_In_PU_IT); 

       

       /* 先失能Tim4 在禁用tim4时钟 */

       /* 个人理解 先把外设时钟禁止了 那它怎么配置其他寄存器呢 不知道理解的正不正确 */

       TIM4_Cmd(DISABLE); 

       CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,DISABLE);

       

       halt();        /* 进入停机模式 实测0.3uA */

       nop();

       

       CLK_PeripheralClockConfig (CLK_Peripheral_TIM4,ENABLE);

       TIM4_Cmd(ENABLE);

       

     }

   }

 }

}

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

上一篇:stm8 窗口看门狗应用
下一篇:最后一页

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

推荐阅读

STM8L低功耗调试总结
STM8L低功耗调试资料准备功耗数据目标实现低功耗资料准备在调试STM单片机相关功能时,习惯性的进入到STM官方论坛进行资料下载。调试STM8功耗也不例外,找到STM8L的应用笔记,选择最热,先看看官方提供的STM8入门文档,入门资料可以选择中文或者英文(STM8L和STM8AL入门)。资料里面有一段话,对功耗调试相当重要:6.6 不使用的 I/O 和特性微控制器都是为多种应用设计的,通常一个应用不会使用 100 % 的微控制器资源。为了避免不必要的功率消耗 (对电池供电应用特别重要),同时提高 EMC 性能,闲置时钟、计数器或 I/O 都不应浮空。 I/O 应该外部强制 (上拉或者下拉到闲置 I/O 引脚),并且不使用的功能应
发表于 2019-11-14
STM8L低功耗调试总结
halt低功耗模式
1. stm8l152有5种低功耗模式,wait mode, low power run mode, low power wait mode, active-halt mode, halt mode.2. 在halt模式下,cpu和外设时钟停止,可以通过外部中断或者复位来唤醒。3. 本实验设计为:led灯亮,紧接着进入halt模式,有按键时,中断,快速唤醒,led灯灭。     PWR_FastWakeUpCmd(ENABLE);  //快速唤醒使能     //所有IO输出低电平    GPIO_Init(GPIOA
发表于 2019-11-14
STM8L051低功耗模式测试文档
STM8L051的五种低功耗模式wait ,low power run mode,low power wait mode,Ative-Halt mode,Halt mode。WAIT  mode  在等待模式,CPU的时钟是停止的,被选择的外设继续运行。WAIT mode 分为两种方式:WFE,WFI。WFE是等待事件发生,才从等待模式中唤醒。WFI是等待中断发生,才从等待模式中唤醒。low power run mode  在低功耗运行模式下,CPU和被选择的外设在工作,程序执行在LSI或者LSE下,从RAM中执行程序,Flash和EEPROM都要停止运行。电压被配置成Ultra Low Power
发表于 2019-11-14
stm8l 低功耗 halt_active模式
第一次尝试做低功耗,芯片stm8l,用的半halt模式1、关于唤醒,可以用外部中断和RTC(stm8l不同的模式用的唤醒方式均不同)2、关于省电,如果没达到理想的电流,一般都是gpio口问题,没用到的都悬浮输入或输出低都是可以的,用到的统一量一下电平,看看哪个状态不对
发表于 2019-11-14
STM8L EXITB一个端口两个中断的实现
void EXTI_Config(void){     EXTI_DeInit();       EXTI_SetPinSensitivity(EXTI_Pin_5,EXTI_Trigger_Falling);     ITC_SetSoftwarePriority(EXTI5_IRQn, ITC_PriorityLevel_1);    GPIO_Init(KEY_PORT, KEY_RT_PIN, GPIO_Mode_In_PU_IT);    EXTI_SetPinSensitivity(
发表于 2019-11-14
STM8L 151G6U6 驱动RW1820温度传感器
兼容DS18B20以及RW1820(VDD=2.8V)版本#define RW1820_DQ_OUT  GPIO_Init(GPIOC, GPIO_PIN_2,GPIO_Mode_Out_OD_HiZ_Slow); //输出#define RW1820_DQ_IN   GPIO_Init(GPIOC, GPIO_PIN_2, GPIO_Mode_In_PU_No_IT);     //输入#define RW1820_DQ_HIGH          GPIO_SetBits(GPIOC, GPIO_PIN_2); //拉高#define RW
发表于 2019-11-13
小广播
何立民专栏 单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved