




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
中文版C281xC/C++的頭文件目錄:1簡介DSP281XC/C++頭文件和外設例程程序包安裝目錄結(jié)構(gòu)2外設位域結(jié)構(gòu)編程方法傳統(tǒng)#define方法位域和結(jié)構(gòu)方法外設寄存器結(jié)構(gòu)增加位域使用Bits-Fields編程時的Read-Modify-Write考慮使用BRs-Fields編程時的代碼大小考慮3外設范例開始例程結(jié)構(gòu)包含文件源代碼連接命令文件例子編程流程包含的例子從FLASH開始執(zhí)行例子4逐步使用頭文件和范例代碼準備包含DSP281X外設頭文件包含通用范例代碼5常見問題和處理read-modify-wriye的影響多標志位寄存器寫1清零VolatileBits寄存器6版本變化7包含內(nèi)容支持DSP281X的頭文件DSP281X的頭文件一主函數(shù)DSP281X的頭文件一外設位域和寄存器結(jié)構(gòu)定義文件CCS的,ge!文件變量名和數(shù)據(jù)段通用范例代碼支持的外設中斷擴展模塊特殊外設文件有用函數(shù)源文件范例連接.cmd文件1簡介TI針對‘DSP281X系列DSP芯片使用通用的C/C++語言編寫了外設頭文件和范例程序。這些代碼可以作為應用的工具或根據(jù)使用者的需要而作為開發(fā)平臺的基礎。傳統(tǒng)的編程方法需要程序員自行編寫寄存器的H文件和所需的片內(nèi)外設的初始化、配置文件,與傳統(tǒng)的編程方法比較,基于C281XC/C++的頭文件提供了軟件開發(fā)的程序框架,其中包含有寄存器結(jié)構(gòu)定義文件、外設頭文件和器件的宏與類型定義等系統(tǒng)所需的各種文件。通過在那新的或原有的工程文件使用外設頭文件,開發(fā)者可很容易的使用C或C++語言來控制片上外設。除此之外,程序員可以改動工程中需要用到的外設和主控制程序,還可以從提供的范例代碼中挑選有用的函數(shù),丟棄那些不需要的函數(shù)。這樣程序編寫簡便、結(jié)構(gòu)清晰、易于修改和維護,同時由于框架不需做太大的變動,程序員可以將精力集中于算法的研究,從而加速項目或產(chǎn)品的研發(fā)進度。注意:本章沒有提供使用CCS來編寫C或連接或匯編代碼的向?qū)?。前提是用戶已?jīng)有了281x的硬件平臺且通過計算機連接到CCS軟件。使用者應該了解怎么使用CCS通過JTAG下載程序并能進行基本的DEBUG操作。DSP281XC/C++頭文件和外設例程程序包安裝在使用DSP281XC/C++頭文件前,計算機中必須安裝有CCSFOR200〇,然后必須安裝DSP281XC/C++頭文件和外設例程程序包,此文件可在TI網(wǎng)址下載,安裝程序包為sprc097.rar。解壓縮后直接點擊安裝,顯示如下畫面;
按提示繼續(xù)操作,選擇相應目錄點擊Next安裝完成。在ticds\c28\dsp281x\v100\doc目錄下有相應幫助說明。目錄結(jié)構(gòu)安裝后,可以看到C281XC/C++頭文件和外設例程清晰的目錄結(jié)構(gòu)。目錄結(jié)構(gòu)當前的版本為V1.00,從結(jié)構(gòu)圖可以看出C/C++頭文件、外設例程和共享源代碼分別單獨存放。這種文件分類方法使查找文件方便,易于使用者快捷的將這些文件融合到新的或原來的工程文件B〇DSP281x日白7100docBしDSP281x_common白cmdゝinclude〇source畫二)DSP281x_examplesBjDSP281x_headerscmdgelincludesource表1DSP281X主目錄結(jié)構(gòu)目錄<base>默認安裝路徑。<base>\doc文檔(包含版本更新信息)<base>\DSP281xheaders合并外設頭文件到新工程文件所需的文件。頭文件的bkfield結(jié)構(gòu)方法的描述請見第3節(jié)如何將外設頭文件添加到新的或已有工程文件請見第4節(jié)<base>\DSP281x_examples基于DSP281X頭文件的CCS編譯的程序代碼這些例程說明了281x片上外設的配置關于這些例程的綜述請見第3節(jié)<base>\DSP281x_common通過在DSP_281X外設程序中使用共享源文件來說明使用DSP_281X外設頭文件來完成各種任務。如對新的工程文件有幫助,可以隨意使用這些文件。第6節(jié)給出了這些文件的列表。DSP281x_headersネロDSP281x_common目錄下的源文件根據(jù)文件類型被進ー步分為各個子目錄。表2列出了這些子目錄及其文件的類型。子目錄描述DSP281x_headers\cmd分配位域結(jié)構(gòu)的連接命令文件,詳見第2節(jié)DSP281x_headers\source需要并入新的或原有的項目文件的頭文件的源文件DSP281x_headers\include281X片上外設的頭文件子目錄描述DSP281x_common\cmd281x的存儲器命令范例文件DSP281x_common\source281x外設例程通用.h文件DSP281x_common\include281x外設例程通用,c文件2外設位域結(jié)構(gòu)編程方法DSP281X頭文件和外設例程使用bkfield結(jié)構(gòu)方法來映射和訪問基于281x的外設寄存器。本節(jié)介紹這種方法并與傳統(tǒng)的#define方法進行了比較。傳統(tǒng)#define方法傳統(tǒng)使用C語言訪問寄存器的方法是通過使用#define宏來創(chuàng)建每個寄存器的地址標志。例如:/*********************************************************************Traditionalheaderfile//MemoryMap//AddrRegister#defineCPUTIMERO_TIM(volatileunsignedlong*)OxOCOO//OxCOOTimerOCountLow//OxCOlTimer0CountHigh#defIneCPUTIMERO_TIM(volatileunsignedlong*)0x0C02//0xC02TimerOPeriodLow//0xCO3TimerOPeriodHigh#defineCPUTIMERO_TIM(volatileunsignedInt*)0x0C04//0XC04TimerOControl//0xC05reserved#defineCPUTIMERO_TIM(volatileunsignedint*)0x0C06//0xC06TimerOPre-scaleLow#defineCPUTIMERO二TIM(volatileunsignedint*)0x0C07//0XC07TimerOPre-scaleHigh這種#deMe的定義方法可以重復來定義每個外設的每個寄存器。即使是的幾個同類外設,例如SCI-ASCI-B,每個寄存器都可以根據(jù)其地址被獨立的分開。傳統(tǒng)的#define方法的不足主要有以下幾條:訪問寄存器的每一位困難;不能在CCS的watchwindow看到寄存器的位變化;不能利用由CCS自動完成的代碼向?qū)У膬?yōu)勢:對于相同外設,頭文件的開發(fā)者無法利用代碼重用的優(yōu)勢。位域和結(jié)構(gòu)方法位域結(jié)構(gòu)的編程方法使用C語言將同一類外設的所有寄存器規(guī)為ー組。然后連接器將每個C語言編寫的外設寄存器結(jié)構(gòu)體映射為存儲器空間。這種映射允許編譯器使用CPU的DP指針直接訪問外設寄存器。除此之外,許多寄存器的位域也被定義了,這樣編譯器就可以直接讀或操作寄存器內(nèi)的單獨位。外設寄存器結(jié)構(gòu)節(jié)中使用#define方法定義了CPUTimer0寄存器。本節(jié)同樣定義CPUTimer。寄存器,但是使用C語言結(jié)構(gòu)體將CPUTimer寄存器統(tǒng)一定義。連接器將在內(nèi)存中映射CPUTimer。的寄存器結(jié)構(gòu)體。/*********************************************************************CPU-Timerheaderfileusingstructures*********************************?**?****???************************/structCPUTIMER_REGSUint32TIM;//TimercounterregisterUint32PRD;//PeriodregisterUintl6TCR;//TimercontrolregisterUintl6rsvdl;//reservedUintl6TPR;//Timerpre-scalelowUintl6TPRH;//Timerpre-scalehigh);注意以下幾點:寄存器名字出現(xiàn)順序必須與其在內(nèi)存中分配的順序相一致。內(nèi)存中保留的空間,在結(jié)構(gòu)體中也用保留變量(rsvdlrsvd2)表示,除非占用保留空間,否則這些保留結(jié)構(gòu)體成員不會被使用。Uintl6Uint32分別表示無符號16-bit,32-bit。在28x系列中,有unsignedint和unsignedlong兩種類型。這主要是操作方便考慮,其相應的類型定義可以在DSP281X-Device,h中找到。寄存器文件結(jié)構(gòu)體定義用來聲明一個訪問寄存器的變量。芯片的每個外設都需要這樣定義。多個同類外設使用同樣的結(jié)構(gòu)體定義。例如,在某個器件有三個CPUTimer,則可以被定義為三個volatilestructCPUTIMER_REGS變量,如下:/?****?*??*********************************?*************************?CPU-Timerheaderfileusingotructures******?**********************?**************************************/volatilestructCPUTIMER_REGSCpuTimerORegs;volatileatructCPUTIMER__REGSCpuTimerlRegs;volatileotructCPUTIMER_REGSCpuTimer2Regs;聲明變量時關鍵字volatile很重要,關鍵字volatile將告訴編譯器變量的內(nèi)容能被硬件改變,這樣編譯器就不會優(yōu)化使用volatile定義的變旦里。編譯器使用DATA_SECTION宏將每個外設結(jié)構(gòu)體的相應變量分配到數(shù)據(jù)段。下面的例子,變量CpuTimerORegs被分配到CpuTimerORegsFile數(shù)據(jù)段。
/********************************************************************?DSP28lx_headers\source\DSP28lx_GlobalVariableDefs.c/*AssignthevariableCpuTimerORegstotheCpuTimerORegsFileoutputsectionusingthetpragmacompilerstatementCandC++usedifferentformsofthe#pragmastatementWhencompilingaC++program,thecompilerwilldefine_cplusplusautomatically*/usedbyC++usedbyCvariableCpuTimerORegsoftypeCPUTIMER_REGSTOC\o"1-5"\h\z#ifdefcplusplus usedbyC++usedbyCvariableCpuTimerORegsoftypeCPUTIMER_REGS#pragmaDATA_SECTION("CpuTimerORegsFile*)#else一 Z/#pragmaDATA_SECTION(CpuTimerORegs,"CpuTimerORegsFile");#endlfvolatilestructCPUTIMER_REGSCpuTimerORegs; //~//數(shù)據(jù)段再次為器件的每個外設寄存器結(jié)構(gòu)體變量分配地址空間。每個結(jié)構(gòu)體被分到其自己的數(shù)據(jù)段后,連接器直接映射每個數(shù)據(jù)段到內(nèi)存映射寄存器,如下所示:/*********************************************************************DSP281x_headers\lnclude\DSP281x_Meaders_nonBIOS.cmd**************/MEMORY(PAGE1:CPU_TIMERO:origin=OxOOOCOO,length=0x000008SECTIONS(CpuTimerORegsFile:>CPUTIMER0,PAGE=1)一/?CPUTimerOregisters通過將變量直接映射到相同的外設寄存器內(nèi)存地址空間,開發(fā)者可以使用C語言訪問所需的變量成員來訪問寄存器。如想寫CPU-Timer0TCR寄存器,則程序員不得不訪問CpuTimerORegs變量中的TCR成員。?User?〇source£ileCpuTimerORegs.TCR.all=TSS_MASK;//ExampleofaccessingtheTCRregister2.3增加某一位實際中可能要經(jīng)常直接訪問寄存器的中的某位。0281xC/C++頭
文件和外設例程中使用位域結(jié)構(gòu)編程方法對許多片上寄存器的位進行了定義。例如,可以對每個CPU-Timer寄存器的每個位定義。CPU-TimerControl寄存器的位定義如下:パ*******************************************************************?DSP281Xheaders\Include\DSP28lxCpuTimers.hCPU-Timerheaderfile************************************レ*******************************/structTCRBITS{//bitsdescriptionUintl6rsvdl:4;//3:0reservedUintl6TSS:1;//4TimerStart/StopUlntl6TRD:1;//5TimerreloadUintl6rsvd2:4;//9:6reservedUlntl6SOFT:1;//10EmulationmodesUintl6PREE:1;//11Ulntl6rsvd3:2;//12:13reservedUlntl6TIE:1;//14OutputenableumtieTIP:1;//15Interruptflag);使用統(tǒng)一體聲明寄存器的優(yōu)點就是既可以使寄存器以位域結(jié)構(gòu)體被訪問,又可以使其被當作一個16位或32位的變量整體被訪問。例如,timercontro!寄存器的統(tǒng)一體定義如下:/*********************************************************************DSP281Xheaders\include\DSP281x_CpuTimerfl.hCPU-Timerheaderfile***************************????*************************************/unionTCR_REG{Uintl6 all;structTCR_BITSbit;);一旦每個寄存器的位域和統(tǒng)一體定義被確立,貝リCPU-Timer寄存器結(jié)構(gòu)體則能以統(tǒng)一體的定義方式被訪問。/********************************************************************?DSP281x_headerB\include\DSP281x_CpuTimers.hCPU-Timerheaderfile********************************************************************/structCPUTIMER_REGS);union);unionTIM_GROUPTIM;//TimercounterregioterunionPRD_GROUPPRD;//Periodregisteruniontcr":REGTCR;//TimercontrolregisterUintl6rsvdl;//reservedunionTPRREGTPR;//Timerpre-scalelowunionTPRH_REGTPRH;//Timerpre-scalehigh這樣在C語言代碼中,就可以用位域或單獨量來操作CpuTimer寄存器了。/**************************************************?*****************?User/asourcefile********?*************?*******??*???*?*********?*************?******/CpuTimerORegs.TCR.bit.TSS=1; //ExampleofaccessingasinglebitCpuTimerORegs.TCR.all=TSS_MASK;//Exampleofaccessingthewholeregister位域結(jié)構(gòu)方法具有以下的ー些優(yōu)點:使用者不需要定義標志就可以操作寄存器的位;在CCS的watchwindow可以直接查看寄存器文件和位:當使用CCS時,編輯器將會自動彈出你所要輸入的結(jié)構(gòu)/位成分提示列表;這種自動的提示使編寫代碼變得很容易,從而省去了查找寄存器和位名字文檔的麻煩。使用位域編程時的Read-Modify-Write考慮當對寄存器內(nèi)的某一位進行寫操作時,硬件將會產(chǎn)生一次read-modify-write操作,就是說,寄存器的內(nèi)容被讀出,其中的一位被修改,然后整個寄存器內(nèi)容再被寫回。對于28x器件這些操作在ー個時鐘周期即可完成。當寄存器內(nèi)容被寫回時,寄存器內(nèi)其他位將會以原值寫回。由于ー些寄存器不推薦使用位域方法訪問,所以沒有統(tǒng)一體定義。這些例外的寄存器是那些對查詢(讀)某位有益的寄存器,包括;當寫1時即清除某位,如的事件管理標志寄存器;無論何時訪問都需要以一定的方式寫的寄存器,如看門狗控制寄存器。那些沒有位或統(tǒng)一體定義的寄存器不能以.bit或.all訪問,如下:*User*ssourcefileSysCtrlRego.WDCR=0x0068;使用位域編程方法時的代碼量考慮使用位域定義訪問寄存器使得代碼易讀、易修改、易維護。同時這種方法對訪問或查詢寄存器的某一位也非常有效。然而如果多次訪問某ー寄存器,每次使用.bit將會比使用一次.all訪問寄存器的代碼多得多。例如:/*********************************************************************User'ssourcefile********************************************************************ノCpuTimerORegs.TCR.bit.TSS=1;//1=StoptimerCpuTimerORegs.TCR.bit.TRB=1;//1=reloadtimerCpuTimerORegs.TCR.bit.SOFT=1;//TimerFreeRunCpuTimer2Regs.TCR.bit.FREE=1;//TimerFreeRunCpuTimer2Regs.TCR.bit.TIE=1;//1=EnableTinierInterrupt.bit的方法使得代碼易讀易改,但代碼量稍有增加。如果代碼長短對程序很重要則可以使用.all結(jié)構(gòu)方法一次寫整個寄存器。/*********************************************************************User*ssourcefileハ******************************************************************/CpuTimerORegs.TCR.all=TCR_MASK;3外設實例在C281xC/C++HeaderFilesandPeripheralExamples^]DSP281x_examples\目錄下有幾個工程項目例程,這些例程使用DSP281xV1.00頭文件配置片上外設。3.4節(jié)給出了例程的清單。3.1入門按以下步驟裝載theDSP281XCPU-Timer例程作為開始。其他例子的調(diào)試步驟大同小異。.使用F2812eZdsp或其他的硬件平臺,在同CCS相連接。.裝載例程的GEL或工程項目文件每個例程都包含ー個CCS的GEL文件,這個文件自動裝載工程項目、編譯代碼、配置觀察窗。同樣如不使用GEL文件可以直接裝載エ程文件。按照以下順序裝載DSP281xCPU-Time啲GEL文件:a扌丁開CCS:File->LoadGELb瀏覽CPUTimer例程目錄:DSP281x_examples\cpu_timerc選擇并打開Example_281xCpuTimer,gel件d從CCS的GEL下拉菜單中選擇DS尸287xCpuTimerExample->厶。aaLacaLBt//7cし尸rq/ec爆4戈并編譯整個工程項ロ例程。3查看Example_281xCpuTimer.c原文件中main主文件最上面的注釋文件Example_281xCpuTimer.c在main程序開始有簡短的介紹,包括所有的設定、所需的硬件。4安裝調(diào)試程序所需的硬件安裝源文件中指出需備的硬件。DSP281xCPU-Timer例程只需要硬件處于""BoottoHO"方式。其他的例程可能需要額外的硬件配置,如將模式配置引腳短接或接高、接地。表3列出引導模式的設置,便于參考。對于使用F2812eZdsp的用戶而言,可以選擇相應的跳線來選擇引到模式。關于‘281x引導模式更詳細的信息可以參看TMS320F28xBootROMReferenceGuide(SPRU095).、Table3. 281xBootModeSettingsGPIOF4GPIOF12GPIOF3GPIOF2Mode1XXXBoottoflash0x3F7FF601XXCallSPIbootloader0011CallSCIbootloader0010BoottoHOSARAM0X3F80000001BoottoOTP0X3D78000000CallparallelbootloaderNote: X=Don'tCare5裝載代碼硬件安裝配置完成后,從CCS的GEL下拉菜單選擇DSP281xCpuTimerExample->Load_Code將.out文件下載到28器件內(nèi),在觀察窗輸入感興趣的變量,復位然后執(zhí)行代碼到主程序開始的地方。每次當器件復位時,GEL文件會重新裝載輸出文件。如果不想這樣,可以把GEL刪掉,只要選擇GEL文件,點擊右鍵選擇remove即可。6執(zhí)行程序,在觀察窗增加變量,檢查內(nèi)存內(nèi)容7試驗、修改、重新構(gòu)建例程當打算對例程進行一些修改時,最好拷貝ー份完整的程序來修改或者至少對原始文件作個備份。TI提供的新的例程是以這些基本文件為基礎的。3.2節(jié)和3.3節(jié)對程序結(jié)構(gòu)和流程有更詳細的描述。8從CCS中移除GEL文件或工程項目文件。移除GEL文件,只要選中文件名點擊右鍵選擇remove即可。例程中使用了theDSP281x_headers目錄中的頭文件和DSP287;gco/77/77OC目錄中的共享文件。只是example目錄下的文件針對不同的例子程序也就不盡相同。注意:多數(shù)的例程都使用位域的方法來訪問寄存器。這樣有利于更好的幫助使用如何去使用外設及器件。使用位域方法編程使得繁冗的代碼易讀易于修改。與.all方法比較只不過會增加些代碼量。注意SPRC097文件中的例程文件關掉了編譯優(yōu)化器,如果需要可以重新設定編譯環(huán)境,打開編譯優(yōu)化器。
每個例程都有非常簡單的結(jié)構(gòu)。其中包括獨立的原代碼、共享原代碼、頭文件和連接命令文件。Common(shared)SourceCodeUsedbymorethenoneexample.Containgenericfunctionsforsettingupperipherlstoadefinedstateorfunctionsthatmaybeusefultore-useindifferentapplicationsDSP281x_GlobalVanableDefscThissourcefileisrequiredtousetheDSP281xperipheralheaderfiles.臼總EMample_281xCpuTinief.p|t(Debug)Common(shared)SourceCodeUsedbymorethenoneexample.Containgenericfunctionsforsettingupperipherlstoadefinedstateorfunctionsthatmaybeusefultore-useindifferentapplicationsDSP281x_GlobalVanableDefscThissourcefileisrequiredtousetheDSP281xperipheralheaderfiles.LJDSP刷OSConfigLJGeneratedFilesffiロ(ncludeLJLbranes日ヨSource■DSP281x_CodeStartBi項DSP281xlcpuTimer$ct]DSP281x_DefauMsrct]DSP281x.Glob^/anableDefsc圖DSP281x_PieCtrtc士]DSP281x_PieVectc< 二^^"*SharedSourceCode7]DSP281x.SysCbtc< 1因Example_281xCpuTmetc? ExampleSpecificSourceCodeJDSP281x_He?ders_nonBI0Scmd名F2812_EzDSP_RAMJnkcmd^^ DSP281x_Headers_nonBIOScmdLinkerfilerequiredbytheperipheralspecificheaderfiles.Memoryblockspecificlinkercommandfile包含文件所有的例程#include以下2個頭文件。*DSP281x_exampleo\cpu_tiiier\Exaniple_281xCpuTinier.c#include"DSP28lx_Device.h" //DSP281XHeaderfileIncludeFile#include"DSP28lx_Exampleo.h" //DSP281XExamplesIncludeFileDSP281x_Device.h這個文件位于DSP281x_headers\include口錄下。它需要使用DSP281X的外設頭文件。這個文件包含所需的外設頭文件和器件的宏與類型定義。DSP281x_Examples.h此文件定義了例程所需的參數(shù)。它不需要使用DSP281X的頭文件,但是某些通用源代碼要使用。這個文件在DSP281x_common\include目錄下。源代碼每個例程由相對獨立的原代碼組成,這個代碼可以是通用的,也可以是共享的。DSP281x_GlobalVariableDefs.c使用DSP281X外設頭文件的任何一個工程都必須包含這個源文件。在這個文件中,聲明了外設寄存器的結(jié)構(gòu)變量和數(shù)據(jù)段的分配。這個文件位于DSP281x_headers\source目錄下。詳細例程代碼對某個具體的示例,這個文件是是特殊的,它的文件名有前綴Example_281xoExample_281xCpuTimer.c就是示例CPUTimer的具體文件,其它的例子中不使用這個文件。此文件位于DSP281x_examples\<example>目錄下通用源代碼剩下的源代碼文件在示例程序中是共享的。這些文件包含外設通用函數(shù)或可利用的實用程序。共享源文件在DSP2812x_shared\source目錄下。用戶可以在原有工程文件或新的工程文件中選擇、合并ー些或全部共享源文件。連接命令文件每ー個示例都使用兩個連接命令文件。這些文件詳細的說明了代碼和程序段的存儲位置。ー個連接文件用來將編譯產(chǎn)生的段分配到片上存儲區(qū),另ー個用來分配使用DSP281X外設頭文件編程所需的外設寄存器結(jié)構(gòu)體的數(shù)據(jù)段。存儲區(qū)連接分配:連接文件如表4所示,它用來分配片上存儲段。這些連接文件在DSP281x_common\cmd目錄下。每ー個實例將選擇以下文件中的ー個,具體選擇那ー個由示例中的存儲器決定。表4 存儲連接命令文件存儲連接命令文件示例目錄描述F2812_EzDSP_RAM_ink.cmdDSP281x_common\cmdEZdsp存儲圖只分配了SARAM的位置,無Flash,OTP或CSM密碼保護位置F2810.cmdDSP281x_common\cmdF2810存儲連接命令文件,包含所有的Flash,OTP和CSM密碼保護存儲位置F2812.cmdDSP281x_common\cmdF2812存儲連接命令文件,包含所有的Flash,OTP和CSM密碼保護存儲位置F2812_Xintfroot.cmdDSP281x_common\cmd來自F812XINTFzone7的bootDSP頭文件結(jié)構(gòu)數(shù)據(jù)段分配:任何ー個使用DSP281X頭文件外設結(jié)構(gòu)的工程必須包含ー個連接命令文件,這個連接命令文件將外設寄存器結(jié)構(gòu)數(shù)據(jù)段分配到正確的存儲位置。在v.058的頭文件中,位置分配是包含在存儲連接文件中的。為了容許將頭文件從源代碼中分離出來,分配文件被分成一個單獨的文件,如表5所示。表5DSP281x外設頭連接命令文件DSP28IX外設頭連接命令文件目錄描述DSP281x_Headers_BIOS.cmdDSP281x_Headers\cmdLink.cmd分酉己BIOSエ程中的頭文件變量。這個文件必須包含在任意ー個使用頭文件的BIOS的工程中,詳見4.2DSP281x_Headers_nonBIOS.cmdDSP281x_Headers\cmdLink.cmd分酉已BIOSエ程中的頭文件變量。這個文件必須包含在任意ー個使用頭文件的nonBIOS的工程中,詳見4.2
在配置281x器件時,所有的示例程序都和以下推薦的流程相似。表1反應了大致的流程:BootROMorBootfromXINTFZone7Usedtore-directcodeexecutionfromthebootentrypointtotheCInitroutine.CodecanbeconfiguredtodisabletheWatchDogiftheWDistimingoutbeforemain()isreached.AssignedtotheBEGINsectionbythelinker.Locatedat0x3F8OOOforBoottoHOLocatedat0x3F7FF6forBoottoFlashCInitRoutine.TheCompiler'sboot.asmwhichis申 /automaticallyincludedwiththeruntimelibrary.c"init 口アThiswillsetOBJMODEto28x.InitPLL,TurnonPeripheralClocksandsettheclockpre-scalersDisabletheWatchDogConfigureGPIOPinstotheirperipheralfunctionorasaninputoroutputasrequiredbytheexample.InitalizetheentirePIEVectorTablewithpointers,todefaultInterruptServiceRoutines(ISRs)foundinDSP281x_Defaultlsr.c.ItisusefulfordebugpurposestohavetheentiretableinitalizedeveniftheISRisnotgoingtobeused.\RemapPIEvectorsusedbytheexampletoISR
functionsfoundwithintheexampleprogram.Initalizetheperipheralsasrequiredbytheexample.ゝEnabletherequiredPIEandCPUinterrupts.Anyadditionalcoderequiredfortheexample.Figure1.FlowforExampleProgramsDSP281xC/C++頭文件和外設例程程序包所包含的例程表6包含的示例示例描述adc_seqmode_testADCSeq方式檢測.通道AO連續(xù)轉(zhuǎn)換,記錄在存儲器中adc_seq_ovd_tests使用排序ADC檢測,超過芯片的C版本相應的特性。adc_soc使用ADCINA3和ADCINA2兩通道做ADC轉(zhuǎn)換。中斷使能,使用SEQ1,EVA配置產(chǎn)生一個周期的ADCSOCocpu_timer配置cputimerO,在每次ISR中斷服務程序里工作累加計數(shù)一次。ecan_back2backeCAN自檢測模式例程。在高速的時候,用eCAN連續(xù)的傳送數(shù)據(jù)ev_pwm事件管理器PWM示例。本程序使用EV定時器產(chǎn)生PWM波形。可以使用示波器來觀測這個波形。ev_timer_period事件管理器定時器示例。本程序使用EVA和EVB定時器,在ー個周期溢出的時候,觸發(fā)中斷。每次中斷服務程序中累加計數(shù)。flash將EV定時器例程從SARAM移到Flash。其中包含將程序從SARAM拷貝到Flash的相關步驟。為了更快的執(zhí)行,也將部分中斷服務程序從Flash復制到SARAMgpio_loopback通用10口回送檢測。本程序中,將8位的GPIO口配置為輸出,8位ロ配置為輸入。配置為輸出的管腳和輸出的管腳形成ー個閉環(huán)。輸出數(shù)據(jù)從輸入管腳中讀回。gpio_toggle使用DATA,SET/CLEAR和TOGGLE寄存器等不同的方法切換所有的10管腳。可以使用示波器觀測這些管腳mcbspjoopback配置McBSP做為回送檢測。使用查詢來代替中斷mcbsp_loopback_interrupts配置McBSP做為回送檢測。使用中斷和先進先出寄存器。run_from_xintf本示例說明使用F2812eZdsp開發(fā)板如何從XINTFzone7導入和配置XINTF存儲器接口sci_autobaud外部連接SCI-A和SCLB,在兩個外設之間傳送數(shù)據(jù)。使用SCI的自動波特特性。在不同的波特率下做重復測試sci_loopbackSCI示例代碼,使用SCI模塊的回送測試模式傳送數(shù)據(jù)。本程序使用位查詢,而不是中斷。scijoopback_interruptsSCI示例代碼,使用內(nèi)部回送測試模式,通過SCI-A傳送數(shù)據(jù)。同時使用中斷方法和先進先出寄存器。spi_loopbackSPI示例,使用外部冋送檢測模式傳送數(shù)據(jù)spi_loopback_interruptsSPI示例,使用外部回送檢測模式傳送數(shù)據(jù)。同時使用中斷方法和先進先出寄存器。sw_prioritized_interrupts在大多數(shù)應用中,可以使用標準中斷硬件優(yōu)先級。本示例說明了如果有需要,可以使用ー種中斷軟件優(yōu)先級的方法,watchdog說明喂狗和間接喂狗觸發(fā)中斷從Flash執(zhí)行的例程大部分DSP281X示例屬于“H0弓|導”模式,都是從SARAM開始執(zhí)行的。下面的示例(DSP281x_example\Flash)在"flash弓|導"模式下,程序?qū)腇lash開始執(zhí)行。這個示例是事件管理定時器的例子,通過以下的改變使它從Flash開始執(zhí)行。改變連接命令文件連接flash從工程文件夾中將F2812_281x_EzDSP_RAMJnk.cmd移去,添加F2812.cmd或F2810.cmd。F2812.cmd和F2810.cmd在DSP281x_common\cmd目錄下〇.添?ロDSP281x_common\source\DSP281x_CSMPasswords.asrr^!j工程中。這個文件含有密碼,此密碼將被編程,放在CSM密碼位置。建議在開發(fā)階段將此密碼設為OxFFFF,這樣器件可以很容易打開。詳細的信息可以參考TMS320F28xSystemcontrol和InterruptsReferenceGuide(SPRU078)..修改代碼,拷貝那些從Flash的導入地址到它們在SARAM中的運行地址過程中必須在SARAM中運行的函數(shù)。特別的,flash等待狀態(tài)初始化程序必須在SARAM外執(zhí)行。在DSP281X的例程中,那些從SARAM執(zhí)行的函數(shù),通過下面所示的編譯CODE_SECTION#pragma聲明,已經(jīng)被分配在ramfuns區(qū)段中。*DSP281Xcommon\source\DSP281x_SysCtrl.c*********7*********************7************************************/??pragmaCODE_SECTION(InitFlash,"ramfuncs");然后,寄存器連接命令文件(如下所示)在ramfuns段中分配flash導入地址和SARAM的運行地址。/********************************************************************D£P28lx_common\1nclude\F2812.cmd********************************************************************/SECTIONS(ramfuncs:LOAD=FLASMD,RUN=RAMLO,LOAD_START(_RamfuncsLoadStart),LOAD2END(_RamfuncsLoadEnd),RUNSTART7_RamfuncsRunStart),PAGE=0)象上面的詳細說明一樣,連接器將特殊符號分配到固定的地址,如下:AddressSymbolLoadstartRamfuncsLoadStartLoadendRamfuncsLoadEndRunstartRamfuncsRunStart使用包含示例MemCopy程序或c庫的標準mencopy。功能,這些符號能被用來從Flash到SARM拷貝函數(shù).執(zhí)行從flash到SARAM的拷貝功能,需包含示例MemCopy函數(shù):a,添カ口DSP281x_common\source\DSP281x_MemCopy至リ工程項目中b,添加如下的函數(shù)原型到示例源文件中。在DSP28lx_Examples.h已經(jīng)包含了。/********************************************************************DSP281x_conmon\lnclude\DSP281x_Exainples.h哀*******************************************************************/MemCopy(&RamfuncsLoadStart,iRamfuncsLoadEnd,iRamfuncsRunStart);c,添加以下的變量聲明到源代碼中,使編譯器知道這些代碼已經(jīng)存在。連接命令文件為每ー個變量分配地址,如下所示,對DSP281X例程,這些已經(jīng)在DSP281x_examples.h中完成。*DSP281Xcommon\lnclude\D£P281x_Examples.h********************************************************************/externUintl6RamfuncsLoadStart;externUintl6RamfuncsLoadEnd;externUlntl6RamfuncsRunStart;d.對每ー個需要從flash拷貝到SARAM的區(qū),修改代碼調(diào)用MemCopy函數(shù)即可。/********************************************************************DSP281x_examples\Flashsourcefile*★★★*?****★*★*****?★★★*★★★★★?***★★★★**?*★***???*★*?***★★*?***?*/MemCopy(&RamfuncsLoadStart,iRamfuncsLoadEnd,iRamfuncsRunStart);.修改代碼,調(diào)用flash初始化程序:這個功能將設置flash的等待狀態(tài),使能Flash流水線模式/*********************************************************************DSP281Xperipheralexample.cfile********************************************************************/InitFlash();.“Flash引導”模式所需的跳接。引導模式的需要的跳接方式如下:表7281x導入模式設立GPI0F4GPI0F12GPI0F3GPI0F2Mode1XXXBoottoflash0x3F7FF601XCallSPIbootloader0011CallSCIbootloader0010BoottoHOSARAM0x3F800000Q1BoottoOTP0x3D78000000Callparallelbootloader汪忌:x=任意對那些使用F2812eZdsp開發(fā)板的用戶,可以參考eZdsp'suser'sguide來選擇導入模式的相應的跳線接法。如果想獲得更詳細的信息,可以參考“28lxbootmodesrefertotheTMS320F28xBootROMReferenceGuide(SPRU095)”.燒寫編譯后的程序可以使用Specturmdigital's站點的SDFlash工具。.在ccs中調(diào)試、下載工程,只選擇File->LoadSymbols.在調(diào)試的工作環(huán)境下,當調(diào)試者不能或不需要下載目標代碼時,比如代碼在ROM或flash中是,只下載符號信息是十分有用的.這中工作方式從指定的文件中下載符號信息.4逐步使用頭文件和范例代碼按下面步驟將外圍頭文件和范例代碼加入到自己的工程中。準備在開始將頭文件和范例代碼加到自己工程文件前,建議按以下幾個步驟做好準備:.按步裝載ー個范例工程按步裝載ー個范例工程,以便熟悉頭文件和范例代碼。這ー點在第3章節(jié)已有描述。.為將要使用的源文件拷貝ー個副本—DSP281x_headers:合并頭文件到新工程文件所需的代碼。-DSP281x_common:用在范例工程文件的ー些共享源代碼一DSP281x_examples:基于頭文件和共享代碼的范例工程文件包含DSP281X外設頭文件將DSP281X頭文件加入到工程中后,就可以在代碼中采用位域結(jié)構(gòu)的方法對DSP的外設
進行訪問。在新的或原有的工程文件中添加頭文件需執(zhí)行以下步驟:3.將“DSP281x_DEVICE.h”這個文件加入到你的源文件中這個包含文件將依次包含所有的外設特定的頭文件,還有一些采用位域結(jié)構(gòu)的方法對DSP的外圍設備中某些位的定義。*Userrasourcefile****■*******★★★★★*****?**********■**********■************■************?*/?includeMDSP281x_Device.h*.編輯DSP281x_Device.h文件和選擇你正在創(chuàng)建的對象。在下面這個范例中,文件配置用來對F2812設備進行選擇:?define TARGETTARGET0TARGET0?define DSP28_F2810.把DSP281x_GlobalVariableDefs?c源文件加到工程中此文件在DSP281x_headers\source、目錄下,該文件包含:ー訪問外設寄存器的變量的聲明ー數(shù)據(jù)段#pragma的分配,連接器用它將變量分配到存儲器中合適的位置.把合適的DSP281X的連接命令文件加到工程中如2.2節(jié)描述,當使用DSP281X頭文件方法,外設寄存器的數(shù)據(jù)段是通過連接器將變量分配到存儲器中合適的位置。為了完成你的工程中的對存儲器空間的分配,下面其中的ー個連接文件必須包含在你的工程中,它們位于DSP281x_headers\cmd\目錄ド一對于非DSP/BIOS工程: DSP281x_nonBI0S.cmdー對于DSP/BIOS工程: DSP281x_Headers_BI0S.cmd添加連接文件到工程文件的方法取決于于所使用的CodeComposerStudio的版本CodeComposerStudioV2.2版本及其以上版本:對于CCS2.2,它允許工程文件中包含多個連接命令文件??蓪⒑线m的頭連接命令文件(BIOS和非BIOS)直接添加工程中白:jProjectsE冷Example_281xWatchdog.pjt(Debug)ロDependentProjectsロDSP/BIOSConfig;…㈡GeneratedFiles國口Include?コLibrariesELJSource國DSP281x_Headers_nonBIOS.cmd園F2812_EzDSP_RAMJnk.cmd
CodeComposerStudioV2.2以上版本對于低于CCS2.2的版本,每個工程只能包含一個主要的連接命令文件。然而,如果需要,這個文件在需要時可稱為additional.cmd。對DSP281X頭文件,要包含所需的存儲器分配,可按照下面兩個步驟:1)更新工程的主要連接命令文件,用ー1項調(diào)用已提供的DSP281X外設結(jié)構(gòu)連接命令文件*User*slinker.cmdfile???????????????????*???????/*Usethisincludeflieonlyfornon-BIOSapplications*/-1DSP281x_Headers_nonBIOS.cmd/*UsethisincludefileonlyforBIOSapplications*//*-1DSP281x_Headers_BIOS.cmd*/2)添加DSP281X外圍連接器命令文件(.cmd)的目錄路徑到當前的工程中a,打開菜單:Project->BuiIdOptionsb.選擇Linker項,再選擇Basic項c.在LibrarySearchPath里將目錄路徑DSP281x_headers\cmd添加到你的系統(tǒng)中。7.把DSP281X頭文件目錄路徑添加到當前的工程中確定頭文件所在的目錄的位置:a,打開菜單:Project->BuiIdOptionsb.選擇Compiler項c.選擇pre-processord,在IncludeSearchPath里將目錄路徑DSP281x_headers\inc1ude添加到你的系統(tǒng)中GeneralConpilcr|Linker|LinkOrder|GeneralConpilcr|Linker|LinkOrder|?g-q-pd-as-frHC\Hdcs\c28\DSP281k\v100\DSF281Lexam兩3仙曲chdcgゝDmbW?f$”CAtidcs\c28\DSP281x\v1OO^DSP281x_e<amples'watchdog\DebuゴColeg5yBaseAdvancedFeedbackFile?AssembレIParserDiagnosticsPreprocessorColeg5yBaseAdvancedFeedbackFile?AssembレIParserDiagnosticsPreprocessorIncludeSearchPath(?i):[jDefineSymbols(d):UrdcfincSymboh(u):Pteprocessng.|..VKDSP291x_header^Vinclude]|_DEBUG;LARGE_MODELfContinuewithCompiolicn+卬0)8,其他附加的build項卜面是ー些附加的compiler和!inker項,這些選項可通過Project-〉BuiIdOptions菜單進行設置。-Compiler項-ml高級選擇和檢測用于大存儲器模式。在28x設備4M存儲器空間可對數(shù)據(jù)段任何位置進行設定。
-pdr診斷選擇和檢測產(chǎn)生非嚴重性警號。編譯器會產(chǎn)生一個警告,表明代碼雖然是有效的但是可疑。在許情況下,這些警告是使能一pdr項產(chǎn)生的,它提醒你代碼可能會在以后引起問題?!狶inker項:-w高級選項和檢測對輸出段的警告。這個選項將提醒你在代碼中存在未分配的存儲器空間。在缺省值情況,連接器會嘗試對未分配的代碼和數(shù)據(jù)段提供一個有效的存儲器地址,而不會產(chǎn)生警號。但是,當這個段被分配到ー個意外的地址時,可能會引起問題。4.3包含的通用范例代碼把通用范例代碼包含在你的項目,這樣可以大大影響已經(jīng)為某型號芯片寫好的代碼。合并共享源代碼到ー個新的或已存在的工程文件中,可以按以下幾個步驟:1.Include”DSP281x_Examples.h"到當前的源文件中。GeneralCompiler|Linker|LinkOrder|這個包含文件將包含范例代碼中的ー些通用的GeneralCompiler|Linker|LinkOrder|?g-q-pdr-as -I-fr"CAtidcs\c28\DSP281x\v100\DSP281x_examples\walchdog\Debug"コ?fsHCAtidcs\c28\DSP281x\v100\DSP281x_examples\watchdog\[)ebug" .Category:Preprocessor[BasicAdvancedFeedbackTilesAssemblyIParserIncludeSearchPath(-i):[DefineSymbols(?d):PreprocessorUndefineSymbols(-u):Preprocessing:Diagnostics|de;..ADSP281xcommonゝincludeCategory:Preprocessor[BasicAdvancedFeedbackTilesAssemblyIParserIncludeSearchPath(-i):[DefineSymbols(?d):PreprocessorUndefineSymbols(-u):Preprocessing:Diagnostics|de;..ADSP281xcommonゝinclude|_DEBUG;LARGE_MODEL|None「ContinuewithCompilation(-ppa)3,添加連接命令文件到當前工程中在DSP281x_common\cmd目錄下提供了下面幾個存儲器連接文件(.cmd),其中大多數(shù)范例使用了F2812_ExDSP_RAM_Ink.cmd文件。表8.包含主要的連接命令文件主要連接命令文件例子描述F2812_EzDSP_RAM_lnk.cmd主要eZdsp范例連接文件。僅用在SARAM空間,它不受代碼安全模式的保護。這個存儲器映射文件用于F2812EzDSP的所有范例,不使用Flash或OTP存儲器地址F2812_XintfBoot.cmd用于從XINTFZone7啟動的連接命令文件F2810.cmd上要F2810連接命令文件,包含所有的Flash和OTP存儲器F2812.cmd主要F2812連接命令文件,包含所有的Flash,OTP和XINTF存儲器4.設定CPU頻率在DSP281x_common\include\DSP281x_Examples.h文件中指定了合適CPU頻率。在這個文件中包含一些范例。?DSP281x_common\include\DSP281x_Examples.h#defineCPU_RATE//#deflneCPU_RATE//?defineCPU_RATE6.667L //#defineCPU_RATE//#deflneCPU_RATE//?defineCPU_RATE7.143L //fora140MHzCPUclockspeed(SYSCLKOUT)8.333L //fora120MHzCPUclockspeed(SYSCLKOUT)5DSP281xC/C++頭文件和外設例程程序包所包含的內(nèi)容這部分將列出此版本中包含的所有文件。頭文件-DSP281x_headerDSP281x_header在<base>\DSP281x_header\目錄下DSP281X頭文件-主文件以下這些文件必須添加到任何ー個使用DSP281X頭文件的工程中。參考4.2節(jié)的相關信息將頭文件合并到ー個新的或原有工程文件中。表11DSP281X頭文件-主文件文件位置描述DSP281x_Device.hDSP281x_Headers\inciude主包含文件。在任何ー個.C原文件中都包含此文件。這個文件依次包含下面列出的所有特定外設.h文件。
另外,這個文件還包含類型(typedef)聲明和通用的掩碼值。參考4.2節(jié)。DSP28Ix.GlobalVariableDefs.cDSP281x_Headers\source定義了一些訪問外設結(jié)構(gòu)的變量和數(shù)據(jù)區(qū)#pragma分配聲明。任何ー個使用頭文件的工程都必須包含這個文件。參考4.2〇DSP28lx_Headers_BIOS.cmdDSP281x_Headers\cmd連接.cmd文件,在使用BIOS的工程文件中分配頭文件變量。任何ー個使用頭文件的BIOS工程都必須包含這個文件。參考4.2。DSP281x_Headers_nonBIOS.cmdDSP281x_Headers\cmd連接.cmd文件,在non-BIOS工程中分配頭文件變量.任何ー個使用頭文件的non-BIOS工程都必須包含這個文件。參考4.2〇DSP281X頭文件一外設位-域和寄存器結(jié)構(gòu)定義文件以下的文件定義281x器件每個外設位-域和寄存器結(jié)構(gòu)。通過包含DSP281x_Device.h,這些文件自動的包含在工程文件中。參考4.2節(jié)的相關信息將頭文件合并到ー個新的或原有的工程文件中。表12DSP281X頭文件位-域和寄存器結(jié)構(gòu)定義文件文件位置描述DSP281x_Adc.hDSP281x_Headers\includeADC寄存器結(jié)構(gòu)和位ー域定義DSP281x_CpuTimer.hDSP281x_Headers\includeCpu-Timer寄存器結(jié)構(gòu)和位-
域定義DSP28lx_DevEmu.hDSP28lx_Headers\include仿真寄存器定義DSP281x_ECan.hDSP281x_Headers\includeeCAN寄存器結(jié)構(gòu)和位-域定義DSP281x_Ev.hDSP281x_Headers\includeEV寄存器結(jié)構(gòu)和位ー域定義DSP281x_Gpio.hDSP281x_Headers\includeGPIO寄存器結(jié)構(gòu)和位-域定義DSP281x_Mcbsp.hDSP281x_Headers\includeMcBSP寄存器結(jié)構(gòu)和位-域定義DSP281x_PieCtrl.hDSP28lx_Headers\includePIE寄存器結(jié)構(gòu)和位ー域定義DSP281x_PieVect.hDSP281x_Headers\include完整PIE向量表定義DSP281x_Sci.hDSP281x_Headers\includeSCI寄存器結(jié)構(gòu)和位ー域定義DSP281x_Spi.hDSP281x_Headers\includeSPI寄存器結(jié)構(gòu)和位ー域定義DSP281x_SysCtrl.hDSP281x_Headers\include系統(tǒng)寄存器結(jié)構(gòu),包含Watchdog,PLL,CMS,Flash/OTP,Clock寄存器DSP281x_Xintf.hDSP281x_Headers\include擴展存儲器接口XINTF寄存器結(jié)構(gòu)和位ー域定義DSP281x_Xintrupt.hDSP281x_Headers\include外部中斷寄存器結(jié)構(gòu)和位ー域定義5.1.3CodeComposer.gel文件使用帶DSP281X頭文件的外設寄存器結(jié)構(gòu),包含以下的CodeComposerStudio.gel文件表13包含的GEL文件文件位置描述DSP281x_Peripheral.gelDSP281x_Headers\gel提供ー個GEL下拉菜單,將DSP281X數(shù)據(jù)結(jié)構(gòu)下載到觀察窗口。將GEL_LoadGel(lt<base>DSP281x_Peripheral.h)函數(shù)添加到底油的F2812.gel中,CCS將可以自動的下載這個文件DSP28Ix.GpioQuickRef.gelDSP281x_Headers\gel為DSP281X器件上的GPIO口提供ー個快速的參考。能將MUX信息輸出到調(diào)試窗ロ
5.1.4變量名和數(shù)據(jù)段本節(jié)列出了DSP281x_headers\source\DSP281x_GlobalVariableDefs.c文件中使用的變量名和分配的數(shù)據(jù)段。PeripheralStartingAddressStructureVariableNameADC0x007100AdcRegsCodeSecurityModuleOxOOOAEOCsmRegsCodeSecurityModulePasswordLocationsCsmPwlCPUTimer0OxOOOCOOCpuTimerORegsDeviceandEmulationRegisters0x000880DevEmuRegseCAN0x006000ECanaRegseCANMailBoxes0x006100ECanaMboxeseCANLocalAcceptanceMasks0x006040ECanaLAMRegseCANMessageObjectTim?Stamps0x006080ECanaMOTSRegseCANMessageObjectTime-Out0x0060C0ECanaMOTORegsEventManagerA(EV-A)0x007400EvaRegsEventManagerB(EV-B)0x007500EvbRegsFlash&OTPConfigurationRegisters0x000A80FlashRegsGeneralPurposeI/ODataRegisters0x0070E0GpioDataRegsGeneralPurposeMUXRegistersOxO070C0GpioMuxRegsMcBSPRegisters0x007800McbspaRegsPIEControlOxOOOCEOPieCtrIRegs5.2通用例程代碼-DSP281x_common外設中斷擴展(PIE)塊supportDSP281x_PieCtrl.h除了說明寄存器的定義外,還為PIE塊提供基本的ISR結(jié)構(gòu)。這些文件是:表14基本PIE塊特殊支持文件文件位置描述DSP28lx_Defaultlsr.cDSP281x_common\source完整PIE向量表的中斷服務外殼程序(ISRs)??梢赃x擇填充一個函數(shù)或?qū)⒛愕腎SR重新映射到PIE向量表。注意:這個文件對DSP'BIOS工程文件沒有用。DSP281x_Defaultlsr.hDSP281x_common\includeDSP281x_Defaultlsr.c中的ISR函數(shù)原型聲明。注意:這
個文件對DSP'BIOS工程文件沒有用DSP281x_PieVect.cDSP281x_common\source此處是DSP281x_Defaultlsr.c中ISR函數(shù)的ー個實例,創(chuàng)建?個帶指針的PIE向量表結(jié)構(gòu)初始化。為了初始化到默認的ISR位置,可以拷貝這個實例到PIE向量表。另外,以下包含的文件是為了中斷的軟件優(yōu)先級。這些文件被用來代替上面那些需要使用的額外軟件中斷優(yōu)先級文件。更多的信息可以參考示例和文件DSP281x_example\sw_prioritized_interrupts表15中斷PIE軟件優(yōu)先級特別支持文件文件位置描述DSP281x_SWPrioritizedDefaultlsr.cDSP281x_common\source默認的中斷服務外殼程序。你可以選擇填充一個函數(shù)或?qū)⒛愕腎SR重新映射到PIE向量表。注意:這個文件對DSP'BIOS工程沒有用。DSP281x_SWPrioritizedLevel.hDSP281x_common\includeDSP28lx_Defaultlsr.c中的ISR函數(shù)原型聲明。注意:這個文件對DSP'BIOS工程沒有用。DSP281x_SWPriorit
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工程項目各階段投資管理的主要內(nèi)容
- pe塑料管施工方案
- 2025年奶制品行業(yè)資訊:美國對加拿大奶制品征收關稅引發(fā)市場波動
- 2024年三季度報湖南地區(qū)A股總資產(chǎn)周轉(zhuǎn)天數(shù)排名前十大上市公司
- 慈溪防滑地坪施工方案
- 河道清理工程施工方案
- 磚砌石墩施工方案
- 油罐防腐保溫施工方案
- 小橋涵施工方案
- 低壓管道施工方案
- 2023年全國醫(yī)學考博英語試題
- 專業(yè)技術人員職務聘任書
- GB/T 25429-2019石油天然氣鉆采設備鉆具止回閥
- 新版基本公共衛(wèi)生服務健康教育培訓課件
- 六年級上冊音樂課件 《校園小戲迷》人音版
- 2023版北京協(xié)和醫(yī)院重癥醫(yī)學科診療常規(guī)
- 千里江山圖解析課件
- 《現(xiàn)代漢語常用字表》3500個漢字
- 道路通行能力計算題
- 經(jīng)濟學基礎完整版ppt-全體教學教程課件最新
- JJF(湘) 09-2018 純水-超純水系統(tǒng)監(jiān)測儀表(電導率)計量校準規(guī)范-(高清現(xiàn)行)
評論
0/150
提交評論