STM8的中断优先级配置

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" 

STM8的中断优先级配置_第1张图片

STM8的中断优先级配置_第2张图片

你可能感兴趣的:(嵌入式)