微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM8 中断控制器ITC

STM8 中断控制器ITC

时间:11-11 来源:互联网 点击:

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

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

同时的和嵌套的中断管理
STM8S提供2种中断管理模式:
● 同时发生模式
● 嵌套模式

同时发生中断管理模式
在该模式下,所有的中断的中断优先级都是3 级,因此它们都是不可以被中断的( 除了被TLI,RESET或TRAP 中断之外)。
硬件的中断优先级按如下顺序排列,从低到高的优先级是:MAIN, IT4, IT3, IT2, IT1, IT0, TRAP/TLI( 同等优先级)以及RESET。
图 所示是一个同时发生中断管理模式的例子

嵌套中断管理模式
在该模式下,允许在中断子程序中响应中断。一旦一个中断的优先级被设置低于3 级时该模式就立即有效。
硬件优先级从低到高按如下顺序给定,即MAIN, IT4,IT3,IT2,IT1,IT0 和TRAP 。
通过设定ITC_SPRx 寄存器的相应的I1_x 和I0_x 位来配置每一个中断向量的软件优先级。I1_x 和I0_x 位具有和CC寄存器的I1 和I0 位相同的意思(见表)。
不可以将中断优先级设为级别0(I1_x=1, I0_x=0),在这种情况下,该中断的优先级将保持为先前的值。例如:如果先前的值是CFh ,然后编程的值是64h ,那么结果是44h 。
RESET 和 TRAP 向量是没有软件优先级的。当两者的任何一个被响应时,CC寄存器的位I1 和I0 两位都被置位。
注意:

在中断被响应时如果位 I1 和 I0 被修改,那么设备将作如下处理: 如果一个中断 X 仍然处在悬起状态(新的中断或者中断标志没有被清除)同时该新的优先级又比先前的优先级高的话,那么该中断 X 会被重新响应。否则该中断的软件优先级在下一个中断请求( X中断的IRET之后)来之前保持不变。
在中断子程序的执行过程中,执行 HALT, POP CC, RIM , SIM 和 WFI指令会改变当前的软件优先级直到下一条IRET 指令被执行或者先前提到的指令之一被执行。 。
图 所示嵌套中断管理的例子。

1. ITC_SPRx 寄存器对应于TLI的位可以被读写,但是它们对中断处理的管理是没有作用的。

外部中断
STM8S为外部中断事件专门分配了五个中断向量:
● Port A 口的5个引脚:PA[6:2]
● Port B 口的8个引脚:PB[7:0]
● Port C 口的8个引脚:PC[7:0]
● Port D 口的7个引脚:PD[6:0]
● Port E 口的8个引脚:PE[7:0]
PD7 是最高优先级的中断源 (TLI) 。
为了产生中断,相应的GPIO端口必须被配置为中断使能的输入口,详细内容请参考GPIO章节的
寄存器描述部分。
中断的触发方式由外部中断控制寄存器1(EXTI_CR1) 和外部中断控制寄存器2(EXTI_CR2) 所配置

中断指令

中断映射

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top