一、中断仲裁原则
1高和低优先级同时有效,先响应高优先级中断
2同优先级中断同时有效先响应中断号小的中断
二、中断嵌套
中断嵌套发生条件:低优先级中断正在处理的时候,高优先级中断请求有效
中断嵌套处理机制:高优先级中断抢先处理,处理完后继续处理被抢占的低优先级中断(两个中断要出在不同的寄存器组,如果处在同一寄存器组,高优先级会冲掉低优先级的数据产生错误)
三、中断响应
1、外部中断0/1 定时器/计数器1/0 中断得到响应后由硬件自动清0
串口终端标志位 RI/TI 由软件清0
2、中断得到响应的条件:
(1)中断标志被置1
(2)总中断和相应源中断被使能
(3)无同优先级或更高优先级中断正在处理
3、中断响应与返回过程
四、中断处理需要注意到bugs
1、变量没被声明为volatile
volatile的作用:每次使用变量时都重新读取变量的值而不是使用寄存器的备份值
2、非原子操作
非原子操作:不可被中断的操作
3、堆栈溢出
4、函数不可重入
可重入函数的局部变量和参数分配到堆栈中而不可重入函数怎分配到了数据空间。
五、使能和禁止中断(临界资源的保护)
1、临界快
共享资源:被两个以上调用者使用的资源
临界资源:一次只能被一个调用者使用的共享资源
临界快:访问临界资源的函数或程序段
2、临界资源保护的常用方法
3、临界函数
4、中断延迟与抖动