logo

STM8应用笔记 STM8单片机内核剖析 STM8 中断和低功耗模式

STM8 中断和低功耗模式

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!

STM8 中断和低功耗模式

所有的中断都可以使处理器从待机模式(Wait)退出。
仅有外部中断和另外一些特定中断使才能使处理器从停机(Halt)模式退出。
当MCU STM8从挂起模式唤醒时候,如果有多个排队中断存在,那么第一个被响应的中断一定具有从挂起模式退出的能力。该选择是通过如图18所示的判断过程实现的。如果最高优先级的待相应的中断不能把设备从挂起模式唤醒的话,那么它将在后续被响应。
如果在执行HALT指令时,有一个内部或外部中断(例如时钟中断)发生,HALT指令会继续执行完毕,但这个中断会立刻调用唤醒进程。
这种情况下MCU实际上是从停机(Halt)模式被唤醒到运行模式,模式切换的延时为tWUH,详见数据手册。

STM8 活动等级/低功耗模式的控制

MCU的活动等级的配置是通过编程CFG_GCR寄存器的AL位来实现。(见1.3全局配置寄存器(CFG_GCR))。
该位是用来控制MCU的低功耗模式。在超低功耗的应用中,MCU大部分时间是运行在WFI/Halt模式中,仅在为执行特别任务的时候被唤醒(通过中断)。一些重复的任务可以直接在一个ISR(中断服务子程序)执行完成而不需要返回到主程序。为了处理这样情况,用户可以在进入低功耗模式(通过执行WFI/HALT指令)之前置位AL位,之后中断子程序返回之后就直接回到低功耗模式。由于STM8相关寄存器保存只是在第一次中断会进行所以减少了中断服务程序运行的时间。
在一些非常简单的应用中所有的操作都可以只在ISR中执行。对于一些更复杂的任务,中断子程序要判断是否要启动主程序,可以通过重设AL的简单方式来实现。
例如:一个应用需要通过自动唤醒功能来每隔50ms唤醒一次来检测一些引脚/传感器/按键的状态。如果这些引脚大部分时间是不工作的,那么MCU可以直接回到低功耗模式而不需要运行主程序的。如果其中之一的引脚处于工作状态,那么ISR将要进行相应判断,通过重设AL位来启动主程序。

    STM8_优先级处理过程
    (图18:优先级处理过程)

STM8 中断和低功耗模式

——