简介
中止操控器供给如下功用:
● 硬件中止的办理
─ 一切I/O 引脚都具有外部中止才能,每一个端口都有独立的中止向量以及独立的标志。
─ 外设中止才能
● 软件中止的办理(TRAP)
● 具有灵敏的优先级和中止等级办理,支撑可嵌套的或同级中止办理:
– 多达4个软件可编程的嵌套等级
– 最多有32个中止向量,其进口地址由硬件固定
– 2 不行屏蔽的事情: RESET, TRAP
– 1 个不行屏蔽的最高优先级的硬件中止 (TLI)
依据如下资源的中止办理:
● 位I1 和I0 坐落CPU的条件代码寄存器(CCR)
● 软件优先级寄存器 (ITC_SPRx)
● 复位向量地址0x00 8000 坐落程序空间的开端部分。关于具有发动ROM的类型,ST公司把复位初始化程序固化在ROM区中。
● 固定的中止向量地址坐落程序空间映像的高位地址段(0x00 8004 to 0x00 807C) ,其地址次序即为硬件的优先次序。
中止屏蔽和处理流程
中止屏蔽是经过CC寄存器的位I1 和位I0 以及设置每个中止向量( 表13) 的软件优先级的ITC_SPRx来办理的。处理流程如图所示:
当一个中止请求有必要被呼应时:
1. 在当时正在履行指令结束之后,正常的操作被悬起;
2. PC,X,Y,A和CC寄存器被主动压栈;
3. 依据ITC_SPRx 寄存器中的值对应的中止服务向量,CC寄存器中的位I1 和I0 被相应设置;
4. 经过中止向量载入中止服务子程序的进口地址,接着对中止服务子程序的第一条指令取址( 参阅表中止映射表 来了解向量地址的更具体状况)。
中止服务子程序有必要以IRET指令结束,该指令会把仓库中的保存的寄存器内容出栈,一起因为运转IRET 指令,位I1 和位I0 被从头康复,程序也康复运转。
处理等候(排队)的中止
同一时刻能够有几个中止排队等候处理。中止呼应是依据如下两步来决议的:
1、最高软件优先级的中止被呼应;
2、假如几个排队的中止具有相同的软件优先级,那么最高硬件优先级的中止先呼应。
当中止请求没有当即得到呼应时,该中止请求被锁存;当其软件优先级及硬件优先级均为最高的时分,该中止被处理。
留意:
1、与软件优先级不同,每个中止的硬件优先级是仅有且互不相同的,这样就可确保一个时刻只要一个中止被仅有确认地处理。
2、RESET, TLI 和 TRAP 这个几个中止被认为是具有最高的软件优先级来处理。
3、一个TLI中止可中止除TRAP 及RESET之外的3级中止。
见图了解愈加具体的排队等候处理的中止服务进程。
中止源
STM8 中止操控器处理2种类型的中止源:
● 不行屏蔽的中止: RESET ,TLI 和 TRAP
● 可屏蔽中止: 外部中止或许内嵌的外设中止
不行屏蔽中止源
不行屏蔽中止不会考虑CC寄存器的I1 和I0 的状况(参见图) 。只是当TRAP 中止发生时分将PC, X, Y, A 和 CC 寄存器的内容压栈。相应的向量载入到PC寄存器中一起置位I1 和I0 位制止中止(3级优先级)。
● TRAP (不行屏蔽的软件中止)
当履行TRAP 指令时就呼应软件中止。它呼应进程如图所示的流程图。
TRAP 中止不能使处理器从停机(Halt) 形式下退出。
● RESET 复位
复位中止是STM8 的软件和硬件中止的最高优先级,这也就是说在复位程序的开端一切的中止被制止。有必要经过RIM 指令来使能它们(见表)。
复位中止能够使处理器从停机(Halt) 形式退出。
更具体的复位中止办理见复位章节。
● TLI最高等级的硬件中止
当在特定的 I/O 边缘检测到在相应的TLI输入时将发生硬件中止。
留意: 在TLI中止服务子程序中制止运用TRAP 指令。
可屏蔽的中止源
关于可屏蔽中止,假如相应的中止被使能,并且假如在ITC_SPRx 寄存器的中止优先级比当时正在履行的中止(依据CC寄存器的I1 和I0 位)的优先级高的话那么就能够被呼应。假如上面2个条件中 的任何一个不满足那么该中止会被锁存并坚持在等候状况。
● 外部中止
外部中止能够用来把MCU从停机(Halt) 形式唤醒。外部中止触发方法的挑选能够经过软件写操控外部中止操控寄存器(EXTI_CRx) 来完结。
当多个连接到同一个中止向量的外部引脚中止被一起选定时分,那么他们是‘逻辑或’的联系。
当外部的电平触发中止被锁存后,假如该给定的电平一向坚持到中止子程序结束,那么该电平信号将再次触发中止,除非在中止子程序中禁用该中止。
● 外设中止
大部分的外设中止会导致MCU从停机(Halt) 形式下唤醒。见表。
当对应外设状况寄存器的中止标志位被置位,一起相应的外设操控寄存器的使能位被置位时将发生一个外设中止。
铲除一个外设中止的规范次序是在对状况寄存器的拜访后再对相关寄存器进行读或许写操作。
当一个铲除进程被履行之后相应的悬起中止(一个将被履行的中止)会丢掉。
中止和低功耗形式
一切的中止都能够使处理器从待机形式(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) 所装备
中止指令
中止映射