历史上的今天
返回首页

历史上的今天

今天是:2025年02月28日(星期五)

正在发生

2020年02月28日 | stm8 停机模式与外部中断唤醒中一个小问题

2020-02-28 来源:eefocus

做了一个简单的项目,电路板使用电池供电,需要系统在待机时低功耗。而对外接口只有4个按键,也就是唤醒必须要通过这四个按键。


系统功能就不介绍了,只给出进入低功耗的代码和退出低功耗的代码。


使用芯片为stm8s103


 1 /*****************************************************************

 2 //进入到停机模式 

 3 *****************************************************************/

 4 void EnterHalt()

 5 {

 6     int j=255;

 7     

 8     /* 防止定时器中断唤醒了CPU */

 9     TIM1_CR1 &= 0xFE;     /*  用户操作计数器关掉 */

10   

11     asm("sim");

12     

13     /* PC3 PC4 PC5 PC6 使能外部中断 */

14     PC_DDR_DDR3 = 0;

15     PC_CR1_C13 = 1;

16     PC_CR2_C23 = 1;

17     

18     PC_DDR_DDR4 = 0;

19     PC_CR1_C14 = 1;

20     PC_CR2_C24 = 1;

21     

22     PC_DDR_DDR5 = 0;

23     PC_CR1_C15 = 1;

24     PC_CR2_C25 = 1;

25     

26     PC_DDR_DDR6 = 0;

27     PC_CR1_C16 = 1;

28     PC_CR2_C26 = 1;

29     

30     EXTI_CR1 = 0x00;  //PC端口 低电平和下降沿都中断

31     

32     for(j=255;j>0;j--);  //延时一会

33     

34     asm("rim");

35     asm("HALT"); /* 进入停机模式 */

36 }


  先关闭中断,配置IO口为外部中断,开中断,进入低功耗。


  在外部中断中,配置IO口为普通IO。


 1 #pragma vector = 7

 2 __interrupt void EXTI_PORTC_IRQHandler(void)

 3 {

 4     ExitHalt();   //开定时器 配置Lock键为普通IO

 5 }

 6 

 7 /****************************************************************

 8 //退出停机模式

 9 *****************************************************************/

10 void ExitHalt()

11 {

12     TIM1_CR1 |= 0x01;    /* 开用户操作定时器 */

13     

14     //PC3 PC4 PC5 PC6配置为普通IO口 输入 用于按键检测

15     PC_DDR_DDR3 = 0;

16     PC_CR1_C13 = 1;

17     PC_CR2_C23 = 0;

18     

19     PC_DDR_DDR4 = 0;

20     PC_CR1_C14 = 1;

21     PC_CR2_C24 = 0;

22     

23     PC_DDR_DDR5 = 0;

24     PC_CR1_C15 = 1;

25     PC_CR2_C25 = 0;

26     

27     PC_DDR_DDR6 = 0;

28     PC_CR1_C16 = 1;

29     PC_CR2_C26 = 0;

30     

31     EXTI_CR1 = 0x00;

32 }


流程如上,实际会出现一个小问题,就是配置IO口为外部中断,开了中断以后,就立即进入了中断程序(中断条件为低电平和下降沿)。进入了中断程序后,IO口配置又将IO口配置为普通引脚,接着进入低功耗。再按按键怎么也不能唤醒了。如果你也遇到这样的问题,请参照上面的进入低功耗的代码,在配置IO口为中断引脚后,延时一会,再开中断。


使用stm8的停机模式后,在3.0V供电的情况下,电路板整体功耗为5.6uA。使用电池供电,待机也能使用1年以上。

推荐阅读

史海拾趣

Comtech AHA Corp公司的发展小趣事

在电子行业快速发展的背景下,Comtech AHA Corp敏锐地洞察到了物联网、5G等新兴领域的市场潜力。公司及时调整战略方向,加大在这些领域的研发投入,推出了一系列符合市场需求的新产品。凭借精准的市场定位和优质的产品质量,Comtech AHA Corp成功抓住了市场机遇,实现了业务的快速增长。

Captive Fastener公司的发展小趣事

随着全球市场的不断扩大,Captive Fastener公司意识到国际合作的重要性。公司积极寻求与国际知名电子制造商的合作机会,通过提供高质量的紧固件产品和技术支持,成功打入国际市场。同时,公司还与国外同行开展技术交流与合作,不断提升自身的技术水平和市场竞争力。

COMPUTAR公司的发展小趣事

