1、F28035_Device.h
此文件是經(jīng)常使用的宏的定義,里面定義了數(shù)據(jù)類(lèi)型,包括了必要的頭文件,還有所使用器件的定義.如果使用其它器件,可以在這里更改。
2、F 28035_Examples.h
它是為了設(shè)置PLL,系統(tǒng)時(shí)鐘,而定義的常數(shù)。
3、F28035_CodeStartBranch.asm
控制啟動(dòng)時(shí)轉(zhuǎn)向的。它關(guān)閉看門(mén)狗并轉(zhuǎn)向程序入口。
4、F28035_DefaultIsr.c
此文件包括外設(shè)的ISR例程。在開(kāi)發(fā)進(jìn)程中,這些ISR例程可以被消除,并與用戶自己的ISR例程替換為每一個(gè)中斷。由于這些外設(shè)的ISR包括無(wú)窮循環(huán),他們通常不被使用在終究的程序中。
它是缺省的中斷程序,包括了所有中斷程序的框架,如:
// 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(;;);
}
當(dāng)進(jìn)入中斷時(shí),將甚么也不做,并停留在那里。用戶編程時(shí),可以重新定義中
斷函數(shù)并轉(zhuǎn)向它,如:PieVectTable.XINT1 = &UserInttruptFunction
也能夠修改這個(gè)文件中的函數(shù)。
5、F28035_GlobalVariableDefs.c
這個(gè)文件是是定義F28035 內(nèi)部寄存器的,與CMD 文件1道分配寄存器地址,并定義寄存器文件結(jié)構(gòu)變量。
6、F28035_PieVect.c
這個(gè)文件是定義中斷矢量表中的結(jié)構(gòu)體中的初始化使用的成員變量為的F2802x_DefaultIsr.c所定義的函數(shù)名
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;
}
上面的函數(shù)功能是將所有defaultISR.c中定義的中斷函數(shù)都轉(zhuǎn)化為中斷入口地址保存在PieVectTableInit結(jié)構(gòu)體變量的成員中,以后再通過(guò)void InitPieVectTable(void)函數(shù)將掙夠結(jié)構(gòu)體中的變量整體搬遷到以PieVectTable變量首地址為出發(fā)點(diǎn)處,以下
#pragma DATA_SECTION(PieVectTable,"PieVectTableFile");
#endif
struct PIE_VECT_TABLE PieVectTable;
7、F28035_PieCtrl.c
PIE初始化函數(shù),將PIE初始化到1個(gè)肯定的位置
8、F28035_SysCtrl.c
系統(tǒng)的時(shí)鐘控制,在這個(gè)文件中完成。
9、F28035_MemCopy.c
這是對(duì)燒寫(xiě)到FLASH 中的程序,拷貝到RAM 中運(yùn)行時(shí)使用的。由于在flash中運(yùn)行程序,需要插入等待時(shí)間,在RAM 中運(yùn)行不需要等待。
10、F28035_usDelay.asm
這是個(gè)延時(shí)函數(shù),很簡(jiǎn)單。這個(gè)文件中還有個(gè)“ramfuncs”(具體細(xì)節(jié)將在其它
文章中敘述),這樣定義后就能夠使用MemCopy()將它拷貝到RAM 中運(yùn)行:
.def _DSP28x_usDelay
.sect "ramfuncs"
.global __DSP28x_usDelay
_DSP28x_usDelay:
SUB ACC,#1
BF _DSP28x_usDelay,GEQ ;; Loop if ACC >= 0
LRETR