2812中断程序模板

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

}

你可能感兴趣的:(Date,timer,File)