专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

TMS320F2812外设例程系列之PieVect

作者:佚名   来源:不详   点击数:  更新时间:2014年08月17日   【字体:

  //#####################################################################

//文件:  DSP281x_PieVect.c
//说明:  DSP281x 芯片 PIE 中断向量表初始化程序
//#####################################################################
#include "DSP281x_Device.h"     
#include "DSP281x_Examples.h"   
const struct PIE_VECT_TABLE PieVectTableInit = {
//定义一个结构体类型PIE_VECT_TABLE的结构体变量PieVectTableInit,并给元素赋初
//值,其元素初值为其对应的默认中断向量服务程序的起始地址(函数名)
//在DSP281x_DefaultIsr.c里面都有定义
      PIE_RESERVED,   //保留,复位总是取自BROM或XINTF7区的0x3F FFC0
      PIE_RESERVED,   //保留,见PIE组1
      PIE_RESERVED,   //保留,见PIE组2
      PIE_RESERVED,   //保留,见PIE组3
      PIE_RESERVED,   //保留,见PIE组4
      PIE_RESERVED,   //保留,见PIE组5
      PIE_RESERVED,   //保留,见PIE组6
      PIE_RESERVED,   //保留,见PIE组7
      PIE_RESERVED,   //保留,见PIE组8
      PIE_RESERVED,   //保留,见PIE组9
      PIE_RESERVED,   //保留,见PIE组10
      PIE_RESERVED,   //保留,见PIE组11
      PIE_RESERVED,   //保留,见PIE组12
      //非外设中断
      INT13_ISR,       //XINT13(外部中断13) 或CPU-Timer 1(用BIOS或RTOS)
      INT14_ISR,       //CPU-Timer2
      DATALOG_ISR,     //CPU数据记录中断
      RTOSINT_ISR,     //CPU实时操作系统中断
      EMUINT_ISR,     //CPU仿真中断
      NMI_ISR,         //外部不可屏蔽中断
      ILLEGAL_ISR,     //非法操作陷阱
      USER1_ISR,       //用户定义软件中断1
      USER2_ISR,       //用户定义软件中断2
      USER3_ISR,       //用户定义软件中断3
      USER4_ISR,       //用户定义软件中断4
      USER5_ISR,       //用户定义软件中断5
      USER6_ISR,       //用户定义软件中断6
      USER7_ISR,       //用户定义软件中断7
      USER8_ISR,       //用户定义软件中断8
      USER9_ISR,       //用户定义软件中断9
      USER10_ISR,       //用户定义软件中断10
      USER11_ISR,       //用户定义软件中断11
      USER12_ISR,       //用户定义软件中断12
      //PIE组1
      PDPINTA_ISR,     //EV-A
      PDPINTB_ISR,     //EV-B
      rsvd_ISR,
      XINT1_ISR,     
      XINT2_ISR,
      ADCINT_ISR,       //ADC
      TINT0_ISR,       //Timer 0
      WAKEINT_ISR,     //WD
      //PIE组2
      CMP1INT_ISR,     //EV-A
      CMP2INT_ISR,     //EV-A
      CMP3INT_ISR,     //EV-A
      T1PINT_ISR,     //EV-A
      T1CINT_ISR,     //EV-A
      T1UFINT_ISR,     //EV-A
      T1OFINT_ISR,     //EV-A
      rsvd_ISR,
      //PIE组3
      T2PINT_ISR,     //EV-A
      T2CINT_ISR,     //EV-A
      T2UFINT_ISR,     //EV-A
      T2OFINT_ISR,     //EV-A
      CAPINT1_ISR,     //EV-A
      CAPINT2_ISR,     //EV-A
      CAPINT3_ISR,     //EV-A
      rsvd_ISR,
      //PIE组4
      CMP4INT_ISR,     //EV-B
      CMP5INT_ISR,     //EV-B
      CMP6INT_ISR,     //EV-B
      T3PINT_ISR,     //EV-B
      T3CINT_ISR,     //EV-B
      T3UFINT_ISR,     //EV-B
      T3OFINT_ISR,     //EV-B
      rsvd_ISR,      
      //PIE组5
      T4PINT_ISR,     //EV-B
      T4CINT_ISR,     //EV-B
      T4UFINT_ISR,     //EV-B
      T4OFINT_ISR,     //EV-B
      CAPINT4_ISR,     //EV-B
      CAPINT5_ISR,     //EV-B
      CAPINT6_ISR,     //EV-B
      rsvd_ISR,      
      //PIE组6
      SPIRXINTA_ISR,   //SPI-A
      SPITXINTA_ISR,   //SPI-A
      rsvd_ISR,
      rsvd_ISR,
      MRINTA_ISR,     //McBSP-A
      MXINTA_ISR,     //McBSP-A
      rsvd_ISR,
      rsvd_ISR,
      //PIE组7
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      //PIE组8
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      //PIE组9     
      SCIRXINTA_ISR,   //SCI-A
      SCITXINTA_ISR,   //SCI-A
      SCIRXINTB_ISR,   //SCI-B
      SCITXINTB_ISR,   //SCI-B
      ECAN0INTA_ISR,   //eCAN
      ECAN1INTA_ISR,   //eCAN
      rsvd_ISR,   
      rsvd_ISR,   
      //PIE组10
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      //PIE组11
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      //PIE组12
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
      rsvd_ISR,   
};
//初始化PIE中断向量表
//这个子程序把PIE中断向量表初始化到一个已知状态,这个子程序必须在引导程序后执行
void InitPieVectTable(void)
{
   int16 i;
   Uint32 *Source = (void *) &PieVectTableInit;
   Uint32 *Dest = (void *) &PieVectTable;
//将结构体变量PieVectTableInit的值赋给结构体变量PieVectTable
  //注意:两个为同一个结构体类型PIE_VECT_TABLE
EALLOW;
for(i=0; i < 128; i++)
*Dest++ = *Source++;
EDIS;
//使能PIE中断向量表
PieCtrlRegs.PIECRTL.bit.ENPIE = 1;
}
关闭窗口