![](https://csdnimg.cn/release/download_crawler_static/7171883/bg1.jpg)
Veiko PIC 笔记 2014-4-10
PIC32MX 中断系统笔记
一、 PIC32MX 单片机中断分为单向量工作模式和多向量工作模式,区别如下:
a) 单向量工作模式:在一个向量地址处理所有的中断请求;
c) 需要注意的是复位后默认是单向量工作模式,一般情况下是使用多向量模式。
二、 INTSTAT 寄存器中的<10:8>位是 RIPL 位,值为 0-7 。RIPL 值在进入对应的中断服务
函数前就已经确定,其值与初始化对应硬件时的中断组优先级相同(与子优先级无关)。
a) 在 Status 寄存器中的<15:10>位是 CPU 中断优先级位,用于存储并指示当前正在处
理的中断的优先级,这几值可以在写中断服务函数时确定,比如中断函数为:
Void __ISR(_TIMER_1_VECTOR, ipl3) Timer1Handler(void)
则系统在进入该服务函数后,Status 中的 IPL 位的值就是 3,当然这个值可以和其
对应的外设中断优先级一致也可以设置为不一致(推荐设置成一致免得出错)。当然
你也可以设置为自动,方法参照官方资料。
b) 在一个中断正在执行时如果另外一个中断也准备好了,则系统首先会对比 RIPL 与
Status 中 IPL 值的大小,当 RIPL>IPL 时表示新的中断组优先级更高,则可以抢断
当前中断执行,否则就要等到当前中断执行完毕后再根据具体情况而定。
三、 在 PIC32MX 中中断优先级对应的值越大,则中断优先级越高。
四、 PIC32MX 中,中断的组优先级和子优先级的区别:
a) 组优先级:在 IPCx 中进行设置,值为 0-7,如果中断优先级被设置为 0,则该中断
向量会被禁止用于中断和唤醒。组优先级高的中断向量会抢占组优先级较低的中
断。
b) 子优先级:同样在 IPCx 中进行设置,值为 0-3。子优先级不会导致抢占组优先级
相同的中断;但是如果两个或以上的组优先级相同的中断待处理,则会从子优先级
最高的开始执行。
五、 其余相关信息请参考官方资料,以官方资料为准。
六、 其他说明:以 PIC32MX795F512L 为例,如_TIMER_1_VECTOR 这样的中断向量列表
在 32MX795F512L.h 文件中。其他同系列单片机的中断向量以此类推。