历史上的今天
返回首页

历史上的今天

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

正在发生

2019年11月13日 | STM8S的HALT模式与AWU唤醒

2019-11-13 来源:eefocus

/*

**********************************************************************************************************************************

* Name    : STM8S的HALT模式与AWU唤醒

* Author  : MingMing

* Release : 2014/1/2

* Update  : 2014/1/2

* E-mail  : clint.wang@foxmail.com

**********************************************************************************************************************************

*/

HALT模式

    为了降低功耗,STM8ST提供了三种低功耗模式:分别是等待模式(执行WFI指令)、停机模式(执行HALT命令)和活跃停机模式(先使能AWU再执行HALT命令)。处于等待模式时外设和中断管理器还在运行,并不是最低功耗,只要有中断的产生,芯片就会被唤醒。处于停机模式下时,外设等都被关闭,芯片处于最低的功耗,只有外部中断和外中断才能将其唤醒。处于活跃停机模式时,相比停机模式而言,AWU和IWDG处于激活状态,芯片也可以由AWU唤醒。

    在IAR的intrinsics.h文件中定义STM8S的命令如下:


__intrinsic void__enable_interrupt(void);     /* RIM */

__intrinsic void __disable_interrupt(void);   /* SIM */

__intrinsic void __no_operation(void);        /* NOP */

__intrinsic void __halt(void);                /* HALT */

__intrinsic void__wait_for_interrupt(void);   /* WFI */

    在其它的开发环境环境可能存在差异,那么可以使用下面的定义:


#define   __halt()    asm("halt")

#define   __nop()     asm("nop")

#define   __rim()     asm("rim)

#define   __sim()     asm("sim")

#define   __sim()     asm("wfi")

    将HALT命令添加到主函数中:


int main(void)

{

  INT8U  mainLoop = 1;                        /* 主循环执行调节 */

  LED_Init();                                 /* 初始化LED的管脚 */

  __enable_interrupt();                       /* 开总中断 */

  __halt();                                   /* 停机命令*/

  while(mainLoop)

  { 

    LED_TurnOn();                             /* 如果芯片已进入停机模式,LED不亮 */

  }

  return 0;

}

AWU唤醒

    根据上面的操作,可以让STM8S进入停机模式,接下来我们考虑如何将它从停机模式唤醒。我们有两种方法:一种是采用外部中断和外设中断,另一种是将停机模式过渡到活跃停机模式,然后采用AWU唤醒机制。AWU的代码如下:



/**************************************** stm8s_awu.c ******************************************/

void AWU_Init(void)

{

  AWU_CSR1 |= MASK_AWU_CSR1_AWUF;             /* AWU自动唤醒中断标志位被使能 */

  AWU_CSR1 &=~MASK_AWU_CSR1_AWUEN;            /* 自动唤醒功能被禁止 */

  AWU_CSR1 &=~MASK_AWU_CSR1_MSR;              /* 测量被禁止 */  

  AWU_APR = 0x3E;                             /* 时钟为LSI的64分频 */

  AWU_TBR = 0x0B;                             /* 时基选择,512ms唤醒一次 */

  CLK_PCKENR2 |= (0x04);                      /* AWU与主时钟连接 */   

  CLK_ICKR |= MASK_CLK_ICKR_LSIEN;            /* 打开内部低速时钟源 */  

  while(CLK_ICKR_LSIRDY == 0);                /* 等待时钟源信号稳定 */  

}

void AWU_Enable(void)

{

  AWU_CSR1 |= MASK_AWU_CSR1_AWUEN;            /* 自动唤醒功能被使能 */ 

}

void AWU_Disenable(void)

{

  AWU_CSR1 &=~MASK_AWU_CSR1_AWUEN;            /* 自动唤醒功能被禁止 */  

}

#pragma vector = AWU_vector 

__interrupt void AWU_ISR(void)

{

  AWU_CSR1 = AWU_CSR1;                        /* 清除更新中断标志位 */           

}

/*******************************************  end **********************************************/

    写好AWU的代码后,在主函数中加入调用如下:

int main(void)

{

  INT8U  mainLoop = 1;                        /* 主循环执行调节 */

  LED_Init();                                 /* 初始化LED的管脚 */

  AWU_Init();                                 /* AWU初始化 */

  __enable_interrupt();                       /* 开总中断 */

  AWU_Enable();                               /* AWU使能 */

  __halt();                                   /* 进入活跃停机模式,LED不亮*/

  while(mainLoop)

  {

    LED_TurnOn();                             /* 被唤醒后,LED亮 */

    Delay(50000); 

    LED_TurnOff();                            /* LED亮一段时间后关闭 */

    __halt();                                 /* 再次进入活跃停机模式,等待唤醒 */

  }

  return 0;

}

推荐阅读

史海拾趣

Amecon Magnetics公司的发展小趣事

在竞争激烈的电子行业中,品质是企业生存和发展的关键。Amecon Magnetics公司始终将品质管理放在首位,建立了严格的质量管理体系,确保从原材料采购到产品出厂的每一个环节都符合高标准的质量要求。这种对品质的执着追求使得公司的产品赢得了客户的广泛好评和信赖,为公司树立了良好的品牌形象。

ESPROS [Espros Photonics corp]公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,ESPROS始终致力于新技术的研发和应用。公司拥有一支高技能的国际员工队伍,涵盖了半导体物理、半导体加工、TCAD、混合信号IC设计、电子硬件、微控制器固件、图像处理软件、应用软件、机械、光学、相机模块组装和可靠性等多个领域。这些专业人才的加入,为ESPROS的持续创新提供了有力的支持。

