****************************************************************************/ 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; //开全局中断 }