




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第第4 4章章 如何構(gòu)建一個完整的工程如何構(gòu)建一個完整的工程DSP原理及應(yīng)用打開已有的工程打開已有的工程4.1 一個完整的工程由哪些文件構(gòu)成頭文件頭文件 .h文件,來自于文件,來自于Include文件夾。是文件夾。是TMS320F2812工程的頭文件,工程的頭文件,頭文件內(nèi)定義頭文件內(nèi)定義了內(nèi)部寄存器的數(shù)據(jù)結(jié)構(gòu)了內(nèi)部寄存器的數(shù)據(jù)結(jié)構(gòu)。一般不需要修改。一般不需要修改。如果需要定義在整個工程內(nèi)都具有作用域的全如果需要定義在整個工程內(nèi)都具有作用域的全局變量時,可以將這些變量定義在頭文件里。局變量時,可以將這些變量定義在頭文件里。庫文件庫文件 .lib文件,來自于文件,來自于Libraries文件夾。
2、文件夾。源文件源文件 .c文件,來自于文件,來自于Source文件夾。工程文件夾。工程的源文件,是構(gòu)成工程的主要文件,軟件開發(fā)的源文件,是構(gòu)成工程的主要文件,軟件開發(fā)時編寫的代碼都是寫在源文件內(nèi)的。時編寫的代碼都是寫在源文件內(nèi)的。CMD文件文件 .cmd文件,用來分配存儲空間的。文件,用來分配存儲空間的。包含所有的頭包含所有的頭文件,只要添文件,只要添加了這個頭文加了這個頭文件,其他的都件,其他的都被添加到所建被添加到所建工程下。工程下。4.1.1頭文件頭文件是以頭文件是以.h為后綴的文件。為后綴的文件。h即為即為“head”的縮寫。的縮寫。F2812的頭文件主要定義了芯片內(nèi)部的寄存器結(jié)構(gòu)、終
3、端服的頭文件主要定義了芯片內(nèi)部的寄存器結(jié)構(gòu)、終端服務(wù)程序等內(nèi)容。務(wù)程序等內(nèi)容。創(chuàng)建新工程的時候,將表中所列頭文件和新建的工程文件放創(chuàng)建新工程的時候,將表中所列頭文件和新建的工程文件放在同一個文件夾里,然后在使用到頭文件的源文件內(nèi)加入在同一個文件夾里,然后在使用到頭文件的源文件內(nèi)加入代碼代碼“#include”DSP28_device.h”工程編譯的時候,工程編譯的時候,CCS會自動掃描并將所有相關(guān)的頭文件添加到工程中。會自動掃描并將所有相關(guān)的頭文件添加到工程中。序號序號文件名文件名主要內(nèi)容主要內(nèi)容1 1DSP28_Adc.hDSP28_Adc.h模數(shù)轉(zhuǎn)換模數(shù)轉(zhuǎn)換(ADC)(ADC)寄存器的相關(guān)
4、定義寄存器的相關(guān)定義2 2DSP28_CpuTimers.hDSP28_CpuTimers.h3232位位CPUCPU定時器寄存器的相關(guān)定義定時器寄存器的相關(guān)定義3 3DSP28_DefaultISR.hDSP28_DefaultISR.hF2812F2812默認中斷服務(wù)程序的定義默認中斷服務(wù)程序的定義4 4DSP28_DevEmu.hDSP28_DevEmu.hF2812F2812硬件仿真寄存器的相關(guān)定義硬件仿真寄存器的相關(guān)定義5 5DSP28_Device.hDSP28_Device.h包含所有的頭文件、目標包含所有的頭文件、目標CPUCPU類型的選擇類型的選擇(F2812(F2812或或
5、F2810)F2810)、常用標量的定義等內(nèi)容、常用標量的定義等內(nèi)容6 6DSP28_Ecan.hDSP28_Ecan.h增強型增強型CANCAN寄存器的相關(guān)定義寄存器的相關(guān)定義7 7DSP28_Ev.hDSP28_Ev.h事件管理器事件管理器(EV)(EV)寄存器的定義寄存器的定義8 8DSP28_GlobalPrototypes.hDSP28_GlobalPrototypes.h全局函數(shù)的聲明全局函數(shù)的聲明9 9DSP28_Gpio.hDSP28_Gpio.h通用輸入輸出通用輸入輸出(Gpio)(Gpio)寄存器相關(guān)定義寄存器相關(guān)定義1010DSP28_McBsp.hDSP28_McBsp
6、.h多通道緩沖串行口(多通道緩沖串行口(McBspMcBsp)寄存器相關(guān)定義)寄存器相關(guān)定義1111DSP28_PieCtrl.hDSP28_PieCtrl.hPIEPIE控制寄存器的相關(guān)定義控制寄存器的相關(guān)定義1212DSP28_PieVect.hDSP28_PieVect.hPIEPIE中斷向量表的定義中斷向量表的定義1313DSP28_Sci.hDSP28_Sci.h串行通信接口串行通信接口(SCI)(SCI)寄存器的相關(guān)定義寄存器的相關(guān)定義1414DSP28_Spi.hDSP28_Spi.h串行外圍設(shè)備接口串行外圍設(shè)備接口(SPI)(SPI)寄存器的相關(guān)定義寄存器的相關(guān)定義1515DS
7、P28_SysCtrl.hDSP28_SysCtrl.h系統(tǒng)控制寄存器的相關(guān)定義系統(tǒng)控制寄存器的相關(guān)定義1616DSP28_Xintf.hDSP28_Xintf.h外部接口寄存器的相關(guān)定義外部接口寄存器的相關(guān)定義1717DSP28_XIntrupt.hDSP28_XIntrupt.h外部中斷寄存器的相關(guān)定義外部中斷寄存器的相關(guān)定義自己創(chuàng)建頭文件,主要用來定義一些變量能夠在整個工程內(nèi)使用,自己創(chuàng)建頭文件,主要用來定義一些變量能夠在整個工程內(nèi)使用,也就是作用域在整個工程的全局變量。也就是作用域在整個工程的全局變量。首先需要在某個頭文件中進行定義,然后在源文件中進行聲明。首先需要在某個頭文件中進行定
8、義,然后在源文件中進行聲明。然后添加到當前工程目錄下。然后添加到當前工程目錄下。錯誤!錯誤!正確!正確!1, 1, 將所創(chuàng)建的頭文件和其他頭文件放在相同的路徑下將所創(chuàng)建的頭文件和其他頭文件放在相同的路徑下2, 2, 在在DSP_Device.hDSP_Device.h中包含其他頭文件的代碼中加入語句中包含其他頭文件的代碼中加入語句“#include#include“DSP28_Global-Variable.h”DSP28_Global-Variable.h”4.1.2 庫文件庫文件是以庫文件是以.lib為后綴的文件為后綴的文件Lib即即“l(fā)ibrary”的縮寫的縮寫CCS中庫文件的默認路徑為
9、:中庫文件的默認路徑為:C:CCStudio_v3.3c2000cgtoolslib庫文件不僅包含了寄存器的地址與對應(yīng)標示符庫文件不僅包含了寄存器的地址與對應(yīng)標示符的定義,還包含了的定義,還包含了C/C+運行支持庫函數(shù),如運行支持庫函數(shù),如系統(tǒng)啟動函數(shù)系統(tǒng)啟動函數(shù)_c_int00等。等。C28xx相關(guān)的庫文件有相關(guān)的庫文件有4個:個:rts2800.lib、 rts2800_eh.lib、 rts2800_ml.lib和和 rts2800_ml_eh.lib、靜態(tài)庫與動態(tài)庫的區(qū)別(1)作用都是將函數(shù)封裝在一起經(jīng)過編譯之后供自己或作用都是將函數(shù)封裝在一起經(jīng)過編譯之后供自己或者他人調(diào)用。優(yōu)點在于編
10、譯后的庫文件是看不者他人調(diào)用。優(yōu)點在于編譯后的庫文件是看不到源碼的,保密性很好,同時也不會因為不小到源碼的,保密性很好,同時也不會因為不小心修改了函數(shù)出問題,便于維護心修改了函數(shù)出問題,便于維護 lib是編譯時需要的,而是編譯時需要的,而dll是運行時需要的。如果是運行時需要的。如果要完成源代碼的編譯,有要完成源代碼的編譯,有l(wèi)ib就夠了。如果要使就夠了。如果要使動態(tài)鏈接的程序運行起來,有動態(tài)鏈接的程序運行起來,有dll就夠了。當然,就夠了。當然,在開發(fā)和調(diào)試階段,最好兩者都有。在開發(fā)和調(diào)試階段,最好兩者都有。 .lib .dll靜態(tài)庫與動態(tài)庫的區(qū)別(2) 一般的動態(tài)庫程序有一般的動態(tài)庫程序有
11、lib文件和文件和dll文件。文件。lib文件是文件是必須在編譯期就連接到應(yīng)用程序中的,而必須在編譯期就連接到應(yīng)用程序中的,而dll文件文件是運行期才會被調(diào)用的。是運行期才會被調(diào)用的。如果有如果有dll文件,那么對文件,那么對應(yīng)的應(yīng)的lib文件一般是一些索引信息,具體的實現(xiàn)在文件一般是一些索引信息,具體的實現(xiàn)在dll文件中文件中。如果只有。如果只有l(wèi)ib文件,那么這個文件,那么這個lib文件文件是靜態(tài)編譯出來的,索引和實現(xiàn)都在其中。靜態(tài)是靜態(tài)編譯出來的,索引和實現(xiàn)都在其中。靜態(tài)編譯的編譯的lib文件優(yōu)點是給用戶安裝時就不需要再掛文件優(yōu)點是給用戶安裝時就不需要再掛動態(tài)庫了。但也有缺點,就是導(dǎo)致應(yīng)
12、用程序比較動態(tài)庫了。但也有缺點,就是導(dǎo)致應(yīng)用程序比較大,而且失去了動態(tài)庫的靈活性,在版本升級時,大,而且失去了動態(tài)庫的靈活性,在版本升級時,同時要發(fā)布新的應(yīng)用程序才行。同時要發(fā)布新的應(yīng)用程序才行。靜態(tài)庫與動態(tài)庫的區(qū)別(3) 在動態(tài)庫的情況下,有兩個文件,一個是引入在動態(tài)庫的情況下,有兩個文件,一個是引入庫(庫(.lib)文件,一個是)文件,一個是dll文件,引入庫文件文件,引入庫文件包含被包含被dll導(dǎo)出的函數(shù)的名稱和位置,導(dǎo)出的函數(shù)的名稱和位置,dll包含包含實際的函數(shù)和數(shù)據(jù),應(yīng)用程序使用實際的函數(shù)和數(shù)據(jù),應(yīng)用程序使用lib文件鏈接文件鏈接到所需要使用的到所需要使用的dll文件,庫中的函數(shù)和
13、數(shù)據(jù)并文件,庫中的函數(shù)和數(shù)據(jù)并不復(fù)制到可執(zhí)行文件中,因此在應(yīng)用程序的可不復(fù)制到可執(zhí)行文件中,因此在應(yīng)用程序的可執(zhí)行文件中,執(zhí)行文件中,存放的不是被調(diào)用的函數(shù)代碼,存放的不是被調(diào)用的函數(shù)代碼,而是而是dll中所要調(diào)用的函數(shù)的內(nèi)存地址,中所要調(diào)用的函數(shù)的內(nèi)存地址,這樣當這樣當一個或多個應(yīng)用程序運行是再把程序代碼和被一個或多個應(yīng)用程序運行是再把程序代碼和被調(diào)用的函數(shù)代碼鏈接起來,從而節(jié)省了內(nèi)存資調(diào)用的函數(shù)代碼鏈接起來,從而節(jié)省了內(nèi)存資源。源。 在在DSP開發(fā)中,通常只須關(guān)注開發(fā)中,通常只須關(guān)注lib文件即可。四個文件即可。四個庫函數(shù)庫函數(shù)TI并未給出詳細說明,參考英文說明,實并未給出詳細說明,參考英
14、文說明,實際使用時,編譯錯誤就更換庫函數(shù)重新嘗試。際使用時,編譯錯誤就更換庫函數(shù)重新嘗試。4.1.3 源文件源文件是以源文件是以.c為后綴的文件為后綴的文件C即為即為“source”的縮寫的縮寫源文件是整個工程的核心,包含了所有需源文件是整個工程的核心,包含了所有需要實現(xiàn)的功能的代碼要實現(xiàn)的功能的代碼TI為為F2812的開發(fā)已經(jīng)準備好了很多源文件,的開發(fā)已經(jīng)準備好了很多源文件,通常在里頭添加代碼實現(xiàn)期望的功能通常在里頭添加代碼實現(xiàn)期望的功能但但main函數(shù)(主函數(shù))文件需要開發(fā)者根函數(shù)(主函數(shù))文件需要開發(fā)者根據(jù)自己實際情況編寫。據(jù)自己實際情況編寫。F2812常用的源文件序號序號文件名文件名主
15、要內(nèi)容主要內(nèi)容1 1DSP28_Adc.cDSP28_Adc.cADAD初始化函數(shù)初始化函數(shù)2 2DSP28_CpuTimers.cDSP28_CpuTimers.cCPUCPU定時器初始化函數(shù)定時器初始化函數(shù)3 3DSP28_ECan.cDSP28_ECan.c增強型增強型CanCan初始化函數(shù)初始化函數(shù)4 4DSP28_Ev.cDSP28_Ev.c事件管理器事件管理器EvEv初始化函數(shù)初始化函數(shù)5 5DSP28_Gpio.cDSP28_Gpio.c通用通用I/OI/O模塊初始化函數(shù)模塊初始化函數(shù)6 6DSP28_Mcbsp.cDSP28_Mcbsp.c多通道緩沖串行口初始化函數(shù)多通道緩沖串
16、行口初始化函數(shù)7 7DSP28_Sci.cDSP28_Sci.c串行通信接口初始化函數(shù)串行通信接口初始化函數(shù)8 8DSP28_Spi.cDSP28_Spi.c串行外圍接口初始化函數(shù)串行外圍接口初始化函數(shù)9 9DSP28_SysCtrl.cDSP28_SysCtrl.c系統(tǒng)控制模塊初始化函數(shù)系統(tǒng)控制模塊初始化函數(shù)1010DSP28_Xintf.cDSP28_Xintf.c外部接口初始化函數(shù)外部接口初始化函數(shù)1111DSP28_XIntruptDSP28_XIntrupt外部中斷初始化函數(shù)外部中斷初始化函數(shù)1212DSP28_InitPeripherals.cDSP28_InitPeriphera
17、ls.c包含了其他的外設(shè)初始化函數(shù)包含了其他的外設(shè)初始化函數(shù)1313DSP28_PieCtrl.cDSP28_PieCtrl.cPIEPIE控制模塊初始化函數(shù)控制模塊初始化函數(shù)1414DSP28_PieVect.cDSP28_PieVect.c對對PIEPIE中斷向量進行初始化中斷向量進行初始化1515DSP28_DefaultIsr.cDSP28_DefaultIsr.c包含了包含了F2812F2812所有外設(shè)中斷函數(shù)所有外設(shè)中斷函數(shù)1616DSP28_GlobalVariableDefs.cDSP28_GlobalVariableDefs.c定義了定義了F2812F2812的全局變量和數(shù)據(jù)
18、段程序的全局變量和數(shù)據(jù)段程序CMD文件CMD文件的作用是為代碼和數(shù)據(jù)文件的作用是為代碼和數(shù)據(jù)分配存儲分配存儲空間空間F2812工程中的工程中的CMD文件有兩種:文件有兩種:一種是分配一種是分配RAM空間,用于將程序下載到空間,用于將程序下載到RAM空間進行調(diào)試空間進行調(diào)試一種是分配一種是分配FLASH空間,用于將程序固化到空間,用于將程序固化到FLASH空間空間4.2 通用擴展語言GEL GEL是是General Extended Language的縮寫,即的縮寫,即通通用擴展語言用擴展語言,是一種類似,是一種類似于于C的解釋性語言。用戶的解釋性語言。用戶可以通過在文件中使用可以通過在文件中使
19、用GEL語言來創(chuàng)建函數(shù),從語言來創(chuàng)建函數(shù),從而擴展而擴展CCS的功能。通過的功能。通過GEL,可以訪問目標板的,可以訪問目標板的存儲器,并為存儲器,并為CCS的的GEL菜單添加選項。菜單添加選項。 4.2.2-1 GEL函數(shù)的定義 GEL函數(shù)定義函數(shù)定義: funcName(parameter1 ,parameter2 , parameter n) statements GEL函數(shù)名函數(shù)名有效的有效的GEL參數(shù)參數(shù)有效的有效的GEL語句語句4.2.1 GEL語法 GELGEL語法支持的語句類型語法支持的語句類型序號序號GELGEL語法支持的語句語法支持的語句1 1GELGEL函數(shù),包括函數(shù)的定
20、義、參數(shù)、調(diào)用函數(shù),包括函數(shù)的定義、參數(shù)、調(diào)用2 2ReturnReturn語句語句3 3If-elseIf-else語句語句4 4WhileWhile語句語句5 5GELGEL注釋語句注釋語句6 6預(yù)處理語句預(yù)處理語句 GELGEL是是C C語言的一個子集。但語言的一個子集。但GELGEL函數(shù)不需要指定函數(shù)返回值的函數(shù)不需要指定函數(shù)返回值的類型,也不需要任何頭信息來定義所要求的參數(shù)類型,該信息類型,也不需要任何頭信息來定義所要求的參數(shù)類型,該信息通過數(shù)據(jù)值自動獲得。通過數(shù)據(jù)值自動獲得。定義平方函數(shù)square(a) return a*a;square(1.5)=2.25;square(3)=
21、9。GEL函數(shù)名函數(shù)名有效的有效的GEL參數(shù)參數(shù)有效的有效的GEL語句語句定義初始化對話框函數(shù)dialog Init(filename “File to be Loaded”, CPUname “CPU Name”,initValue “Initialization Value”) GEL_Load(filename, CPUname); a=initValue;關(guān)鍵字,意思是關(guān)鍵字,意思是“對話框?qū)υ捒颉保{(diào)用函數(shù),調(diào)用函數(shù)“Init”時,會彈出對話框,且對話框有三個項,即三時,會彈出對話框,且對話框有三個項,即三個參數(shù)個參數(shù)字符串是對該參數(shù)的描述字符串是對該參數(shù)的描述調(diào)用調(diào)用CCS內(nèi)部函數(shù)
22、,這個函數(shù)要求內(nèi)部函數(shù),這個函數(shù)要求用一個用一個字符串來標識第一個參數(shù),也必須把一個字符串來標識第一個參數(shù),也必須把一個字符串傳遞給第一個參數(shù)字符串傳遞給第一個參數(shù)。CPUname是是可選的可選的必須在必須在DSP工程工程中定義,否則出錯中定義,否則出錯對剛才定義的對剛才定義的InitInit函數(shù)的有效調(diào)用格式:函數(shù)的有效調(diào)用格式:Init(“C:CCStudio_v3.3MyProjectsgpiodebuggpio.out”, ”cpu_a”,0)4.2.2-2 GEL函數(shù)的參數(shù)可以通過在可以通過在GEL函數(shù)中定義參數(shù)來將自變量傳遞給函數(shù)中定義參數(shù)來將自變量傳遞給一個一個GEL函數(shù)。與函數(shù)
23、。與C函數(shù)參數(shù)不同的是,函數(shù)參數(shù)不同的是,GEL函數(shù)的函數(shù)的參數(shù)類型并不需要定義,只要求參數(shù)名參數(shù)類型并不需要定義,只要求參數(shù)名。參數(shù)的類。參數(shù)的類型由傳遞的自變量自動決定。型由傳遞的自變量自動決定。GEL參數(shù)可以是以下任意一種:參數(shù)可以是以下任意一種:(1)一個實際的)一個實際的/仿真的仿真的DSP目標板符號值。目標板符號值。(2)一個數(shù)字常量,如果傳遞的是表達式或者常)一個數(shù)字常量,如果傳遞的是表達式或者常數(shù)值。數(shù)值。(3)一個字符串常量。)一個字符串常量。分析GEL函數(shù)參數(shù)Initialize(a,filename,b)targVar=b;a=0;GEL_Load(filename);r
24、eturn b*b;下面是對函數(shù)Initialize的正確調(diào)用:Initialize(targetSymbol,“C:CCStudio_v3.3MyProjectsgpioDebuggpio.out”,28*4+2.52)。參數(shù)參數(shù)a被確定為被確定為DSP的標識符的標識符targetSymbol,參數(shù),參數(shù)filename初初始化為字符串常量,參數(shù)始化為字符串常量,參數(shù)b通過計算稱為常數(shù)通過計算稱為常數(shù)114.52如果不將如果不將DSPDSP標識符傳遞給參數(shù)標識符傳遞給參數(shù)a a,則執(zhí)行第,則執(zhí)行第二個語句二個語句“a=0a=0”時就會產(chǎn)生一個運行錯誤。時就會產(chǎn)生一個運行錯誤。還需保證在還需保
25、證在GELGEL函數(shù)運行之前,這個標識符函數(shù)運行之前,這個標識符的信息已經(jīng)加載給了的信息已經(jīng)加載給了CCSCCS調(diào)試器。調(diào)試器。如果標識符如果標識符targetSymboltargetSymbol已經(jīng)被定義了,則上已經(jīng)被定義了,則上述函數(shù)的調(diào)用會將目標標識符賦值為述函數(shù)的調(diào)用會將目標標識符賦值為0 0GELGEL函數(shù)的參數(shù)除了可以是函數(shù)的參數(shù)除了可以是DSPDSP目標板的標識目標板的標識符外,還可以是數(shù)值或字符串,如符外,還可以是數(shù)值或字符串,如1 1、3.14153.1415、“C:CCStudio_v3.3C:CCStudio_v3.3MyProjectsMyProjectsgpiogpi
26、oDebDebuguggpio.outgpio.out”等。等。對于數(shù)值參量,對于數(shù)值參量,GELGEL允許向其傳遞任何有效允許向其傳遞任何有效的的C C表達式這個表達式在傳遞表達式這個表達式在傳遞給函數(shù)之前被計給函數(shù)之前被計算算出來。如果結(jié)果包含有小數(shù)點或指數(shù)符號,出來。如果結(jié)果包含有小數(shù)點或指數(shù)符號,如如1.21.2或或1.34e41.34e4,它將被當做實型變量,否則就,它將被當做實型變量,否則就是整型變量。是整型變量。下面的格式均正確調(diào)用下面的格式均正確調(diào)用InitializeInitialize函數(shù):函數(shù):Initialize(targetSymbol,“C:CCStudio_v3.
27、3MyProjectsgpioDebuggpio.out”,10)Initialize(targetSymbol,“C:CCStudio_v3.3MyProjectsgpioDebuggpio.out”,1.2)整型整型實型實型執(zhí)行第一個語句執(zhí)行第一個語句targVar=b時,如果目標變量時,如果目標變量targetVar是是整型,而參數(shù)整型,而參數(shù)b為實型時,參數(shù)為實型時,參數(shù)b將會被截尾。將會被截尾。4.2.2-3 GEL函數(shù)的調(diào)用 通??梢栽诳梢暂斎胪ǔ?梢栽诳梢暂斎隒表達式的任何地方調(diào)表達式的任何地方調(diào)用一個用一個GEL函數(shù);可以從任何能接受有效函數(shù);可以從任何能接受有效C表達式的對話
28、框中調(diào)用一個表達式的對話框中調(diào)用一個GEL函數(shù);還函數(shù);還可以在一個可以在一個GEL函數(shù)中調(diào)用另一個函數(shù)中調(diào)用另一個GEL函數(shù)。函數(shù)。GEL函數(shù)不支持遞歸調(diào)用函數(shù)不支持遞歸調(diào)用當一個當一個GEL函數(shù)正在被執(zhí)行時,不能運行它函數(shù)正在被執(zhí)行時,不能運行它自己的其他副本。自己的其他副本。 4.2.3 GEL語句返回語句返回語句If-else語句語句While語句語句注釋語句注釋語句預(yù)處理語句預(yù)處理語句GEL返回語句GELGEL在一個函數(shù)里支持標準在一個函數(shù)里支持標準C C的返回語句,的返回語句,其一般形式為:其一般形式為:return expressionreturn expression;一個返回
29、語句并不是一定需要返回一個值,一個沒有一個返回語句并不是一定需要返回一個值,一個沒有表達式的返回語句將控制返回到調(diào)用處,并不返回有表達式的返回語句將控制返回到調(diào)用處,并不返回有用的值。用的值。與標準與標準C C區(qū)別:區(qū)別:GELGEL函數(shù)定義不需指定返回值類型,函數(shù)定義不需指定返回值類型,返回值類型在程序運行時決定。返回值類型在程序運行時決定。GEL if-else語句GEL支持標準支持標準C的的if-else語句。通用格式為:語句。通用格式為:if(expression) statement1else statement2GEL if-else語句例:例:if(ab) C=a-bElse c
30、=b-a; d=b+a;GEL while語句GELGEL的的whilewhile語句類似于標準語句類似于標準C C的的whilewhile語句,語句,但是但是GELGEL不支持標準不支持標準C C的的continuecontinue和和breakbreak語句。語句。通用格式為:通用格式為:whilewhile(expressionexpression) statementstatement例:例:while(a!=b)while(a!=b) c=a c=a* *b; b; a+; a+; GEL while語句GEL注釋GEL支持標準支持標準C語言的注釋。語言的注釋。GEL的注釋,的注釋,
31、限用字符限用字符“/*”和和“*/”,可以跨越,可以跨越若干行。若干行。 while(a!=b)while(a!=b) c=a c=a* *b; b; a+; a+;/ /* *此處需要改變自變量的值來控制循環(huán)此處需要改變自變量的值來控制循環(huán)* */ / GEL預(yù)處理語句GELGEL支持標準支持標準C C的的#define#define預(yù)處理關(guān)鍵字,預(yù)處理關(guān)鍵字,這也是唯一可用的預(yù)處理關(guān)鍵字。這也是唯一可用的預(yù)處理關(guān)鍵字。下面的語句,使預(yù)處理器用給定的字符序列取代標識符,下面的語句,使預(yù)處理器用給定的字符序列取代標識符,其中字符序列前后的空格都不要:其中字符序列前后的空格都不要: #defin
32、e identifier token-sequence#define identifier token-sequence下面的語句(第一個標識符和括號之間沒有空格)下面的語句(第一個標識符和括號之間沒有空格)是一個宏定義,其參數(shù)是標識符列表:是一個宏定義,其參數(shù)是標識符列表: #define identifier#define identifier( (identifier-listidentifier-list) ) token-sequence token-sequence加載或卸載GEL函數(shù)要將包含要將包含GELGEL函數(shù)的函數(shù)的GELGEL文件加載到文件加載到CCSCCS才能才能在文件
33、中訪問,駐留在在文件中訪問,駐留在CCSCCS的存儲器中,隨的存儲器中,隨時執(zhí)行,失效在移除文件之后。時執(zhí)行,失效在移除文件之后。當加載的文件被修改,必須先將其卸載,然當加載的文件被修改,必須先將其卸載,然后再修改生效后重新加載。后再修改生效后重新加載。GELGEL加載器在加載時要檢查加載器在加載時要檢查GELGEL文件的語法文件的語法錯誤,但不檢查變量是否定義。錯誤,但不檢查變量是否定義。加載或卸載GEL函數(shù)加載一個加載一個GEL步驟:步驟:選擇選擇FileLoad GEL菜單項菜單項在彈出的在彈出的Load GEL File對話框中,瀏覽找對話框中,瀏覽找到包含到包含GEL函數(shù)的函數(shù)的GE
34、L文件。(文件。(CCS存放存放GEL文件路徑:文件路徑:CCS安裝路徑安裝路徑ccgel)雙擊文件名,或者單擊文件名后點擊雙擊文件名,或者單擊文件名后點擊“打打開開”按鈕。按鈕。加載或卸載GEL函數(shù)卸載一個卸載一個GEL步驟:步驟:選擇選擇ViewProject菜單項菜單項單擊單擊GEL文件夾旁邊的文件夾旁邊的“+”號,查看號,查看GEL文件文件右擊需要卸載的右擊需要卸載的GEL文件文件在所彈出的快捷菜單中選擇在所彈出的快捷菜單中選擇Remove4.2.5 使用關(guān)鍵字在GEL菜單中添加GEL函數(shù)4.2.5-1 關(guān)鍵字hotmenu使用關(guān)鍵字使用關(guān)鍵字hotmenuhotmenu,將一個,將一
35、個GELGEL函數(shù)添加到函數(shù)添加到GELGEL菜單菜單里,則該函數(shù)一旦被選中就立即執(zhí)行,其語法如下:里,則該函數(shù)一旦被選中就立即執(zhí)行,其語法如下: hotmenuhotmenu funcnamefuncname statements statements 例:Menuitem “My Functions”;hotmenu InitTarget() *waitstate=0 x11;Hotmenu LoadMyProg() GEL_Load(“C:CCStudio_v3.3MyProjectsgpioDebuggpio.out”)自動加載文件自動加載文件gpio.out4.2.5-2 關(guān)鍵字di
36、alog使用關(guān)鍵字使用關(guān)鍵字dialog,向,向GEL菜單添加菜單添加GEL函數(shù),函數(shù),并為參數(shù)輸入創(chuàng)建一個并為參數(shù)輸入創(chuàng)建一個對話框?qū)υ捒?。從。從GEL菜單選擇該函數(shù)時,菜單選擇該函數(shù)時,會出現(xiàn)一個對話窗口,并提示輸入?yún)?shù)。會出現(xiàn)一個對話窗口,并提示輸入?yún)?shù)。函數(shù)定義時緊跟在參數(shù)后面的字符串用來在對話窗口里描述參數(shù)。函數(shù)定義時緊跟在參數(shù)后面的字符串用來在對話窗口里描述參數(shù)。其語法如下:其語法如下: dialog funcName(paramName1 “param1 definition”, paramName2 “param2 definition”,) statementsMenuite
37、m “My Functions”;dialog InitTarget(StartAddress ”Starting Address”, EndAddress” End Address”) statements;dialog RefreshTarget() statements;例:4.2.5-3 關(guān)鍵字slider使用關(guān)鍵字使用關(guān)鍵字slider,向,向GEL菜單添加菜單添加GEL函數(shù)。函數(shù)。當從當從GEL菜單執(zhí)行該函數(shù)時,就會出現(xiàn)滑動條來控制傳遞給菜單執(zhí)行該函數(shù)時,就會出現(xiàn)滑動條來控制傳遞給GEL函數(shù)的值。函數(shù)的值。每次移動滑動條,就用新的參數(shù)來調(diào)用每次移動滑動條,就用新的參數(shù)來調(diào)用GEL函數(shù),函數(shù),該參數(shù)反映的是滑動條的位置。其格式如下:該參數(shù)反映的是滑動條的位置。其格式如下:Slider parma_definition(minVal,maxVal,increment,pageIncrement,paraName) statements; Memuitem ”My Functions”;Slider volumeControl (0,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教育政策在促進教師職業(yè)發(fā)展中的作用
- 心理健康教育與提升學(xué)生工作效能的策略研究
- 智能教育時代在線教學(xué)平臺的創(chuàng)新實踐
- 2025屆上海市盧灣高級中學(xué)高一物理第二學(xué)期期末達標檢測試題含解析
- 直方圖法分析質(zhì)量數(shù)據(jù)題目
- 在線互動課堂的技術(shù)支撐與教學(xué)實踐
- 基于大數(shù)據(jù)的嬰幼兒教育娛樂內(nèi)容創(chuàng)新研究
- 中職數(shù)學(xué)不等式課件
- 創(chuàng)新網(wǎng)絡(luò)驅(qū)動的教育資源優(yōu)化配置
- 2025年廣東省梅縣東山中學(xué)高二物理第二學(xué)期期末調(diào)研試題含解析
- 上海市培佳雙語學(xué)校2025屆高一數(shù)學(xué)第二學(xué)期期末達標檢測試題含解析
- 醫(yī)院課件:《食源性疾病知識培訓(xùn)》
- 河北省石家莊市辛集市2023-2024學(xué)年八下物理期末教學(xué)質(zhì)量檢測試題及答案解析
- 語文核心素養(yǎng)的培育智慧樹知到期末考試答案2024年
- 廣西壯族傳統(tǒng)聚落及民居研究
- 2024年華陽新材料科技集團有限公司招聘筆試參考題庫附帶答案詳解
- 檔案整理及數(shù)字化服務(wù)項目整體服務(wù)方案
- 浙江美食一條街策劃方案
- 小學(xué)生心理健康綜合測試表
- 《中國八大菜系》課件
- 新聞評論教程(第三版)教學(xué)課件9
評論
0/150
提交評論