历史上的今天
返回首页

历史上的今天

今天是:2024年11月13日(星期三)

正在发生

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

2019-11-13 来源: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);

       

     }

   }

 }

}


推荐阅读

史海拾趣

ASM公司的发展小趣事

2013年,ASM公司深圳工厂发生了一次大规模的工人罢工。这次罢工持续了22天,对公司的生产和经营造成了不小的影响。然而,这次罢工也暴露出公司在员工待遇和管理方面存在的问题。为了平息罢工并改善员工关系,ASM公司进行了一系列的改革措施,包括提高员工工资和福利、改善工作环境等。这些改革不仅缓解了员工的不满情绪,也提高了公司的凝聚力和竞争力。

这些故事只是ASM公司发展过程中的一部分,它们反映了公司在不同历史阶段所面临的挑战和机遇,以及公司如何不断调整和创新以适应市场的变化。通过这些故事,我们可以看到ASM公司在电子行业中的成长和发展是一个充满艰辛和奋斗的过程,也是一个不断追求创新和卓越的过程。

Delock公司的发展小趣事

Delock公司的成功离不开其独特的企业文化和优秀的团队建设。公司注重培养员工的创新精神和实践能力,为员工提供广阔的发展空间和良好的职业前景。同时,公司还积极营造一种团结协作、互相尊重的工作氛围,让员工在工作中感受到归属感和成就感。这种积极向上的企业文化不仅吸引了大量优秀人才的加入,也为公司的长期发展提供了坚实的保障。

请注意,以上故事是基于一般电子行业的发展规律和假设性的“Delock公司”进行的虚构描述,并非真实案例。

Auris公司的发展小趣事

在不断追求技术创新的道路上,Auris公司并未止步。近年来,该公司正在积极研发柔性机器人技术,这种技术有望在治疗喉咙、肺和肠胃疾病方面发挥重要作用。柔性机器人的研发不仅展示了Auris在技术创新方面的持续努力,也为其在未来的医疗市场中抢占先机提供了有力支持。

这五个故事展示了Auris公司在电子行业中的发展历程,从创始人的科技愿景到技术突破获得认可,再到与强生的合作以及柔性机器人的研发,每一步都体现了Auris对于技术创新和市场拓展的不懈追求。这些事实性的故事不仅展现了Auris公司的成长轨迹,也反映了电子行业中技术创新和市场竞争的激烈态势。

Amprobe公司的发展小趣事

在Auris公司的发展历程中,2017年夏天的一次收购事件具有重要意义。Auris以8000万美元的价格收购了Hansen Medical,这是一家专门开发工具来操控导管的公司。这次收购不仅增强了Auris在手术机器人领域的技术实力,也为其后续的产品研发和市场拓展提供了更多可能性。

Advanced Microelectronic Products Inc公司的发展小趣事

随着公司业务的不断发展,AMP公司意识到与国际伙伴合作的重要性。于是,公司积极寻求与国际知名企业的战略合作,通过技术交流和资源共享,共同开发新型电子产品。这些国际合作不仅提升了AMP公司的技术水平,还进一步提升了其品牌影响力和国际知名度。公司因此获得了更多海外市场的认可,实现了业务的全球化布局。

EIC [EIC discrete Semiconductors]公司的发展小趣事

EIC公司非常重视人才培养和团队建设。公司注重员工的技能培训和职业发展规划,为员工提供了广阔的发展空间和良好的职业前景。同时,EIC还积极引进国内外优秀人才,打造了一支高素质、专业化的研发团队和管理团队。这些人才为公司的发展提供了强有力的智力支持,也为公司的持续创新提供了源源不断的动力。

问答坊 | AI 解惑

FPGA器件的在线配置方法

摘要: 介绍基于SRAM LUT结构的FPGA器件的上电配置方式;着重介绍采用计算机串口下载配置数据的方法和AT89C2051单片机、串行EEPROM组成的串行配置系统的设计方法及实现多任务电路结构中配置的方法,并从系统的复杂度、可靠性和经济性等方面进行比较 ...…

查看全部问答>

别傻了(1):必要时可以和老板争一争

看到一些职场的小警示,感觉很不错,和大家分享一下。题目是我起的,意思就是让大家别以为有些规则可以违背,虽然公司的员工手册上讲得天花乱坠。                     &nb ...…

查看全部问答>

谁有XDS100仿真器的驱动程序?

谁有XDS100仿真器的驱动程序?…

查看全部问答>

c51能实现64位的浮点运算吗?float 32位的误差太大了!

在单片机上做计算器的功能,需要比较高的精度,用float他只能支持到7位精度,超过7位的都给我四舍五入了,带来的误差实在太大了!我想用double双精度但sizeof发现他也是4个byte的和float一个样,难道c51单片机就没办法实现64位的双精度浮点运算? ...…

查看全部问答>

德州仪器新型LED驱动芯片瞄准大屏幕彩显领域

想知道TI在LED领域的新产品吗?快来看啧个哦~…

查看全部问答>

电容式触摸按键资料分享

近年来,触摸技术正在迅速向不同的市场领域渗透。尽管触摸技术类型迥异,但与其他技术相比,用于按键应用和屏幕应用的电容式触摸增长和渗透最快。其主要原因就在于,采用触摸按键不仅可以改善美学和工业设计,还能够提升可靠性,因为电容式触摸按键 ...…

查看全部问答>

请教:MSP430F5438A并口仿真器的使用问题

本人新学MSP430,用的是并口仿真器,按网上所说并口模式改为EPP+ECP,并将Debugger-》Driver设置成Fet-Debugger,Fet debugger ->setup设置为LPT-IF,但是没有办法下载程序,总是报错: Fatal error: Failed to initialize.  Check if h ...…

查看全部问答>

材料常数B值的问题

请教大家,材料常数B值的允许偏差ΔB/B是什么意思?…

查看全部问答>

430开发板板级支持包BSP430

MSPGCC的维护者Peter(pabigot) 最近完成了MSP430板级支持包的发布, 一般BSP都是一些比较高端或者复杂些的板子才会有,MSP430板级支持包的发布, 说明430的开发环境越来越成熟,越来越丰富了。 既来之则用之,哈哈! 目前主要支持MSP430的官方 ...…

查看全部问答>

关于嵌入式Linux系统flash分区设计及文件系统格式选择的一些浅见

嵌入式系统应用程序升级是比较频繁的,这就需要将flash进行合理的划分,一般情况,flash 的基本分区都有这几部分:1.uboot分区2.kernel分区3.rootfs分区这三部分是最基本的,一般都有。如果只是这样分区,然后应用程序和文件系统放在一起,这样的话 ...…

查看全部问答>