请注意,以上概述基于已知事实,但并未达到每个故事至少500字的要求。如果需要更详细的故事或更深入的背景信息,建议查阅ESPROS的官方资料或相关新闻报道。

DBM Optix公司的发展小趣事

随着技术的不断成熟,DBM Optix开始积极拓展市场,将产品应用于更广泛的领域。公司不仅在国内市场取得了显著的成绩,还积极开拓国际市场,与全球各地的客户建立了紧密的合作关系。同时,DBM Optix还注重品牌建设,通过参加国际展会、发布技术文章等方式提升品牌知名度和影响力。这些努力使得DBM Optix逐渐成为了光学通信领域的知名品牌。

ECLIPTEK公司的发展小趣事

随着公司规模的扩大和订单量的增加,ECLIPTEK面临着越来越大的供应链管理挑战。为了应对这些挑战,公司投入大量资源优化供应链管理,引入先进的供应链管理系统和自动化生产设备。通过提高生产效率和降低生产成本,ECLIPTEK成功地保持了其在市场上的竞争优势。

Connor-Winfield公司的发展小趣事

进入20世纪90年代,电子行业的技术革新日新月异。Connor-Winfield敏锐地捕捉到了市场的变化,开始将产品线扩展到其他领域,以满足更多客户的需求。除了石英计时电路和振荡器,公司还开始研发和生产一系列与电子应用紧密相关的产品。这些新产品的推出,不仅进一步巩固了公司在行业内的地位,也为其开拓了更广阔的市场空间。

EPC公司的发展小趣事

另一家EPC公司认识到全球化市场的重要性,积极拓展海外市场。公司首先在欧洲和北美地区设立了分公司,通过深入了解当地市场需求和法规要求,成功开展了多个项目。随后,公司进一步将业务拓展至亚洲和非洲等地区,形成了全球化的市场布局。在全球化的过程中,公司注重本土化经营,积极融入当地市场,为客户提供定制化的解决方案,赢得了客户的信任和支持。

问答坊 | AI 解惑

显示故障: VISTA下图片自动播放时偏向右侧,不知什么原因?

请教一显示故障: 在VISTA平台下,使用windows自带的图片播放器,自动播放时图像偏向右侧,此现象只有在最大分辨率的情况下会出现,在此特请教一下高手们,指点指点,谢谢!…

查看全部问答>

shen zhen programmer

程序员在深圳群已经超过1500人,里面有很多在大公司上班的成员(包括国家级的研究院),有很多经验丰富的成员(包括参加过上亿元的项目的架构师),有很热爱技术的成员(包括自己写过嵌入式操作系统),希望大家踊跃发言,找到志同道合的朋友,找到对你有帮助的 ...…

查看全部问答>

mobile下声音处理(调用API出错,高手请进)

        MMRESULT  mres;         if (mres = waveOutOpen(&hWaveOut, WAVE_MAPPER, &lpFormat, (DWORD_PTR)sb_callback, (DWORD_PTR)pDeviceMemory, CALLBACK_FUNCTION) !=0)     ...…

查看全部问答>

有什么好的WinCE学习资料,大家推荐以下,谢了!

有什么好的WinCE学习资料,大家推荐以下,谢了!…

查看全部问答>

EE_FPGA V1.0 发现的一个BUG

AM29LV160DB的接法有些问题   BYTE已经被我接地了,那么就是8为数据宽度,只需要引出D0-D7就可以了 而EE_FPGA V1.0中是把D0-D15全部引出的 这点将在下一版中改进,设置为8bit和16bit模式可选  …

查看全部问答>

关于430f149sram得扩展

偶是个430新手,这两天看了些资料,但是一直没有看到关于外扩ram得应用,想弱弱得问一下,430用哪个口扩展外部ram,扩展后,软件是怎么操作得(比如c51使用XBYTE访问得)? 请大虾不要置疑为何扩展ram,只因为系统确实需要这么做才能正常工作,这 ...…

查看全部问答>

请教一个UCOS中断任务的问题

    假设一个任务在执行过程中,被中断,然后保存现场进入中断后,发现更高优先级任务,这时候,执行更高优先级任务,在执行更高优先级任务时候,被中断的任务处在什么状态?在被中断的代码中,没有看到被挂起的代码。还有更高优先 ...…

查看全部问答>

C2000 问题汇总Ver 1.0

C28x Based DeviceQ: What is the difference between the TMS320F28xx and the TMS320C28xx MCUs? A: The \"F\" represents flash, while the \"C\" represents ROM. The Flash devices are reprogrammable and are available through normal dist ...…

查看全部问答>

是不是今年会有压控LC振荡器 类似得题目?

本帖最后由 paulhyde 于 2014-9-15 09:08 编辑 我看看了看03年的元件清单有个高频变容二极管,然后那年题目就有电压控制LC振荡器。是不是今年有可能会有呢?  …

查看全部问答>

易电源试用报告4:总结

这么晚发,实在是抱歉。。。。。 我总结的比较晚,各路大侠都已经说得差不多了,总结的也比我这业余人士强多了。时间也不早了,哈哈,我就只是简单说一下自己的想法吧,说多无益免得贻笑大方。其实在测试之前我还是不太明白这电源模块的优点,边测 ...…

查看全部问答>