中断服务程序,ISR,Interrupt Service Routines
- 中断是指MCU在运行过程中,出现某些意外情况需处理时,MCU自动停止正在运行的程序,并转入处理新情况的程序,处理完毕后返回原程序继续运行。
- 中断提供了应用程序与现实世界中发生的事情之间的接口。例如,我们可以使用中断来捕获触发的按钮、看门狗喂狗操作、计算发生的时间等。
- 中断向量表:存放在内存中的一个数组,内容是中断服务函数的地址们(数组下标与中断优先级对应,也称中断向量)。当中断来临,根据 中断向量 查询 中断向量表,根据地址找到对应的服务函数。
中断优先级
-
单级:所有中断为同一优先级,即一个中断执行时,其他中断需等待其结束后再执行
-
多级:高优先级中断可以抢占低优先级中断
中断策略
推荐只用CAT2方式
- CAT1 interrupts:
- 是优先级最高的中断
- 不与OS进行交互,不需OS支持
- 大部分OS API不允许被call
- 需要用户正确的配置硬件、编写处理程序并从中断中返回,用不好的话出错概率高,一般应用较少
- CAT2 interrupts:
- 中断发生时,RTA-OS执行内部代码,然后调用用户提供的ISR
- 中断执行从ISR的指定入口点开始,一直持续到入口函数返回
- 完全支持OS特征