这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » FPGA » 2812中断程序模板

共2条 1/1 1 跳转至

2812中断程序模板

工程师
2014-12-08 20:01:48     打赏
****************************************************************************/
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;                                                //开全局中断

}

 


高工
2020-04-17 15:18:23     打赏
2楼

学习一下


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]