进入90年代,电动变焦镜头逐渐成为市场的新宠。CBC株式会社紧跟时代潮流,于1992年成功推出电动6倍系列镜头。这款镜头采用电动变焦设计,操作简便、速度快捷,极大地提高了拍摄效率。电动6倍系列镜头的全球上市,不仅进一步扩大了CBC的市场影响力,也为公司的未来发展奠定了坚实的基础。

通过以上五个故事,我们可以看到COMPUTAR公司(前身为CBC株式会社)在电子行业中的发展历程。从创立之初的艰苦创业,到逐步拓展国际市场;从手动变焦镜头的研制成功,到非球面高速镜头和电动6倍系列镜头的诞生与上市,每一步都凝聚着COMPUTAR人的智慧和汗水。正是这些不懈的努力和持续的创新,使得COMPUTAR在电子行业中脱颖而出,成为一家备受尊敬的企业。

Asia Electronics Ind Co Ltd公司的发展小趣事

面对日益激烈的市场竞争,Asia Electronics Ind Co Ltd深知优化供应链管理的重要性。公司加强与供应商的合作与沟通,确保原材料的质量和供应的稳定性。同时,公司还引入先进的供应链管理系统,实现供应链的透明化和高效化。通过优化供应链,公司降低了生产成本,提高了生产效率,为公司的持续发展提供了有力保障。

屹晶微(EG)公司的发展小趣事

屹晶微的创始人黄米龙,原本在发电厂从事电气运营工作长达八年。这段经历让他对电子领域有了深入的了解和浓厚的兴趣。然而,他并没有满足于现状,而是看到了中国芯片产业的巨大潜力和发展空间。于是,在2007年,他毅然决定从发电厂辞职,利用自己的积蓄和借来的资金,在台州创立了屹晶微电子有限公司。

在创立初期,屹晶微面临着资金短缺、技术落后和市场竞争激烈的困境。但黄米龙凭借对电子行业的深刻理解和坚定的信念,带领团队克服了种种困难。他们不断引进先进技术和设备,加强研发力量,提升产品质量。经过几年的努力,屹晶微逐渐在芯片设计领域崭露头角,并成功推出了多款具有自主知识产权的芯片产品。

Electro-Optical Systems Inc公司的发展小趣事

面对未来,EOS制定了明确的发展战略和规划。他们将继续深耕红外探测器领域,不断提升产品性能和质量。同时,EOS也将积极布局新领域,探索新的增长点。他们关注新兴技术如人工智能、物联网等的发展动态,寻求与这些技术的深度融合和应用。通过不断创新和拓展新领域,EOS将为实现企业的可持续发展注入新的动力。

请注意,以上故事框架是基于EOS在红外探测器领域的发展情况和行业趋势进行构建的,具体细节和数据可能需要根据实际情况进行调整和完善。

问答坊 | AI 解惑

程序中为什么要设置IE和IP

大家好:     在程序中为什么要设置IE和IP?有一段程序这样写,请大家帮忙看下         MOV TMOD,#00100001B;波特率发生T1定时工作模式2(自动装载), T0定时工作模式1(16位),     MOV TL0,#0caH ...…

查看全部问答>

简单的单片机控制系统,请各位朋友帮忙。

单片机控制系统 需求:1点输入,3点输出(其中2点控制电磁阀输出,1点控制继电器输出) 功能:对输入点记数 输入         输出 1次        电磁阀1输出 2次        电 ...…

查看全部问答>

提问+怎么为可穿戴设备的开发做准备

现在可穿戴设备正在越来越流行,那我们平时学的知识怎么应用到上面么,如果以后要开发可穿戴设备,现在应该怎么做准备?…

查看全部问答>

晒WEBENCH设计的过程+低通滤波器

利用TI的这个工具节约时间不用手算了! 1、填入相应的参数。 2。生成原理图 3、查看仿真波形 …

查看全部问答>

大侠们,怎么看数据手册写驱动程序啊,求解

像单片机怎么来阅读它的数据手册来写它的一些程序呢? 比如说STC15F204EA这款单片机,要使用它的ADC模块,不知道怎么怎么写它的程序。这部分手册 看的是说要设置些寄存器,但是具体要怎么写ADC程序且无从入手。 这个芯片手册该如何阅读,头疼, ...…

查看全部问答>

pH监测仪:带有温度补偿

实物展示: 电路功能与优势 图中所示电路是一个完全隔离式低功耗pH传感器信号调理器和数字化仪,并且带有自动温度补偿以实现高精度。         该电路可为0至14范围内的pH值提供精度为0.5%的读数,无噪声代码分辨率大于14 ...…

查看全部问答>