原以为2812中断不能设置优先级。实际上硬件上优先级是做好的。但软件上有办法来设置优先级。请往下看:
1.首先要找到文件,DSP281x_SWPrioritizedDefaultIsr.c和DSP281x_SWPrioritizedIsrLevels.h加载到你的程序当中。
2.在DSP281x_SWPrioritizedIsrLevels.h文件中先设置中断组的优先级级别。其中:0表示不使用;1表示优先级最高中;16表示优先级最低;
  比如:我设置第9组优先级最高,第3组次之,第2,4,6组优先级为第三。其他以此类推。0表示不用。
   #define    INT1PL  4  // Group1 Interrupts (PIEIER1)
  #define    INT2PL  3  // Group2 Interrupts (PIEIER2)
  #define    INT3PL  2  // Group3 Interrupts (PIEIER3)
  #define    INT4PL  3  // Group4 Interrupts (PIEIER4)
  #define    INT5PL  4  // Group5 Interrupts (PIEIER5)
  #define    INT6PL  3  // Group6 Interrupts (PIEIER6)
  #define    INT7PL  0  // reserved
  #define    INT8PL  0  // reserved
  #define    INT9PL  1  // Group9 Interrupts (PIEIER9)
  #define    INT10PL 0  // reserved
  #define    INT11PL 0  // reserved
  #define    INT12PL 0  // reserved
  #define    INT13PL 5  // XINT3
  #define    INT14PL 5  // INT14 (TINT2)
  #define    INT15PL 5  // DATALOG
  #define    INT16PL 5  // RTOSINT
3.级中断设置好以后,我们就要设置每一组里的中断优先级级别。其中:0表示不用;1表示优先级最高;8表示优先级最低;
  以第9组为例说明:其中,ECAN0INTA优先级最高;ECAN1INTA为第2,SCIRXINTA为第3。其他自己数。
  #define    G91PL   3  // SCIRXINTA (SCI-A)
 #define    G92PL   5  // SCITXINTA (SCI-A)
 #define    G93PL   6  // SCIRXINTB (SCI-B)
  #define    G94PL   4  // SCITXINTB (SCI-B)
  #define    G95PL   1  // ECAN0INTA (ECAN-A)
  #define    G96PL   2  // ECAN1INTA (ECAN-A)
  #define    G97PL   0  // reserved
  #define    G98PL   0  // reserved
4.由上可知所有组里第9组优先级最高,第9组中ECAN0INTA(G95PL)优先级最高。优先级设置好后到DSP281x_SWPrioritizedDefaultIsr.c
  文件中找到相应的函数。我这里就拿ECAN0INTA(ECAN-A)来作为例子说明;
 这个中断对应的函数为(DSP281x_SWPrioritizedDefaultIsr.c文件里可以找到)如下:
//---------------------------------------------------------------------------
// eCAN-A Default ISRs:
//
// Connected to PIEIER9_5 (use MINT9 and MG95 masks):
#if (G95PL != 0)
interrupt void ECAN0INTA_ISR(void)// eCAN-A
{
    // Set interrupt priority:
    volatile Uint16 TempPIEIER = PieCtrlRegs.PIEIER9.all;
      /*以下表示,大于第9组中断级别的中断使能,小于第9组中断级别的中断不使能*/
    IER |= M_INT9;
    IER    &= MINT         // Set "global" priority
      /*优先级大于第9组中第5个中断的中断使能,否则不使能*/
    PieCtrlRegs.PIEIER9.all &= MG95; // Set "group"priority       
    PieCtrlRegs.PIEACK.all = 0xFFFF; // Enable PIE interrupts   
     
    EINT; //全局中断使能,但因为此中断优先级最高,所以其他一般中断不能打断它
    // Insert ISR Code here.......
      CAN_ISR(); //你自己定义的中断处理程序,在此程序中写你自己的代码;
    // Next line for debug only (remove after inserting ISR Code):
      //ESTOP0; //仿真停止,仿真时可以用。
    // Restore registers saved:
    DINT; //关中断
    PieCtrlRegs.PIEIER9.all = TempPIEIER;
} 
#endif
其他中断的设置以此为例,只要在.h文件中设置好优先级,再将你自己的中断处理代码插入相应的中断函数即可。此时你就可以实现高优先级可以打断低优先级的中断。而且也可以中断嵌套。如果不想低优先级的程序不想被打断则不允许EINT即可。
但是要注意TI的DSP281x_SWPrioritizedDefaultIsr.c文件中有一些笔误,可能会使你的中断只能出现一些,或者是出其他问题。此时你要查一下,看是否有明显的错误;错误不是很多,我记不清了,就不在这里写出来了。大家先试试自己的中断吧!