PIC32中断控制器
PIC32的中断控制器可以配置为工作于单向量模式或多向量模式。发生任意形式的复位之后,中断控制器会初始化为单向量模式。在该模式下,CPU总是转到同一地址。PIC32器件通过强制所有IRQ使用向量编号0x00来实现单向量模式。在多向量模式下,CPU会转到每个向量编号的地址处。每个向量都位于相对于CPU中的异常基址(EBase)寄存器指定的基址的特定偏移处。各个向量地址偏移由协处理器0(CP0)寄存器或中断控制寄存器中的“向量间距位”指定的向量间距决定。不建议在运行时将中断控制器在单向量模式和多向量模式之间切换,在初始化之后更改中断控制器模式可能导致未定义的行为。
PIC32器件的两种中断
PIC32器件具有两种中断:持续中断和非持续中断。持续中断将一直保持有效,且相应的中断标志置1,直到引起中断的问题被处理为止。UART接收中断就是一个例子,在UART接收数据被读取之前,即使在软件中清零中断标志,其仍将保持置1。应在排除导致中断的条件后通过ISR清零持续中断的中断标志,才能确保中断标志真正清零。对于非持续中断,中断控制器将记录一次中断并将其送入CPU,CPU只有在新中断发生时进行中断。具体器件数据手册的“中断控制器”章节中的“中断IRQ、向量和位位置表”会列出每个中断是持续中断还是非持续中断。