文稿分析案例_第1頁(yè)
文稿分析案例_第2頁(yè)
文稿分析案例_第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

CC2538cbcc2538cb套件如上圖;地址套件支持TinyOS,Contiki3.0等主流的 n系統(tǒng) QQ n/Zigbee序模塊說(shuō)備1USBUART/供2復(fù)345Mcu512kFlash/32k6預(yù)留,DIY使用(8CC25387D3(PC0~綠 D2(PC1~黃 D1(PC2~紅8USB轉(zhuǎn)串口占用CC2538PA0/PA1注CC2538的IO口可以軟件編程指定功能,如UART、SPI、I2C、SSI、ADC、輸入、輸出等,靈活度高,故用戶(hù)可以使用預(yù)留的IO口完成DIY傳感器的接入或其它的總線通信;②,cc2538cb節(jié)點(diǎn)采用PL2303USB轉(zhuǎn)串而不是直接使用2538的USB功能;在于2303的驅(qū)動(dòng)對(duì)于虛擬機(jī)Linux/Ubuntu,Android等是免驅(qū)的,能夠更加簡(jiǎn)單快速的使用Linux/Android,用戶(hù)可以O(shè)TG線完成cc2538cb和Android等的接入測(cè)試;我們?cè)趯W(xué)習(xí)zigbee或6lon的時(shí)候兩個(gè)主流系統(tǒng)的選擇:TinyOS和Contiki;TinyOS初學(xué)者學(xué)習(xí)使用優(yōu)點(diǎn): 2, 事件驅(qū)動(dòng)機(jī)制,類(lèi)似單片機(jī)的設(shè)計(jì):主循環(huán)執(zhí)行代碼,硬件中斷打斷,事件類(lèi)似單片機(jī)的硬件中斷; nesC語(yǔ)言使代碼閱讀和分析更加快捷 的技術(shù)沉淀較好,從官網(wǎng)到源碼模塊部分幫助文檔齊全正如編程手冊(cè)介紹nesC是C語(yǔ)言的方言,支持C語(yǔ)言的所有特性,并在此基礎(chǔ)上采用了JAVA的一些程序設(shè)計(jì)思想;nesC有幾大的概念即組件,類(lèi)比C語(yǔ)言是完成一個(gè)功能模塊的C文件的集接口,組件連接文件,類(lèi)比C語(yǔ)言的.h文件,進(jìn)行函數(shù)方法,返回事件的nesC編譯器編譯流再此讓我們來(lái)了解一下nesC編譯器生成最終單片機(jī)執(zhí)行二進(jìn)制文件流程nesCnesC語(yǔ)言支持C語(yǔ)言所以特性,故相關(guān)的c文件和h文件不做介紹,現(xiàn)在讓我們編程必須用到的文件1,3,Module4,前面介紹了nesC的組件(components)回憶一下C語(yǔ)言的代碼編寫(xiě),我們需要編寫(xiě)c/h/makefile文件,多個(gè)c文件之間的函數(shù)和全局變量調(diào)用我們是通過(guò)包含.h文件實(shí)現(xiàn);對(duì)于現(xiàn),組件調(diào)用層次遵循自頂而下,需要完成一個(gè)功能我們?cè)赾語(yǔ)言一般編寫(xiě)main.c文件來(lái)實(shí)nesC中則編寫(xiě)一個(gè)組件,同時(shí)編寫(xiě)Makefile來(lái)通知nesC編譯器編譯該工程;Module,一定要遵循文件名稱(chēng)和代碼中的configuration/module一致;的編程,首先應(yīng)該先編寫(xiě)c文件,module好是如此: 其中的藍(lán)色字體部分為nesC關(guān)鍵字provides/uses關(guān)鍵字,components向外提供接口(interface)或者使用哪些接如blink例程:BlinkC.nc*1led點(diǎn)燈實(shí)*節(jié)點(diǎn)需求數(shù)*編譯命令make********************************************************************/#include"Timerh"moduleBlinkCusesinterfaceTimer<TMilli>asusesinterfaceTimer<TMilli>asusesinterfaceTimer<TMilli>asusesinterfaceusesinterface}taskvoid*啟動(dòng)eventvoid ) *Timer0定時(shí)時(shí)間到事eventvoid /**翻轉(zhuǎn)led0電平,對(duì)應(yīng)cc2538cb的綠燈 call*taskvoid /**翻轉(zhuǎn)led1電平,對(duì)應(yīng)cc2538cb的黃燈 call *Timer1定時(shí)時(shí)間到事eventvoid /****提交time1_Task任務(wù) post *Timer2定時(shí)時(shí)間到事eventvoid /**翻轉(zhuǎn)led2電平,對(duì)應(yīng)cc2538cb的紅燈 call} Leds nesC將C語(yǔ)言的函數(shù)稱(chēng)為command,調(diào)用command使用關(guān)鍵字call,使用call 修飾函數(shù)方法 (提供者)存在事件返回,那么消費(fèi)者必須在代碼module中實(shí)現(xiàn)事件部分代碼; 除去C語(yǔ)言switch語(yǔ)句功能在nesC中用來(lái)修飾event,表明該事件被忽略 用來(lái)修飾command/event,和mcu硬件操作相關(guān)使用 任務(wù)關(guān)鍵字,修飾一個(gè)函數(shù)為任 提交任務(wù)關(guān)鍵字,post分析例程現(xiàn)在我們完成了一個(gè)名為BlinkC的module(components)的代碼的編寫(xiě),類(lèi)比C語(yǔ)言我們完成了c文件的編寫(xiě),但是對(duì)于TinyOSnesC我們并沒(méi)有指定BlinkC用到的接口是誰(shuí)提供的,也就是我們寫(xiě)C語(yǔ)言時(shí)候的包含.h文件才能調(diào)用那些c文件提供的函數(shù)和變量,下面我們需要學(xué)習(xí)的文件是configuration,這個(gè)文件接下來(lái)將完成這些工作;文件代碼原型 name(形參 ……}其中的藍(lán)色字體部分為nesC關(guān)鍵字configuration/implementation為固定寫(xiě)法configuration的作用在于描述我們編寫(xiě)的組件對(duì)外提供哪些interface,對(duì)內(nèi)使用了那些componentsblink例程來(lái)分析,BlinkAppC.nc源 componentsMainC,BlinkC, componentsnewTimerMilliC()as componentsnewTimerMilliC()as componentsnewTimerMilliC()as BlinkC-> BlinkC.Timer0-> BlinkC.Timer1-> BlinkC.Timer2-> BlinkC.Leds-> }componentsMainC,BlinkC,LedsC這句代碼我們看到上一節(jié)講到的moduleBlinkCBlinkCMainC.Boot開(kāi)始描述連接(wire)BlinkC.Boot下面介紹連接符的使 =這三個(gè)符號(hào),消費(fèi)者->生產(chǎn)者等價(jià)于生產(chǎn)者<-消費(fèi)者,=interface之間的as,重命名關(guān)鍵字,等價(jià)于給components或interface重命下面大家可以自行閱讀 源碼和 那么我們說(shuō)現(xiàn)在寫(xiě)的是C語(yǔ)言中的h文件,實(shí)際上咱們只是寫(xiě)了一半,那么對(duì)于nesC我們需要編寫(xiě)interface來(lái)進(jìn)行函數(shù)(事件),如果咱們編寫(xiě)的組件向外提供了interface,interface文件的作用才是咱們?cè)赾語(yǔ)言h文件中函數(shù); 編程的在于組件和接口,接口文件代碼原型寫(xiě)interfaceinterface_name<形參 }前面提到了provides/uses是提供/使用接口,interface文件就是通知nesC編譯器接口的command/event的;如blink例程用到了MainC組件,可以去查看Main.nc文件,它提供了一個(gè)Boot接口;到此為止我們已經(jīng)學(xué)習(xí)了nesC的三種文件,也就完成了基本源碼的編寫(xiě),由于我們并沒(méi)有使用DE等工具來(lái)建立工程,那么我們對(duì)工程的管理就需要引入重要的文件Makefle注意此處的Makefile并不是咱們gcc編譯編寫(xiě)makeTinyOS的例程工程原則,指定編譯輸入的組includeCOMPONENT=?類(lèi)似咱們的工程名,實(shí)際使用時(shí)通知nesC編譯器最上層的組件是?如例程blink,COMPONENT=BlinkAppC;include$(MAKERULES)固定寫(xiě)法,我們清楚TinyOS支持多平臺(tái),MAKERULES是環(huán)境變量,可以使用echo$MAKERULESsupport/make中實(shí)際的makefile以及makerulesnesCwirebin/hex的生成; 編程最部分-參數(shù)化接口編nesC所帶來(lái)的編程的強(qiáng)大之處,大家前面的辛苦學(xué)算能夠享受nesC帶來(lái)的好處了;componentsconfigurationmodule,interface都是可以把他理解成一個(gè)數(shù)組元素,不要死板的理解成一個(gè)C文件,他們都是一個(gè)元素,當(dāng)然也可以實(shí)例化n個(gè);這就是參數(shù)化

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論