历史上的今天
返回首页

历史上的今天

今天是:2024年11月07日(星期四)

正在发生

2019年11月07日 | STM8L低功耗HALT模式一些总结

2019-11-07 来源:eefocus

进入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);

       

     }

   }

 }

}

推荐阅读

史海拾趣

南京国博公司的发展小趣事

国博电子的前身可以追溯到2000年成立的上海华信集成电路有限公司,起初专注于射频芯片的研发与生产。随着技术的积累和市场的拓展,公司逐步从单一的射频芯片企业成长为覆盖射频芯片、模块、组件的完整产业平台。这一跨越不仅体现了公司在技术上的深厚积累,也反映了其对市场需求的敏锐洞察和快速响应能力。通过不断的技术创新和产品研发,国博电子成功在无线通信、移动通信等领域占据了一席之地。

Dau Semiconductor Inc公司的发展小趣事

Dau Semiconductor Inc公司成立于XXXX年,由几位在半导体行业拥有多年经验的工程师创立。当时,他们意识到在快速发展的电子行业中,高性能、低功耗的半导体芯片有着巨大的市场需求。于是,他们决定依托自己在半导体设计和制造方面的技术积累,创办Dau Semiconductor Inc公司,专注于研发和生产高性能的半导体芯片。

Deutsch公司的发展小趣事

为了进一步扩大市场份额,Deutsch公司开始积极寻求国际合作和市场扩张的机会。公司首先通过市场调研,确定了目标市场,并制定了详细的市场拓展计划。随后,通过与当地合作伙伴建立合作关系,Deutsch公司成功进入了新兴市场。在国际市场上,公司凭借其高品质的产品和优质的客户服务,赢得了客户的信任和认可。这些努力使得Deutsch公司的市场份额逐年上升,成为电子行业的领军企业之一。

长江连接器(CJT)公司的发展小趣事

长江连接器一直将研发实力和技术创新作为公司的核心竞争力。公司拥有一支高素质的研发团队,不断投入资源进行新技术和新产品的研发。通过引进先进的研发设备和技术手段,长江连接器成功研发出了一系列高品质、高性能的连接器产品,满足了市场的多样化需求。同时,公司还积极申请各类专利和知识产权,保护自己的技术成果。

ABLIC公司的发展小趣事

在过去的六年里,ABLIC实现了高盈利,这得益于其不断创新的产品线和市场策略。为了进一步拓展业务,ABLIC将目光投向了欧洲市场。欧洲作为全球电子产业的重要区域,对于模拟半导体的需求持续增长。ABLIC凭借其在小型、低功耗和精确模拟半导体产品方面的优势,积极在欧洲市场寻求合作机会,为公司的长远发展奠定了坚实基础。

Hi-Tron Semiconductor Corp公司的发展小趣事

ABLIC的起源可以追溯到精工电子有限公司旗下的精工半导体有限公司(SII Semiconductor Corporation)。在半导体产业蓬勃发展的背景下,日本政府通过政策投资银行对SII进行了注资,使其在原有业务基础上进一步拓展。然而,随着股权结构的变动,SII决定在2018年进行品牌重塑,更名为ABLIC,并专注于模拟半导体业务的发展。这一决策标志着ABLIC踏上了全新的发展道路。

问答坊 | AI 解惑

嵌入式系统的构建

嵌入式系统的构建[][][6]…

查看全部问答>

F题有做出来的么?(期待大牛的xyt)

本帖最后由 paulhyde 于 2014-9-15 09:33 编辑 RT,不包括功放也好 崩溃了有点。。。 [ 本帖最后由 plich 于 2009-9-5 10:53 编辑 ]  …

查看全部问答>

运放电压跟随器到底应怎样接?

看到一些书上介绍运放做成电压跟随器,将输出接到反相,还有的接到同相,有关原理介绍都是较少一带而过,请教诸位到底是哪一种接法呢?…

查看全部问答>

坛子里有没有朋友用过xilinx xupv2p开发板的??想请教一下!

如题,谢谢!希望我能从用过的朋友那里咨询一下关于这块开发板的问题。谢谢了!…

查看全部问答>

2440串口移植的问题

2440 5.0 串口移植到 6.0。 加载串口驱动后,启动出现INFO: CReg2440Uart::CReg2440Uart using processor frequency reported by the OAL (0). 然后系统就死了。 也就是这一段 CReg2440Uart::CReg2440Uart()中     if (!KernelIoC ...…

查看全部问答>

程序集“System.Web.Services"出错!

在做PDA应用程序时碰到: D:\\WebService2\\WebService2\\TestWebService\\Form1.cs(26,13): 错误 CS0012: 类型“System.Web.Services.WebService”在未被引用的程序集中定义。必须添加对程序集“System.Web.Services, Version=2.0.0.0, Culture=n ...…

查看全部问答>

请教麻宝华老师Snooper

我用麻宝华老师的Snooper 是否要用你们专用的读卡器呢?我有SIM卡读卡器 但软件连不上 我想查看 执行 STK菜单所发出去的短信内容 要怎么操作呢 谢谢 比如STK彩单 “移动梦网”下的“天气预报” 就会发送出去一条短信 我怎么能知道这条短信的 ...…

查看全部问答>

如何查看PIC烧进去的程序的大小啊?

请问如何查看少进去的程序的大小,和运行时RAM的使用情况…

查看全部问答>

百度HI 单片机&Arm群 招兵

百度HI 单片机&Arm群  招兵 HI  群号:1083326 要来的速度…

查看全部问答>

关于wince下 KernelIoControl

想问下,下面这个KernelIoControl调用什么意思啊,查了下pb下的解释看不怎么明白啊 #define IOCTL_POCKETSTOREII_CMD        CTL_CODE(FILE_DEVICE_HAL, 4080, METHOD_BUFFERED, FILE_ANY_ACCESS) typedef struct {   ...…

查看全部问答>