logo

STM8应用笔记 STM8单片机内核剖析 STM8 同时的和嵌套的中断管理

STM8 同时的和嵌套的中断管理

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

STM8S提供2种中断管理模式:

  • 同时发生模式
  • 嵌套模式

STM8同时发生中断管理模式

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

    STM8_同时发生中断管理模式
    (图18:同时发生中断管理模式)

STM8嵌套中断管理模式

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

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

---------------------------------------------------------------------------
警告:没有标志位及中断来指示堆栈发生溢出
----------------------------------------------------------------------------

向量地址 ITC_SPRx寄存器位
8008h I1_0 and I0_0 bits(1)
800Ch I1_1 and I0_1 bits
80C7h I1_29 and I0_29 bits

(表14向量地址映象对应软件的优先级位)

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

STM8_嵌套中断管理
(图20:嵌套中断管理)

STM8 同时的和嵌套的中断管理

——