dsp28335中断

dsp28335一个有16个中短线 RESET,NMI---------不可屏蔽中断

  INT1~INT12-----------每组中断线有8个中断。例:INT1.1,INT12.8

INT13-------------------定时器1中短线  (当XNMI.SELECT=0时,nmi复用INT13)

INT14-------------------定时器2中断线

1,不可屏蔽中断:只要有中断请求,必须进行中断响应。通常用作故障处理等。

2.在执行完中断服务程序后,必须手动清除pieack.x,写1清0.

3.中断优先级:无中断嵌套。中断序号小的具有高的优先级,可以通过改变中断向量表改变优先级。

4.DBGIER:中断调试使能:该位置位:cpu在实时调试模式且cpu暂停时(在中断中打断点时),程序在中断中暂停,不往后执行。

注: DBGIER----------------实时调试模式,且cpu打断点,才用DBGIER使能,此时INTM不起作用

 IER----------------------标准模式下使用或者实时调试模式,cpu不打断点。使用IER来使能

5.PieVectTable.TINT0 = &ISRTimer0;          

        中断向量表 中断服务函数地址

用这总方式把中断向量表和中断函数入口地址一一对应。

6.void EnableInterrupts()
{


    // Enable the PIE
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1; //使能pie,把中断向量表映射到到pie中断向量表中(pie中断向量表地址0x000d00~0x000e00)
// Enables PIE to drive a pulse into the CPU 
PieCtrlRegs.PIEACK.all = 0xFFFF;   //写1清0,清除piecak寄存器。
// Enable Interrupts at the CPU level 
    EINT; //使能全局中断intm.


}

7.可以使用一下三个函数初始化cpu定时器

InitCpuTimers(); //初始化定时器0,1,2

void ConfigCpuTimer(struct CPUTIMER_VARS *Timer, float Freq, float Period) //三个参数依次为:哪个定时器,定时器频率,定时器周期,那么定时器中断产生时间为T=(频率*周期)/150 000 000  (150 000 000为时钟频率)

StartCpuTimer0(); //启动定时器。

注:CpuTimer0.RegsAddr = &CpuTimer0Regs; //指向定时器0的寄存器地址,就是把cpu timer0结构体指向cputieme0结构体regsaddr中,然后通过Timer->RegsAddr->TPR.all  = 0; 这种赋值,赋值给cpu timer0regs寄存器。

你可能感兴趣的:(dsp28335中断)