TMS320F28035學習記錄四

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 文件一道分配寄存器地址,並定義寄存器文件結構變量。

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初始化到一個確定的位置

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

 

發佈了143 篇原創文章 · 獲贊 29 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章