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寄存器。