/****************************************************************************
*
*$ Date: 24/10/2009 整理: eyes417 版本:V1.0 $
*
*FILE :281x_interrupt.c
*
*TITLE:2812中断函数写法,格式I
*
*说 明:格式I---写在main的源文件中
*
****************************************************************************/
1).先定义中断函数,再给相应的PIE中断赋地址。写在在main.c中
interrupt void eva_timer1_isr(void); //中断函数声明
void main(void)
{
InitSysCtrl();
//禁止和清除所有CPU中断
DINT;
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl(); //初始化PIE控制寄存器
InitPieVectTable(); //初始化PIE中断向量表
// 赋予地址,中断发生时,自动跳转
EALLOW;
PieVectTable.T1PINT = &eva_timer1_isr;
EDIS;
// InitPeripherals(); //初始化所有外设
init_eva_timer1();
//使能PIE中断INT2.4(T1PINT中断)
PieCtrlRegs.PIEIER2.all = M_INT4;
IER |= M_INT2 //开CPU中断
EINT; // Enable Global interrupt INTM
ERTM ; // Enable Global realtime interrupt DBGM
for(;;);
}
//EV-A定时器1中断服务函数
interrupt void eva_timer1_isr(void)
{
......... //中断内容
//清除定时器标志位
EvaRegs.EVAIMRA.bit.T1PINT = 1;
EvaRegs.EVAIFRA.all = BIT7; //BIT7---0x0080
PieCtrlRegs.PIEACK.all = PIEACK_GROUP2;
}
/****************************************************************************
*
*$ Date: 24/10/2009 整理: eyes417 版本:V1.0 $
*
*FILE :281x_interrupt.c
*
*TITLE:2812中断函数写法,格式II
*
*说 明:格式II---分模块式写法,写在TI-281x模板中的DSP281x_DefaultIsr.c
*
****************************************************************************/
2).写在DSP281x_DefaultIsr.c中。
void main(void)
{
InitSysCtrl();
//禁止和清除所有CPU中断
DINT;
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl(); //初始化PIE控制寄存器
IInitPieVectTable(); //初始化PIE中断向量表
// InitPeripherals(); //初始化所有外设
init_eva_timer1();
//使能PIE中断INT2.4(T1PINT中断)
PieCtrlRegs.PIEIER2.all = M_INT4;
IER |= M_INT2 //开CPU中断
EINT; // Enable Global interrupt INTM
ERTM ; // Enable Global realtime interrupt DBGM
for(;;);
}
在DSP281x_DefaultIsr.c中
interrupt void T1PINT_ISR(void)
{
...........
EvaRegs.EVAIMRA.bit.T1PINT = 1; //中断屏蔽位
EvaRegs.EVAIFRA.bit.T1PINT=1; //清除中断标志位
PieCtrlRegs.PIEACK.bit.ACK2=1; //响应同组中断
EINT; //开全局中断
}