組網(wǎng)實驗4協(xié)議棧工作原理_第1頁
組網(wǎng)實驗4協(xié)議棧工作原理_第2頁
組網(wǎng)實驗4協(xié)議棧工作原理_第3頁
組網(wǎng)實驗4協(xié)議棧工作原理_第4頁
組網(wǎng)實驗4協(xié)議棧工作原理_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

不和他打交道。由于我們的學(xué)臺是基于TI公司的,所以講述的當(dāng)然也是TI的Z-內(nèi)容,將復(fù)雜部分掉。讓用戶通過API函數(shù)就可以輕易用ZigBee。這樣大家使用時器計時,令LED一秒改變一次狀態(tài)。好,現(xiàn)在進(jìn)一步,我們利用同一個定時器計時,令LED1一秒閃爍一次,LED2二秒閃爍一次。這樣就有2個任務(wù)了。再進(jìn)一步…有n個LED,就有n個任務(wù)執(zhí)行了。協(xié)議棧的最終工作原理也一樣。從它工作開棧文件夾TexasInstruments\Projects\zstack。里面包含了TI公司的例程和工具。其中的功能我們會在用的的實驗里講解。再打開Samples文件夾:\SampleApp\CC2530DB下工程文件SampleApp.eww。留意左邊的工程 時只需要關(guān)注Zmain文件夾和App文件夾。任何程序都在main函數(shù)開始運(yùn)行,Z-STACK也不例外。打開Zmain.C,找到intmain(void)函數(shù)。我們大概瀏覽一下main函數(shù)代碼:*@fn Firstfunctioncalledafter don'tintmain(void{//Turnoffosal_int_disableINTS_ALLInitializationforboardrelatedstuffsuchasLEDsHAL_BOARD_INIT();//初始化系統(tǒng)時鐘Makesuresupplyvoltageishighenoughtorun //InitializeboardInitBoard(OB_COLD //初始化I/O,LED、Timer//InitialzeHAL //InitializeNVosal_nv_init(NULL);//初始化 //Initializethe //初始化MAC//Determinetheextendedaddress //確定 64位地//InitializebasicNVitems #ifndefNONWK//SincetheAFisn'tatask,callit'sinitializationroutineafInit();Initializetheoperatingsystem ////Allowosal_int_enableINTS_ALL////Finalboard yinformationaboutthisdevice /*Dis ythedeviceinfoontheLCD*/#ifdefLCD_SUPPORTED#ifdef/*IfWDTisused,thisisagood cetoenableit.*/WatchDogEnable(WDTIMX);osal_start_system();//NoReturnfromhere執(zhí)行操作系統(tǒng),進(jìn)去后不會返回return0; //Shouldn'tgethere.}開始先執(zhí)行初始化工作。包括硬件、網(wǎng)絡(luò)層、任務(wù)等的初始化。然后執(zhí)行2、運(yùn)行操作系統(tǒng){uint8taskID=tasksEvents=(uint16*)osal_mem_alloc(sizeof(uint16) osal_memset(tasksEvents,0,(sizeof(uint16) //任務(wù)優(yōu)先級由高向低依次排列,高優(yōu)先級對應(yīng)taskID kInit(taskID++);//ma kInit(0),用戶不需考慮nwk_init(taskID++); Hal_Init(taskID++); //Hal_Init(2),用戶需考慮#ifdefined(MT_TASK)MT_TaskInit(taskID++); )#ifdefined(ZIGBEE_FRAGMENTATION)APSF_Init(taskID++);ZDApp_Init(taskID++); #ifdefined(ZIGBEE_FREQ_AGILITY)||defined(ZIGBEE_PANID_ }慮的用戶可以根據(jù)自己的硬件平臺或者其他設(shè)置,而寫著不需考慮的也是不能修改的。TI公司協(xié)議棧已完成的東西。這里先提前賣個關(guān)子SampleApp_Init(taskID);2osal_start_system();運(yùn)行操作系統(tǒng)。同樣用gotodefinition的方法進(jìn)入該函數(shù)。呵呵,結(jié)果發(fā)現(xiàn)很不理想。甚至很多函數(shù)形式?jīng)]見過??创a Thisfunctionisthemainloopfunctionofthetasksystem.willlookthroughalltaskeventsandcallthefunctionforthetaskwiththe Iftherearenoeventsalltasks),thisfunctionputstheprocessorinto執(zhí) 執(zhí) -@param@returnvoidosal_start_system(void){#if!defined(ZBIT)&&!defined(UBIT) //ForeverLoop{uint8idx= //Thisre cesMT_SerialPoll()andosal_check_timer().do{if(tasksEvents[idx])//Taskishighestprioritythatisready.{ }}while(++idx if(idx {uint16events; events=tasksEvents[idx]; eventstasksArr[idxidxevents通過指針調(diào)用任務(wù)處理函數(shù),關(guān)鍵 tasksEvents[idx]|=events;//Addbackunprocessedeventstothecurrent

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論