STM8的中断由中断控制器(ITC)控制。
STM8没有专门的中断状态寄存器,所以只能通过刚进入中断就读取IDR来判断,不过在某些情况下,此种方法就不好用了,所以在设计的时候就要考虑清楚,是不是会冲突.最好把有冲突的中断放到不同的组。
STM8的外部中断采用 软件优先级+硬件优先级的控制方法,来控制优先级分组.软件优先级优先于硬件优先级。
- 硬件优先级由向量号确定,向量号越小,优先级越高如下面图中断映射,中断向量表。
- 软件优先级设置可以分为4个等级(0~3),实际上可设置的就三个等级:1~3。优先级顺序:0<1<2<3, 3的优先级最高,高优先级的中断可以打断低优先级的中断
设置中断优先级用函数:ITC_SetSoftwarePriority();
多个中断同时发生:在软件优先级相同的情况下,由硬件优先级决定谁先响应.但是硬件优先级不可打断。
也就是相同软件优先级的中断,硬件优先级低的中断在执行了...此时来一个硬件优先级高的中断是不可以打断低优先级的中断的。
STM8还有个TLI外部中断,这个优先级可以打断软件优先级为3的中断,TLI的优先级不可设置.(基本就是最高级别了,除了RESET)。
硬件优先级表:可以在相应手册中中查看或者在eg: #include "stm8l15x_itc.h"