程序员人生 网站导航

TMS320F28035学习记录四

栏目:综合技术时间:2015-05-06 08:52:23

1F28035_Device.h

此文件是经常使用的宏的定义,里面定义了数据类型,包括了必要的头文件,还有所使用器件的定义.如果使用其它器件,可以在这里更改。

2F 28035_Examples.h

它是为了设置PLL,系统时钟,而定义的常数。

3F28035_CodeStartBranch.asm

控制启动时转向的。它关闭看门狗并转向程序入口。

4F28035_DefaultIsr.c

此文件包括外设的ISR例程。在开发进程中,这些ISR例程可以被消除,并与用户自己的ISR例程替换为每一个中断。由于这些外设的ISR包括无穷循环,他们通常不被使用在终究的程序中。

它是缺省的中断程序,包括了所有中断程序的框架,如:

// Connected to INT13 of CPU (use MINT13 mask):

interrupt void INT13_ISR(void)     // INT13 or CPU-Timer1

{

  // Insert ISR Code here

 

  // Next two lines for debug only to halt the processor here

  // Remove after inserting ISR Code

  asm ("      ESTOP0");

  for(;;);

}

当进入中断时,将甚么也不做,并停留在那里。用户编程时,可以重新定义中

断函数并转向它,如:PieVectTable.XINT1 = &UserInttruptFunction

也能够修改这个文件中的函数。

5F28035_GlobalVariableDefs.c

这个文件是是定义F28035 内部寄存器的,与CMD 文件1道分配寄存器地址,并定义寄存器文件结构变量。

6F28035_PieVect.c

这个文件是定义中断矢量表中的结构体中的初始化使用的成员变量为的F2802x_DefaultIsr.c所定义的函数名

const struct PIE_VECT_TABLE PieVectTableInit = {

 

      PIE_RESERVED,  // 0  Reserved space

      PIE_RESERVED,  // 1  Reserved space

      PIE_RESERVED,  // 2  Reserved space

      PIE_RESERVED,  // 3  Reserved space

      PIE_RESERVED,  // 4  Reserved space

      PIE_RESERVED,  // 5  Reserved space

      PIE_RESERVED,  // 6  Reserved space

      PIE_RESERVED,  // 7  Reserved space

      PIE_RESERVED,  // 8  Reserved space

      PIE_RESERVED,  // 9  Reserved space

      PIE_RESERVED,  // 10 Reserved space

      PIE_RESERVED,  // 11 Reserved space

      PIE_RESERVED,  // 12 Reserved space

 

// Non-Peripheral Interrupts

      INT13_ISR,     // INT13 or CPU-Timer 1

      INT14_ISR,     // INT14 or CPU-Timer 2

      DATALOG_ISR,   // Datalogging interrupt

      RTOSINT_ISR,   // RTOS interrupt

//---------------------------------------------------------------------------

// InitPieVectTable:

//---------------------------------------------------------------------------

// This function initializes the PIE vector table to a known state.

// This function must be executed after boot time.

void InitPieVectTable(void)

{

    int16    i;

    Uint32 *Source = (void *) &PieVectTableInit;

    Uint32 *Dest = (void *) &PieVectTable;

    // Do not write over first 3 32-bit locations (these locations are

    // initialized by Boot ROM with boot variables)

    Source = Source + 3;

    Dest = Dest + 3;

    EALLOW;

    for(i=0; i < 125; i++)

        *Dest++ = *Source++;

    EDIS;

    // Enable the PIE Vector Table

    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;

}

上面的函数功能是将所有defaultISR.c中定义的中断函数都转化为中断入口地址保存在PieVectTableInit结构体变量的成员中,以后再通过void InitPieVectTable(void)函数将挣够结构体中的变量整体搬迁到以PieVectTable变量首地址为出发点处,以下

#pragma DATA_SECTION(PieVectTable,"PieVectTableFile");

#endif

struct PIE_VECT_TABLE PieVectTable;

 

7F28035_PieCtrl.c

PIE初始化函数,将PIE初始化到1个肯定的位置

8F28035_SysCtrl.c

系统的时钟控制,在这个文件中完成。

9F28035_MemCopy.c

这是对烧写到FLASH 中的程序,拷贝到RAM 中运行时使用的。由于在flash中运行程序,需要插入等待时间,在RAM 中运行不需要等待。

10F28035_usDelay.asm

这是个延时函数,很简单。这个文件中还有个“ramfuncs”(具体细节将在其它

文章中叙述),这样定义后就能够使用MemCopy()将它拷贝到RAM 中运行:

       .def _DSP28x_usDelay

       .sect "ramfuncs"

 

        .global  __DSP28x_usDelay

_DSP28x_usDelay:

        SUB    ACC,#1

        BF     _DSP28x_usDelay,GEQ    ;; Loop if ACC >= 0

        LRETR

 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