《無線傳感網(wǎng)組建技術(shù)》高職全套教學(xué)課件_第1頁
《無線傳感網(wǎng)組建技術(shù)》高職全套教學(xué)課件_第2頁
《無線傳感網(wǎng)組建技術(shù)》高職全套教學(xué)課件_第3頁
《無線傳感網(wǎng)組建技術(shù)》高職全套教學(xué)課件_第4頁
《無線傳感網(wǎng)組建技術(shù)》高職全套教學(xué)課件_第5頁
已閱讀5頁,還剩549頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

任務(wù)1 搭建無線傳感網(wǎng)的開發(fā)環(huán)境

任務(wù)1準(zhǔn)備開發(fā)工具任務(wù)2安裝工具軟件任務(wù)3建立傳感網(wǎng)開發(fā)環(huán)境任務(wù)4BasicRF遠(yuǎn)程控制LED燈任務(wù)5在BasicRF中用串口收發(fā)數(shù)據(jù)任務(wù)6用BasicRF遠(yuǎn)程采集聲音任務(wù)7用BasicRF遠(yuǎn)程采集氣體傳感數(shù)據(jù)任務(wù)8在ZStack中控制LED閃爍任務(wù)9在ZStack中用串口收發(fā)數(shù)據(jù)任務(wù)10在ZStack中用NV存儲器保存數(shù)據(jù)任務(wù)11用計算機(jī)控制遠(yuǎn)程節(jié)點(diǎn)上的燈任務(wù)12分組傳輸數(shù)據(jù)任務(wù)13顯示網(wǎng)絡(luò)節(jié)點(diǎn)的地址任務(wù)14用ZStack制作遠(yuǎn)程防盜監(jiān)測器任務(wù)15用ZStack制作遠(yuǎn)程光照信息采集器任務(wù)16用ZStack制作遠(yuǎn)程溫濕度采集器全套可編輯PPT課件任務(wù)要求

查閱相關(guān)資料,弄清楚開發(fā)無線傳感網(wǎng)所需要的軟硬件工具,了解各軟硬件工具的主要功能、結(jié)構(gòu)特點(diǎn)、選擇的原則和注意事項(xiàng),確定所需準(zhǔn)備的工具軟件、ZigBee開發(fā)板、仿真器和傳感器模塊,并填寫好開發(fā)工具準(zhǔn)備清單,然后在網(wǎng)上搜索并下載或采購這些工具軟件、ZigBee開發(fā)板、仿真器和傳感器模塊,為后續(xù)開發(fā)無線傳感網(wǎng)作好準(zhǔn)備。全套可編輯PPT課件1.準(zhǔn)備工具軟件

開發(fā)無線傳感網(wǎng)的工具軟件主要有IAR集成開發(fā)工具、BasicRF軟件包、ZStack-CC2530協(xié)議棧軟件包、SmartRFFlashProgrammer、串口調(diào)試助手、仿真器驅(qū)動程序、USB轉(zhuǎn)串口驅(qū)動程序等7個,如圖所示。全套可編輯PPT課件1.準(zhǔn)備工具軟件

在這些工具軟件中,IAR集成開發(fā)工具主要用于程序的編輯和調(diào)試,是開發(fā)無線傳感網(wǎng)時使用最頻繁的工具軟件。ZStack-CC2530協(xié)議棧軟件包是TI公司為方便用戶組建ZigBee網(wǎng)絡(luò)而編寫的組網(wǎng)庫函數(shù),主要用于組建ZigBee網(wǎng)絡(luò)。BasicRF軟件包包括TI公司編寫的swrc135b軟件包和國內(nèi)新大陸公司改編的CC2530_lib軟件包,這2個軟件包都用于組建點(diǎn)對點(diǎn)無線通信網(wǎng)絡(luò)。TI公司的swrc135b軟件包只提供了無線通信的API函數(shù),新大陸公司的CC2530_lib軟件包則對swrc135b軟件包重新分類,刪除了一些不必要的外設(shè)庫函數(shù),增加了適用于新大公司開發(fā)板的外設(shè)庫函數(shù)和定時器、串口等單片機(jī)功能部件的API函數(shù)。SmartRFFlashProgrammer軟件是程序燒錄軟件,其功能是將IAR產(chǎn)生的hex文件燒寫至CC2530單片機(jī)中。在上述這些軟件中,CC2530_lib軟件包可到新大陸公司網(wǎng)站上下載,或者找新大陸公司客服索取,新大陸公司的網(wǎng)址為/,其他軟件可在TI公司網(wǎng)站上下載,TI公司的網(wǎng)址為/。

2.準(zhǔn)備開發(fā)板和仿真器

開發(fā)板的功能是承載和運(yùn)行用戶所編寫的無線傳感網(wǎng)程序,缺少了開發(fā)板就無法進(jìn)行無線傳感網(wǎng)組建實(shí)踐。選擇開發(fā)板需要注意的問題主要有以下4點(diǎn):(1)開發(fā)板上的單片機(jī)為CC2530。CC2530單片機(jī)是TI公司生產(chǎn)的基于8051內(nèi)核的無線單片機(jī),它是ZigBee網(wǎng)絡(luò)專用的單片機(jī),TI公司開發(fā)的BasicRF資源包和ZStack資源包是基于CC2530單片機(jī)的軟件包,沒有CC2530單片機(jī),這些軟件包無法使用。(2)傳感器接口多,能兼容市面上多數(shù)傳感器模塊。組建傳感網(wǎng)需要接入許多傳感器,豐富的傳感器接口可方便初學(xué)者直接插接市面上常用的傳感器模塊,提高實(shí)踐效率,降低實(shí)踐成本和實(shí)踐的難度。(3)開發(fā)板上要有短路保護(hù)。初學(xué)者實(shí)踐時,難免會出現(xiàn)短路現(xiàn)象,開發(fā)板上帶有短路保護(hù)可以有效地避免因開發(fā)板瞬時短路而燒毀開發(fā)板和計算機(jī)。(4)單片機(jī)的引腳開放。學(xué)習(xí)無線傳感網(wǎng)組建技術(shù)除了要學(xué)習(xí)傳感器控制技術(shù)、無線組網(wǎng)技術(shù)外,還要學(xué)習(xí)CC2530單片機(jī)應(yīng)用技術(shù)。開發(fā)板上開放了CC2530單片機(jī)的引腳后,一方面可以方便讀者練習(xí)CC2530單片機(jī)的編程技術(shù),另一方面在進(jìn)行創(chuàng)新實(shí)踐時可方便擴(kuò)展電路。2.準(zhǔn)備開發(fā)板和仿真器

2.準(zhǔn)備開發(fā)板和仿真器仿真器的作用主要是調(diào)試程序和下載程序,仿真必須與所要仿真的單片機(jī)相匹配。目前CC2530單片機(jī)的仿真器主要有CCDebugger和SmartRF04EB2種,如圖1-3、圖1-4所示。CCDebugger仿真器是TI公司生產(chǎn)的CC25xx單片機(jī)專用仿真器,其仿真芯片為CC2511,功能強(qiáng)大一些,SmartRF04EB仿真器的仿真芯片為C8051,在組建無線傳感網(wǎng)實(shí)踐中,這兩種仿真器的功能相同,用法也相同。其中,SmartRF04EB仿真器可直接使用CCDebugger仿真器的驅(qū)動程序,讀者可根據(jù)自己的情況任選一種仿真器。在后續(xù)的實(shí)踐中我們使用的仿真器為CCDebugger,如果不作特別說明,其使用方法和步驟完全適用于SmartRF04EB仿真器。2.準(zhǔn)備開發(fā)板和仿真器在選擇仿真器時要特別注意仿真器接口上的信號定義,要求仿真器接口上的信號定義與開發(fā)板的仿真器接口信號定義保持一致。否則就無法仿真和下開程序。MFIOT-Z開發(fā)板上的仿真器接口定義如圖1-5所示。選擇仿真器時應(yīng)選擇接口信號定義如圖1-6所示的仿真器,這樣可用10P的排線直接連接仿真器與開發(fā)板。

3.準(zhǔn)備傳感器模塊

按照傳感器的功能或被測的物量量來分,傳感器的種類非常多,但從傳感器輸出的數(shù)據(jù)類型來看,傳感器主要有3類。第一類是開關(guān)量傳感器,其輸出量為0或者1的開關(guān)信號,如聲音傳感器、振動傳感器、人體紅外傳感器等。第二類是模擬量傳感器,其輸出量為連續(xù)變化的模擬信號,如光照度傳感器、氣體傳感器等。第三類是總線型數(shù)據(jù)傳感器,也叫做邏輯傳感器,其輸出數(shù)據(jù)按照某種約定由若干位二進(jìn)制數(shù)組成,例如,DHT11/SHT11、MPU6050等。在學(xué)習(xí)無線傳感網(wǎng)組建技術(shù)時不可能也沒有必要準(zhǔn)備太多的傳感器,建議讀者按以下要求準(zhǔn)備傳感器模塊。(1)在開關(guān)量傳感器、模擬量傳感器和邏輯傳感器這3類傳感器中,每類傳感器至少要準(zhǔn)備1個。建議準(zhǔn)備聲音傳感器、人體紅外傳感器、氣體傳感器、光照度傳感器和溫濕度傳感器DHT11。(2)傳感器的工作電壓要與開發(fā)板上傳感器接口上的電壓相匹配。MFIOT-Z開發(fā)板上提供了5V和3.3V兩種電源電壓,所以選擇傳感器的工作電壓應(yīng)為3.3V或者5V。3.準(zhǔn)備傳感器模塊(3)開發(fā)板上傳感器接插口為2.54mm間距的排母,選擇傳感器模塊時,要注意選擇插針間距為2.54mm的傳感器模塊,以便實(shí)踐時將傳感器直接插入開發(fā)板上的傳感器接插口中。(4)開發(fā)板上傳感器接插口的引腳定義如圖1-7所示,選擇傳感器模塊時要注意模塊的引腳定義要與開發(fā)板上傳感器接插口的引腳定義相匹配。

實(shí)踐總結(jié)

組建無線傳感網(wǎng)需要準(zhǔn)備許多軟硬件工具。軟件工具主要有IAR集成開發(fā)工具、ZStack協(xié)議棧軟件包等7種,其中BasicRF軟件包括TI公司的軟件包和新大陸公司的軟件包2種,這些軟件包都可以從各自的官網(wǎng)上下載。在選擇這些軟件時要注意的問題是,ZStack協(xié)議棧的版本要與IAR的版本相匹配,各驅(qū)動程序要與所選用的硬件設(shè)備相匹配。硬件工具主要是開發(fā)板和仿真器。選擇開發(fā)板時要注意的問題是,開發(fā)板上的單片機(jī)為CC2530單片機(jī),開發(fā)板上傳感器接口要豐富,能直接插接市面上通用的傳感器模塊,單片機(jī)的引腳開放,開發(fā)板具有短路保護(hù)。仿真器可選CCDebugger或者SmartRF04EB仿真器,選擇仿真器時要注意仿真器的接口定義要與開發(fā)板上的接口定義相匹配。選擇傳感器要注意的問題是,傳感器要涵蓋開關(guān)量傳感器、模擬量傳感器和邏輯傳感器,傳感器工作電壓要與開發(fā)板上提供的電壓保持一致,傳感器模塊的接口引腳要與開發(fā)板上傳感器接口引腳相匹配。任務(wù)2 安裝工具軟件

任務(wù)要求安裝IAR等工具軟件、程序燒錄軟件、仿真器和USB轉(zhuǎn)串口的驅(qū)動程序,檢查軟件的安裝和硬件的準(zhǔn)備是否正確,為后續(xù)開發(fā)無線傳感網(wǎng)作好準(zhǔn)備。

1.解壓工具軟件任務(wù)1中準(zhǔn)備的工具軟件為壓縮文件,需要將這些工具包解壓,然后在計算機(jī)中安裝這些工具包。解壓這些工具包的一種簡單方法如下:(1)將所有工具包存放至同一個文件夾中,例如存放到“E:\無線傳感網(wǎng)開發(fā)工具”文件夾中,如圖1-1所示。(2)選中文件夾中的所有壓縮文件,然后用鼠標(biāo)右鍵單擊其中某個選中的文件,在彈出的快捷菜單中選擇“解壓每個壓縮文件至單獨(dú)文件夾”菜單項(xiàng),如圖1-8所示。Windows就會用WinRAR工具軟件將所選擇的壓縮文件解壓至當(dāng)前文件夾下,解壓后的文件如圖1-9所示。2.安裝IAR集成開發(fā)工具

IAR集成開發(fā)工具軟件為IAREmbeddedWorkbench,安裝IAREmbeddedWorkbench的操作步驟如下:第1步:打開“E:\無線傳感網(wǎng)開發(fā)工具\(yùn)1IAR集成開發(fā)工具”文件夾,然后用鼠標(biāo)右鍵點(diǎn)擊EW8051-EV-8103-Web文件圖標(biāo)“”,在彈出的快捷菜單中點(diǎn)擊“以管理員身份運(yùn)行”菜單項(xiàng),打開圖所示安裝向?qū)У臍g迎對話框。2.安裝IAR集成開發(fā)工具第2步:在歡迎對話框中單擊“Next”按鈕,打開如圖所示的在線注冊對話框。2.安裝IAR集成開發(fā)工具第3步:在線注冊對話框的中間是在線注冊按鈕,在此我們不必在線注冊,直接點(diǎn)擊對話框的“Next”按鈕,打開如圖所示許可協(xié)議對話框。2.安裝IAR集成開發(fā)工具第4步:在許可協(xié)議對話框中選擇“Iacceptthetermsofthelicenseagreement”單選鈕,然后點(diǎn)擊“Next”按鈕,打開如圖所示的輸入用戶信息對話框。2.安裝IAR集成開發(fā)工具第5步:在輸入用戶信息對話框中輸入用戶名、公司名以及許可證號,然后單擊“Next”按鈕,打開如圖所示的輸入許可代碼對話框。2.安裝IAR集成開發(fā)工具第6步:在輸入許可代碼對話框的“LicenseKey”文本框中輸入從TI公司購買來的許可代碼,然后單擊“Next”按鈕,打開如圖所示的選擇安裝類型對話框。2.安裝IAR集成開發(fā)工具第7步:在選擇安裝類型對話框中單擊“Complete”單選鈕,然后單擊“Next”按鈕,打開如圖所示的選擇安裝位置對話框。2.安裝IAR集成開發(fā)工具第8步:選擇安裝位置對話框中我們采用系統(tǒng)默認(rèn)的位置,直接單擊“Next”按鈕,打開如圖所示的選擇程序存放位置對話框。2.安裝IAR集成開發(fā)工具第9步:在選擇程序存放位置對話框中我們采用系統(tǒng)默認(rèn)的位置,直接單擊“Next”按鈕,打開如圖所示的準(zhǔn)備安裝對話框?qū)υ捒颉?.安裝IAR集成開發(fā)工具第10步:在準(zhǔn)備安裝對話框中單擊“Next”按鈕,計算機(jī)中就開始安裝IAR,在安裝的過程中會顯示安排進(jìn)度,如果計算機(jī)中安裝了360安全衛(wèi)士,則在安裝的過程中會彈出如圖所示注冊表防護(hù)對話框。2.安裝IAR集成開發(fā)工具第11步:在注冊表防護(hù)對話框中點(diǎn)擊“更多”按鈕,在展開的選項(xiàng)中選擇“允許本次”選項(xiàng),計算機(jī)中會接著安裝IAR,程序安裝完畢后安裝向?qū)е袝霈F(xiàn)如圖所示的向?qū)ЫY(jié)束對話框。2.安裝IAR集成開發(fā)工具第12步:在向?qū)ЫY(jié)束對話框中單擊“Finish”按鈕,結(jié)束IAR安裝,計算機(jī)中會彈出如圖所示的IAR工作窗口。我們現(xiàn)在還只是建立開發(fā)環(huán)境,還不準(zhǔn)備立即用IAR開發(fā)程序,所以直接點(diǎn)擊窗口右上角的關(guān)閉按鈕,關(guān)閉IAR開發(fā)工具。3.安裝SmartRFFlashProgrammer和ZStack程序燒錄軟件SmartRFFlashProgrammer和協(xié)議棧軟件包ZStack-CC2530的安裝方法與IAREmbeddedWorkbench的安裝方法非常相似,讀者只需打開對應(yīng)的文件夾,用鼠標(biāo)右鍵點(diǎn)擊安裝程序圖標(biāo),在彈出的快捷菜單中點(diǎn)擊“以管理員身份運(yùn)行”菜單項(xiàng),然后一路點(diǎn)擊“next”按鈕就可以順利地安裝這些軟件。為了節(jié)省篇幅,在此我們不再詳細(xì)介紹這些軟件的安裝過程。4.安裝USB轉(zhuǎn)串口的驅(qū)動程序

安裝USB轉(zhuǎn)串口驅(qū)動程序的操作步驟如下:(1)打開“E:\無線傳感網(wǎng)開發(fā)工具\(yùn)7USB轉(zhuǎn)串口驅(qū)動”文件夾,然后用鼠標(biāo)右鍵點(diǎn)擊安裝文件SETUP.EXE,在彈出的快捷菜單中點(diǎn)擊“以管理員身份運(yùn)行”菜單項(xiàng),打開如圖所示的驅(qū)動安裝對話框。4.安裝USB轉(zhuǎn)串口的驅(qū)動程序

(2)在“驅(qū)動安裝”對話框的“選擇INF文件”下拉列表框中選擇“CH341SER.INF”列表項(xiàng),然后單擊“安裝”按鈕,系統(tǒng)就開始執(zhí)行安裝程序,驅(qū)動程序安裝結(jié)束后會自動彈出如圖所示的驅(qū)動預(yù)安裝成功提示框。4.安裝USB轉(zhuǎn)串口的驅(qū)動程序

(3)用USB線將計算機(jī)的USB口與開發(fā)板上的USB口相接,然后按下開發(fā)板上的電源開關(guān),給開發(fā)板上電,計算機(jī)就會自動地完成USB轉(zhuǎn)串口的相關(guān)配置?!菊f明】①USB轉(zhuǎn)串口的驅(qū)動程序僅需安裝一次,如果系統(tǒng)中已經(jīng)安裝了USB轉(zhuǎn)串口的驅(qū)動程序,請?zhí)^此步。②本例中所用的驅(qū)動程序?yàn)镃H340的驅(qū)動程序,如果用戶使用的USB轉(zhuǎn)串口通信線是其他芯片構(gòu)成的,請參照上述方法安裝其對應(yīng)的驅(qū)動程序。5.安裝仿真器驅(qū)動程序

安裝仿真器的操作步驟如下:(1)用USB線將仿真器與計算機(jī)相連,計算機(jī)就開始自動地為仿真器安裝驅(qū)動程序,過一會兒在任務(wù)欄中出現(xiàn)驅(qū)動程序未能安裝成功的圖標(biāo)及提示框,如圖所示。(2)用鼠標(biāo)右鍵點(diǎn)擊桌面上的“計算機(jī)”圖標(biāo),在彈出的快捷菜單中點(diǎn)擊“屬性”菜單項(xiàng),打開如圖所示的系統(tǒng)窗口。5.安裝仿真器驅(qū)動程序

(3)在系統(tǒng)窗口的右邊查看計算機(jī)的操作系統(tǒng)類型,然后點(diǎn)擊窗口左邊的“設(shè)備管理器”超鏈接,打開如圖所示的“設(shè)備管理器”窗口。本例中我們的計算機(jī)安裝的是“64位操作系統(tǒng)”,后續(xù)我們在選擇驅(qū)動程序時要選擇64位的驅(qū)動程程序。在“設(shè)備管理器”窗口中,單擊“其他設(shè)備”左邊的“”符號,將“其他設(shè)備”展開,我們可以看到“CCDebugger”設(shè)備前有一個黃色的“!”號,表明設(shè)備驅(qū)動程序的安裝存在問題。5.安裝仿真器驅(qū)動程序

(4)用鼠標(biāo)右點(diǎn)擊“CCDedbugger”設(shè)備,在彈出的快捷菜單中點(diǎn)擊“更新驅(qū)動程序軟件”菜單項(xiàng),打開如圖所示的“更新驅(qū)動程序軟件”對話框。5.安裝仿真器驅(qū)動程序

(5)在“更新驅(qū)動程序軟件”對話框中點(diǎn)擊“瀏覽計算機(jī)以查找驅(qū)動程序軟件”超鏈接,打開如圖所示“瀏覽計算機(jī)上的驅(qū)動程序文件”頁面。5.安裝仿真器驅(qū)動程序

(6)在“瀏覽計算機(jī)上的驅(qū)動程序文件”頁面中點(diǎn)擊“瀏覽”按鈕,打開如圖所示的“瀏覽文件夾”對話框,然后在對話框中選擇仿真器驅(qū)動程序所在的文件夾“E:\無線傳感網(wǎng)開發(fā)工具\(yùn)6CC-Debugger仿真器驅(qū)動程序\win_64bit_x64”,再點(diǎn)擊“確定”按鈕,返回至圖所示的頁面中?!菊f明】在圖1-31中,win_32bit_x86文件夾中存放的是32位操作系統(tǒng)下的CCDebugger驅(qū)動程序,win_64bit_x64文件夾中存放的是64位操作系統(tǒng)下的CCDebugger驅(qū)動程序,如果用戶使用的是32位操作系統(tǒng),則在第6步中應(yīng)選擇win_32bit_x86文件夾。5.安裝仿真器驅(qū)動程序

(7)在“瀏覽計算機(jī)上的驅(qū)動程序文件”頁面中點(diǎn)擊“下一步”按鈕,計算機(jī)就在“E:\無線傳感網(wǎng)開發(fā)工具\(yùn)6CC-Debugger仿真器驅(qū)動程序\win_64bit_x64”文件夾中搜索驅(qū)動程序,并自動安裝仿真器的驅(qū)動程序。驅(qū)動程序安裝結(jié)束后會出現(xiàn)如圖所示的“已安裝適合設(shè)備的最佳驅(qū)動程序軟件”頁面。5.安裝仿真器驅(qū)動程序

(8)在“已安裝適合設(shè)備的最佳驅(qū)動程序軟件”頁面中點(diǎn)擊“關(guān)閉”按鈕,這時“設(shè)備管理器”窗口中“其他設(shè)備”項(xiàng)消失,如圖所示。

6.檢查驅(qū)動程序安裝的結(jié)果

查看驅(qū)動程序安裝的結(jié)果包括查看USB轉(zhuǎn)串口驅(qū)動程序是否安裝成功和查看仿真器驅(qū)動程序是否安裝成功2部分,這2部分的操作方法相似。(1)查看USB轉(zhuǎn)串口驅(qū)動程序是否安裝成功操作方法如下:第1步:用USB線將計算機(jī)的USB口與開發(fā)板上的USB口相接,然后按下開發(fā)板上的電源開關(guān),給開發(fā)板上電。第2步:用鼠標(biāo)右鍵點(diǎn)擊桌面上的“計算機(jī)”圖標(biāo),在彈出的快捷菜單中點(diǎn)擊“設(shè)備管理器”菜單項(xiàng),打開如圖所示的“設(shè)備管理器”窗口。

6.檢查驅(qū)動程序安裝的結(jié)果

第3步:在“設(shè)備管理器”窗口中單擊“端口”左邊的“”號,將“端口”項(xiàng)展開,“端口”項(xiàng)的下面會出現(xiàn)“USB-SERIALCH340”項(xiàng),表明USB轉(zhuǎn)串口驅(qū)動成功,若“USB-SERIALCH340”前面出現(xiàn)黃色“!”號,表明USB轉(zhuǎn)串口的驅(qū)動程序安裝錯誤,需重新安裝,若無“USB-SERIALCH340”項(xiàng),則表明CH340沒有接入系統(tǒng),此時應(yīng)檢查計算機(jī)的USB口與開發(fā)板上的USB口是否可靠連接?!癠SB-SERIALCH340(COMx)”的含義是,當(dāng)前系統(tǒng)中USB轉(zhuǎn)串口所用的芯片是CH340,USB口所映射的串口號為COMx。例如,圖中所表示的是當(dāng)前的USB口所映射的串口號為COM5,后續(xù)計算機(jī)通過該USB口與單片機(jī)進(jìn)行串行通信時,串口的編號就應(yīng)該選擇COM5。

6.檢查驅(qū)動程序安裝的結(jié)果

(2)查看仿真器驅(qū)動程序是否安裝成功操作方法如下:第1步:用USB線將計算機(jī)的USB口與仿真器上的USB口相接。第2步:打開“設(shè)備管理器”窗口。第3步:在“設(shè)備管理器”窗口中單擊“Cebalcontrolleddevices”右邊的“”符號,展開“Cebalcontrolleddevices”項(xiàng),“Cebalcontrolleddevices”項(xiàng)下面會出現(xiàn)“CCDebugger”項(xiàng),表明CCDebugger仿真器安裝成功。如果“CCDebugger”前面出現(xiàn)黃色的“!”則表示仿真器的驅(qū)動程序安裝錯誤,通常情況下是由于我們所選的驅(qū)動程序與計算機(jī)的操作系統(tǒng)不匹配所致,這時我們只需更換CCDebugger的驅(qū)動程序即可。實(shí)踐總結(jié)

在任務(wù)2中我們主要進(jìn)行了工具軟件安裝實(shí)踐和檢查工具軟件是否安裝成功實(shí)踐。在組建無線傳感網(wǎng)的7個工具軟件中,IAR集成開發(fā)工具、SmartRFFlashProgrammer和ZStack協(xié)議棧軟件包的安裝方法相似,在安裝過程中需要允許修改Windows注冊表或者在安裝工具軟件之前關(guān)閉注冊表防護(hù)軟件,在安裝IAR集成開發(fā)工具之前還需要獲取IAR的許可證號和許可代碼。這3個工具軟件的安裝比較簡單,只需要按照安裝提示一步一步地操作就可以完成。BasicRF和串口調(diào)試助手軟件是綠色軟件,不需安裝。仿真器驅(qū)動程序和USB轉(zhuǎn)串口驅(qū)動程序的安裝方法相同,需要接入所要驅(qū)動的硬件后才能完成驅(qū)動程序的安裝,程序安裝結(jié)束后還需要檢查驅(qū)動程序安裝是否正確。任務(wù)3 建立傳感網(wǎng)開發(fā)環(huán)境

任務(wù)要求

在IAR集成開發(fā)環(huán)境中新建一個工程和程序文件,然后程序文件輸入程序代碼,并將程序文件添加至工程中,再對程序進(jìn)行編譯連接,并下載至ZigBee開發(fā)板中,利用仿真器跟蹤程序運(yùn)行,在IAR中調(diào)試程序。1.新建工程

開發(fā)CC2530單片機(jī)應(yīng)用程序一般是在IAR集成開發(fā)環(huán)境中進(jìn)行的,需要先建立一個IAR工程,然后配置工程,利用IAR的調(diào)試工具調(diào)試好程序,最后是將調(diào)試好的程序編譯連接,并生成單片機(jī)可直接運(yùn)行的16進(jìn)制文件,再將程序下載至單片機(jī)中運(yùn)行。新建IAR工程的操作步驟如下:(1)新建工程文件①在D盤新建一個名為EX_WSN的文件夾,然后在D:\EX_WSN文件夾中再新一個Task3子文件夾,Task3子文件夾用來保存任務(wù)3中的相關(guān)文件。②雙擊桌面上的“IAREmbeddedWorkbench”快捷圖標(biāo)“”,系統(tǒng)就會啟動IAR集成開發(fā)工具軟件,并打開如圖所示的IAR窗口。③在IAR窗口中單擊菜單欄中的“Project”→“CreateNewProject”菜單項(xiàng),窗口中就會彈出如圖所示的新建工程對話框。1.新建工程

④在新建工程對話框的“Toolchain”下拉列表框中選擇“8051”列表項(xiàng),然后在“Projecttemplates”列表框中選擇“Emptyproject”列表項(xiàng),再點(diǎn)擊“OK”按鈕。窗口中會彈出如圖所示的“另存為”對話框1.新建工程

⑤在另存為對話框中單擊導(dǎo)航窗格中的D:\EX_WSN\Task3文件夾(第1步中新建的文件夾),對話框的地址欄中就會出現(xiàn)所選擇的文件夾名,然后在“文件名(N)”文本框中輸入工程文件名“Task3”(不必輸入擴(kuò)展名),單擊“保存”按鈕,IAR就會新建工程文件Task3.ewp,并將工程文件保存在D:\EX_WSN\Task3文件夾中,IAR的workspace窗口中就會顯示Task3工程的名字。1.新建工程(2)新建C語言程序文件在IAR中新建程序文件的操作步驟如下:第1步:單擊菜單欄上的“File”→“New”→“File”菜單項(xiàng)或者單擊工具欄上的新建文件圖標(biāo)按鈕“”,這時IAR集成開發(fā)環(huán)境的右邊就會出現(xiàn)文本編輯窗口,窗口標(biāo)簽上會顯示當(dāng)前新建文件的文件名“Untitled1*”,如圖所示1.新建工程第2步:在文本編輯窗口中錄入程序代碼。第3步:單擊工具欄上的保存文件圖標(biāo)按鈕“”或者單擊菜單欄上的“File”→“Save”菜單項(xiàng),系統(tǒng)會彈出類似于如下圖的保存文件對話框,在“文件名”文本框中輸入文件名“ex3.c”,然后單擊“保存”按鈕。這里的“ex3.c”是本例的程序文件,其擴(kuò)展名為.c,表示是C語言程序文件?!菊f明】①用IAR新建文件時,IAR默認(rèn)的文件名為Untitledi(i=1、2、…),此時文本編輯窗口上的標(biāo)簽顯示的是默認(rèn)的文件名,保存文件后,文本編輯窗口上的標(biāo)簽顯示的是保存后的文件名。②C語言程序文件實(shí)際上是一個文本文件,可以用任何文本編輯器新建和編輯。③在程序代碼中,“//”后面的內(nèi)容為語句的注釋部分。本例中,這一部分可以暫不錄入?!?/”是C語言程序的注釋符。④程序中的標(biāo)點(diǎn)符號必須在半角狀態(tài)錄入。例如“;”(半角狀態(tài)下的分號)不能錄入成“;”(全角狀態(tài)下的分號)。⑤如果事先已建立了C語言程序文件,則跳過此步直接進(jìn)入第3步。1.新建工程(3)在工程中添加程序文件第1步:在Workspace窗口中用鼠標(biāo)右鍵點(diǎn)擊工程名Task3,在彈出的快捷菜單中單擊“Add”→“AddFiles”菜單項(xiàng),這時系統(tǒng)將會彈出如圖所示的添加文件對話框?!菊f明】在如圖所示的添加文件對話框中,地址欄內(nèi)顯示的是工程文件所在文件夾D:\EX_WSN\Task3,地址欄下面的列表框是文件列表框,顯示的是指定文件夾中的指定類型的所有文件。默認(rèn)狀態(tài)下文件類型下拉列表框中顯示的是“Sourcefiles(*.c;*.cpp;*.h)”,表示當(dāng)前文件列表框中顯示的是D:\EX_WSN\Task3文件夾中所有.c、.cpp、.h等源程序文件。第2步:單擊剛才所建立的程序文件“ex3.c”,再單擊“打開”按鈕。此時,C程序文件就添加至IAR工程中了。2.配置工程配置工程包括配置單片機(jī)、設(shè)置C編譯器、連接器、設(shè)置仿真器等許多內(nèi)容,為了使問題簡單化,幫助讀者快速入門,在此我們先只介紹一些最基本的配置,其他高級配置我們將在后續(xù)的項(xiàng)目中結(jié)合實(shí)例再作介紹。(1)配置單片機(jī)配置單片機(jī)的操作步驟如下:第1步:在Workspace窗口中用鼠標(biāo)右鍵點(diǎn)擊工程名Task3,在彈出的快捷菜單中單擊“Options…”菜單項(xiàng),打開如圖所示的“Optionsfornode”對話框。2.配置工程第2步:在Optionsfornode對話框中,單擊“Category”列表框中的“GeneralOptions”列表項(xiàng),然后單擊對話框右邊的“Target”標(biāo)簽,使對話框中顯示Target頁面,該頁面顯示的是配置單片機(jī)的內(nèi)容(參考下圖)。第3步:單擊“Device”后面的按鈕,系統(tǒng)會打開一個類似于圖1-40的“打開”對話框,在對話框中選擇CC2530F256.i51文件,該文件位于C:\ProgramFiles\IARSystems\EmbeddedWorkbench6.0Evaluation\8051\config\devices\TexasInstruments文件夾中。然后單擊“打開”對話框中的“打開”按鈕,圖1-41中“Device”文本框中就會顯示“CC2530F256”(參考下圖)。第4步:在“CPUcore”下拉列表框中選擇“Plain”列表項(xiàng),其他的參數(shù)選擇默認(rèn)值。2.配置工程(2)配置連接器配置連接器的操作步驟如下:第1步:在圖1-41所示對話框中單擊“Category”列表框中的“Linker”列表項(xiàng),然后單擊對話框右邊的“Config”標(biāo)簽,使對話框中顯示Config頁面,如圖所示。2.配置工程第2步:在Config頁面中勾選“Linkerconfigurationfile”框架中的“Overridedefault”復(fù)選框,然后單擊框架中的“”按鈕,打開類似于圖1的“打開”對話框,在對話框中選擇lnk51ew_cc2530F256_banked.xcl文件,該文件位于C:\ProgramFiles\IARSystems\EmbeddedWorkbench6.0Evaluation\8051\config\devices\TexasInstruments文件夾中。然后單擊“打開”對話框中的“打開”按鈕,圖2中“Linkerconfigurationfile”框架內(nèi)的文本框中就會顯示“$TOOLKIT_DIR$\config\devices\TexasInstruments\lnk51ew_cc2530F256_banked.xcl”(參考圖2)。其中,$TOOLKIT_DIR$表示IAR工具軟件的安裝目錄。2.配置工程第3步:其他項(xiàng)的配置選擇默認(rèn)值。(3)配置仿真器配置仿真器的操作步驟如下:第1步:在如下圖所示對話框中單擊“Category”列表框中的“Debugger”列表項(xiàng),然后單擊對話框右邊的“Setup”標(biāo)簽,使對話框中顯示Setup頁面,如圖所示。2.配置工程第2步:在Setup頁面中單擊“Driver”下拉列表框,從展開的列表項(xiàng)中選擇“TexasInstruments”列表項(xiàng)。第3步:勾選“DeviceDescriptionfile”框架中的“Overridedefault”復(fù)選框,然后單擊框架中的“”按鈕,打開類似于圖1-40的“打開”對話框,在對話框中選擇ioCC2530F256.ddf文件,該文件位于C:\ProgramFiles\IARSystems\EmbeddedWorkbench6.0Evaluation\8051\config\devices\TexasInstruments文件夾中。然后單擊“打開”對話框中的“打開”按鈕,圖1-43中“DeviceDescriptionfile”框架內(nèi)的文本框中就會顯示“$TOOLKIT_DIR$\config\devices\TexasInstruments\ioCC2530F256.ddf”(參考下圖)。第4步:其他項(xiàng)的配置選擇默認(rèn)值,然后單擊“OK”按鈕,結(jié)束工程配置。3.編譯、連接程序編譯、連接程序的操作方法如下:在IAR工作窗口中,單擊菜單欄上的“Project”→“Make”菜單項(xiàng)或者單擊圖標(biāo)工具欄上的make圖標(biāo)按鈕“”,然后在彈出的“SaveWorkspaceAs”對話框的“文件名”文本框中輸入“Task3”,再單擊“保存”按鈕。IAR就會保存桌面空間文件,然后對工程中的文件進(jìn)行編譯、連接,并在輸出窗口中顯示編譯、連接的結(jié)果,如圖2所示。如果源程序中存在語法上的錯誤,輸出窗口中將出現(xiàn)錯誤報告,雙擊錯誤報告行,可以定位到出錯的位置。對源程序反復(fù)修改后最終會得到如圖2所示的結(jié)果。3.編譯、連接程序【說明】Project菜單中有三個與編譯、連接有關(guān)的子菜單,它們的含義如下:“Make”:對工程進(jìn)行連接,如果文件已修改,則先進(jìn)行編譯再進(jìn)行連接并產(chǎn)生目標(biāo)代碼?!癛ebuildAll”:對當(dāng)前工程中所有文件重新編譯后再連接,并產(chǎn)生目標(biāo)代碼?!癈ompile”:只對當(dāng)前源程序進(jìn)行編譯,不進(jìn)行連接,不產(chǎn)生目標(biāo)代碼。②除了菜單外,IAR的工具欄中還提供了編譯、連接工具圖標(biāo),如下圖所示。這些圖標(biāo)按鈕與對應(yīng)的菜單項(xiàng)的功能一致。③輸出窗口中顯示錯誤數(shù)為0時,只表明源程序無語法上的錯誤,并不代表源程序無邏輯上的錯誤。4.調(diào)試程序調(diào)試程序的目的是為了查找程序中的邏輯錯誤。在IAR中調(diào)試程序的方法是,跟蹤程序的運(yùn)行,查看程序運(yùn)行的結(jié)果。如果結(jié)果與理論值不符,表明程序存在邏輯錯誤,再逐條運(yùn)行程序中的相關(guān)語句,找出產(chǎn)生錯誤的語句,并修改程序,直至程序運(yùn)行的結(jié)果正確。在調(diào)試的過程中需要在程序中設(shè)置斷點(diǎn),采取全速運(yùn)行、單步運(yùn)行、過程單步等多種運(yùn)行方式反復(fù)運(yùn)行程序,在程序運(yùn)行的過程中觀察相關(guān)變量的值。用IAR調(diào)試程序的步驟如下:(1)進(jìn)入調(diào)試狀態(tài)編譯連接程序后,單擊菜單欄上的“Project”→“DebugwithoutDownloading”菜單項(xiàng)或者單擊工具欄上的調(diào)試圖標(biāo)按鈕“”,這時IAR會進(jìn)入調(diào)試狀態(tài),在調(diào)試狀態(tài)下,IAR的窗口發(fā)生了一系列的變化,其中,菜單欄中多了一個“Debug”菜單,工具欄中出現(xiàn)了9個調(diào)試工具圖標(biāo)按鈕,這9個圖標(biāo)按鈕分別與“Debug”菜單中的9個菜單項(xiàng)相對應(yīng),從左到右依次為“復(fù)位”、“暫?!?、“跳過”、“跳入”、“跳出”、“單步運(yùn)行”、“運(yùn)行至光標(biāo)處”、“全速運(yùn)行”和“結(jié)束調(diào)試”。在代碼窗口中會出現(xiàn)一個綠色的箭頭,用來指示當(dāng)前即將要執(zhí)行的語句。4.調(diào)試程序【說明】單擊菜單欄上的“Project”→“DownloadandDebug”菜單項(xiàng)或者單擊工具欄上的下載調(diào)試圖標(biāo)按鈕“”,IAR也會進(jìn)入調(diào)試狀態(tài)。但“DownloadandDebug”菜單項(xiàng)除了具備調(diào)試功能外,還會將程序下載至單片機(jī)的程序存儲器中,單片機(jī)重新上電后,所下載的程序?qū)⒈粓?zhí)行?!癉ebugwithoutDownloading”菜單項(xiàng)只具備調(diào)試功能,單片機(jī)重新上電后,所下載的程序丟失,單片機(jī)將執(zhí)其程序存儲器中原來的程序。4.調(diào)試程序(2)顯示Registers窗口Registers窗口的功能是顯示單片機(jī)內(nèi)部的主要寄存器以及這些寄存器的當(dāng)前值。顯示Registers窗口的操作方法是,在調(diào)試狀態(tài)下單擊菜單欄上的“View”→“Register”菜單項(xiàng)。Registers窗口如圖所示。4.調(diào)試程序(3)顯示觀察窗口觀察窗口包括Locals和Watch等2個觀察窗口。其中Locals窗口用來顯示當(dāng)前執(zhí)行函數(shù)中的變量值,Watch窗口用來顯示指定變量的當(dāng)前值。顯示Locals窗口的方法是,單擊菜單欄上的“View”→“Locals”菜單項(xiàng)。顯示W(wǎng)atch窗口的方法是,單擊菜單欄上的“View”→“Watch”。Watch窗口和Locals窗口如圖所示。在圖中,當(dāng)前執(zhí)行的函數(shù)是delay,Local窗口中顯示的是單片機(jī)在執(zhí)行到箭頭所指行時,delay函數(shù)中各變量的值。在Watch窗口中被顯示的變量必須由用戶指定,可以是本地變量,也可是全局變量。指定觀察變量的方法是,在Watch窗口中點(diǎn)擊“Expression”列中的虛線框,使光標(biāo)落入虛線框中,再輸入所要觀察的變量名,然后單擊窗口中的空白處。4.調(diào)試程序(4)設(shè)置斷點(diǎn)設(shè)置斷點(diǎn)的目的是,讓程序運(yùn)行至指定行后暫停運(yùn)行,以便用戶觀察程序運(yùn)行的結(jié)果。斷點(diǎn)的設(shè)置方法是,在調(diào)試窗口中,用鼠標(biāo)左鍵單擊需要程序停止運(yùn)行的行,再用鼠標(biāo)左鍵單擊工具欄上的斷點(diǎn)設(shè)置圖標(biāo)按鈕“”,這時光標(biāo)所在行的左邊會出現(xiàn)一個紅色園點(diǎn),該行代碼上會出現(xiàn)紅色底紋,表示我們在該行處已設(shè)置了一個斷點(diǎn)?!菊f明】①雙擊某行語句左邊的灰色部分也可以快速地將該行設(shè)置成斷點(diǎn)行。②斷點(diǎn)設(shè)置命令具有開關(guān)特性。若某行為斷點(diǎn)行,再次對該行設(shè)置斷點(diǎn)時,則為取消該行斷點(diǎn)。(5)選擇程序的運(yùn)行方式并運(yùn)行程序在IAR中調(diào)試程序時需要控制程序的運(yùn)行方式,以便在程序的運(yùn)行過程中觀察運(yùn)行的結(jié)果。在IAR中控制程序運(yùn)行的圖標(biāo)按鈕有9個,位于調(diào)試工具欄中,選擇不同的工具圖標(biāo)按鈕就可以控制程序以不同的方式運(yùn)行。5.下載程序燒錄程序有2種方法,適用于2種場合。第一種方法是用IAR集成開發(fā)工具下載,這種方法適用于手中擁有源程序的用戶。第二種方法是用SmartRFFlashProgrammer工具軟件下載,這種方法適用于手中沒有源程序的用戶。(1)用IAR集成開發(fā)工具下載程序操作方法如下:第1步:按照前面介紹的方法調(diào)試好程序。第2步:連接仿真器。①關(guān)掉開發(fā)板上的電源。②用10P排線將仿真器上的10P牛角座與開發(fā)板上的10P牛角座相連。③用USB線將仿真器上USB口與計算機(jī)上的USB口相接。④接通開發(fā)板上的電源。這時可以看到仿真器上的指示燈呈紅色顯示,表明仿真器還不能與開發(fā)板進(jìn)行通信。⑤按下仿真器上的復(fù)位按鈕,讓仿真器復(fù)位。這時可以看到仿真器上的指示燈呈綠色顯示,表明仿真器與開發(fā)板通信成功,當(dāng)前可以通過仿真器給開發(fā)板下載程序或者對程序進(jìn)行硬件仿真調(diào)試。第3步:下載程序至開發(fā)板中。①使IAR進(jìn)入文件編輯狀態(tài)。5.下載程序②單擊下載調(diào)試工具圖標(biāo)“”,IAR就會將程序下載至開發(fā)板中,并進(jìn)入調(diào)試狀態(tài)。③在調(diào)試狀態(tài)下的IAR窗口中單擊結(jié)束調(diào)試工具圖標(biāo)“”,退出調(diào)試狀態(tài)。④關(guān)閉開發(fā)板的電源,再拔掉仿真器與開發(fā)板的連接線,然后給開發(fā)板上電,開發(fā)板就會運(yùn)行我們所下載的程序。(2)用SmartRFFlashProgrammer工具軟件下載程序用SmartRFFlashProgrammer工具軟件下載程序需先生成單片機(jī)所要執(zhí)行的16進(jìn)制文件(hex文件),然后將此文件下載至單片機(jī)中,其操作步驟如下:第1步:按照前面介紹的方法調(diào)試好程序,并使IAR進(jìn)入程序編輯狀態(tài)。第2步:產(chǎn)生hex文件。①按照配置工程中所介紹的方法打開“Optionsfornode”對話框。5.下載程序②在對話框中單擊“Category”列表框中的“Linker”列表項(xiàng),然后單擊對話框右邊的“Output”標(biāo)簽,使對話框中顯示Output頁面,如圖所示。5.下載程序③在Output頁面中勾選“AllowC-SPY-specificextraoutputfile”復(fù)選框,然后單擊“ExtraOutput”標(biāo)簽,使對話框中顯示ExtraOutput頁面,如圖所示。5.下載程序④在ExtraOutput頁面中勾選“Generateextraoutputfile”復(fù)選框和“Overridedefault”復(fù)選框,然后將“Output”文本框中的文件名改為我們所需要的文件名,其中文件名的后綴為“.hex”,表示該文件為16進(jìn)制文件。例如,在我們所指定的輸出文件為Task3.hex。⑤在“Outputformat”下拉列表框中選擇“intel-extended”類型,然后單擊“OK”按鈕,結(jié)束工程配置,返回至IAR文件編輯窗口中。⑥用鼠標(biāo)右鍵點(diǎn)擊Workspace窗口中的工程名,在彈出的快捷菜單中選擇“RebuildAll”或者“make”菜單項(xiàng),對工程文件進(jìn)行編譯。IAR在編譯程序時就會額外生成一個16進(jìn)制文件(.hex文件),該文件位于E:\ex\Debug\Exe文件夾中,它就是我們所要的單片機(jī)執(zhí)行文件。第3步:按照前面介紹的方法連接仿真器。第4步:用SmartRFFlashProgrammer工具軟件下載程序。5.下載程序①雙擊桌面上的SmartRFFlashProgrammer工具軟件快捷圖標(biāo)“”,打開如圖所示的SmartRFFlashProgrammer窗口。②在SmartRFFlashProgrammer窗口中單擊“System-on-Chip”標(biāo)簽,窗口右方向的文本框中會顯示仿真器的類型、仿真器的ID號以及開發(fā)板上單片機(jī)的類型。5.下載程序【說明】如果文本框中無上述信息顯示,表明仿真器與計算機(jī)連接有問題或者仿真器驅(qū)動程序安裝有問題,請檢查仿真器與計算機(jī)的連接并排除故障如果文本框的“chiptype”列中顯示的是“N/A”,表明仿真器與開發(fā)板連接有問題或者開發(fā)板沒上電,排除故障后按仿真器上的復(fù)位鍵,這時仿真器的指示燈為綠色,SmartRFFlashProgrammer窗口中的文本框中會顯示開發(fā)板上單片機(jī)的類型。③單擊“Flashimage”右邊的按鈕,系統(tǒng)會打開一個類似于圖1-40的“打開”對話框,在對話框中選擇Task3.hex文件,該文件是第2步中所產(chǎn)生的單片機(jī)執(zhí)行文件,它位于D:\EX_WSN\Task3\Debug\Exe文件夾中。然后單擊“打開”對話框中的“打開”按鈕,“Flashimage”下接列表框中就會顯示所要下載的文件“D:\EX_WSN\Task3\Debug\Exe\Task3.hex”。④單擊“Erase,programandverity”單選鈕,或者單擊“Eraseandprogram”單選鈕,然后單擊“Performactions”按鈕,SmartRFFlashProgrammer工具軟件就會將Task3.hex文件下載至單片機(jī)中,下載結(jié)束后,會在“Performactions”按鈕下面的文本框中顯示下載后的結(jié)果?!菊f明】對于開發(fā)者而言,我們一般是用IAR集成開發(fā)工具下載程序,用IAR集成開發(fā)工具下載程序時,不必生成hex文件。實(shí)踐總結(jié)ZigBee網(wǎng)絡(luò)開發(fā)工具主要有IAR集成開發(fā)工具軟件、ZStack-CC2530協(xié)議棧程序包、程序燒錄軟件SmartRFFlashProgrammer、仿真器驅(qū)動程序和串口調(diào)試助手等幾個工具軟件。其中最主要的是IAR集成開發(fā)工具軟件和ZStack-CC2530協(xié)議棧程序包。在項(xiàng)目一中我們主要是介紹了這些工具件的安裝方法以及IAR集成開發(fā)工具軟件的使用方法,為后續(xù)的項(xiàng)目的實(shí)施搭建好開發(fā)環(huán)境。IAR集成開發(fā)工具軟件是單片機(jī)應(yīng)用系統(tǒng)開發(fā)中的常用工具軟件之一。IAR具有源程序編輯、程序調(diào)試、系統(tǒng)仿真等多種功能,可以將源程序編譯生成目標(biāo)文件。熟練地使用IAR開發(fā)工具既是單片機(jī)應(yīng)用系統(tǒng)開發(fā)的基本技能之一,也是ZigBee網(wǎng)絡(luò)開發(fā)的基本技能之一,在應(yīng)用系統(tǒng)開發(fā)中要充分地利用IAR的強(qiáng)大功能。習(xí)題

1.IAR工程文件的擴(kuò)展名為

。2.以添加ex.c文件為例,簡述在IAR工程中添加程序文件的方法,并上機(jī)實(shí)踐。3.設(shè)ZigBee模塊中所用的單片機(jī)為CC2530F256,簡述IAR工程中配置單片機(jī)的方法,并上機(jī)實(shí)踐。4.設(shè)ZigBee模塊中所用的單片機(jī)為CC2530F256,簡述IAR工程中配置連接器的方法,并上機(jī)實(shí)踐。5.簡述用IAR集成開發(fā)工具下載程序的方法,并上機(jī)實(shí)踐。6.簡述用SmartRFFlashProgrammer工具軟件下載程序的方法,并上機(jī)實(shí)踐。任務(wù)4

用BasicRF遠(yuǎn)程控制LED燈任務(wù)要求:

將BasicRF軟件包(庫函數(shù))復(fù)制到計算機(jī)的D:\EX_WSN文件夾中,再參考light-switch.c文件中的例程,編寫發(fā)送端程序和接收端程序,實(shí)現(xiàn)以下功能:在發(fā)送端中每接一次SW1按鍵,在接收端中LED1燈的狀態(tài)就翻轉(zhuǎn)一次。其中發(fā)送端的程序文件為switch.c,接收端的程序文件為light.c。1、BasicRF軟件包

BasicRF軟件包是TI公司開發(fā)的一組基于CC253X芯片的庫函數(shù)包,它實(shí)現(xiàn)了基于IEEE802.15.4標(biāo)準(zhǔn)數(shù)據(jù)包的接收和發(fā)送功能,可以很方便地實(shí)現(xiàn)點(diǎn)對點(diǎn)的無線數(shù)據(jù)傳輸功能,主要用于一些無線數(shù)據(jù)傳輸?shù)暮唵螒?yīng)用和ZigBee協(xié)議棧入門學(xué)習(xí)。BasicRF只能實(shí)現(xiàn)IEEE802.15.4標(biāo)準(zhǔn)的少部分功能,叫做基本的射頻傳輸軟件包。其功能限制主要是:

不具備“多跳”、“設(shè)備掃描”功能,只能實(shí)現(xiàn)點(diǎn)對點(diǎn)的傳輸。

只提供了一種網(wǎng)絡(luò)設(shè)備,無協(xié)調(diào)器、路由器、終端節(jié)點(diǎn)之分,所

有節(jié)點(diǎn)都為同級設(shè)備,在網(wǎng)絡(luò)中的地位相等。

無自動重發(fā)功能

數(shù)據(jù)傳輸時會等待信道空閑,但不按IEEE802.15.4CSMA-CA要求進(jìn)行兩次CCA檢測?!局R儲備】BasicRF軟件包采用分層設(shè)計,包括硬件層、硬件抽象層、基本無線傳輸層和應(yīng)用層,其分層結(jié)構(gòu)如圖2-1所示。圖2-1

BasicRF軟件包的分層結(jié)構(gòu)2、basicRfInit()函數(shù)

函數(shù)的定義位于basic_rf.c文件中,函數(shù)的原型如下:uint8basicRfInit(basicRfCfg_t*pRfConfig);功能:按指定的參數(shù)配置射頻,包括配置PANID號、信道號、本機(jī)地址等。參數(shù)含義:pRfConfig:指向basicRfCfg_t型結(jié)構(gòu)體的指針。其中basicRfCfg_t型結(jié)構(gòu)體變量中存放的是所配置的參數(shù)。返回值為初始化的結(jié)果。若初始化成功,則返回SUCCESS,若初始化失敗,返回FAILED。函數(shù)中,basicRfCfg_t是basic_rf.h文件定義的一個結(jié)構(gòu)體類型,其定義如下:typedefstruct{uint16myAddr; //本機(jī)地址,取值范圍為0x0000~0xffffuint16panId; //PANID號,取值范圍為0x0000~0xffff,相互通信的2機(jī)的panId必須相同

uint8channel;

//信道號,取值11~26,相互通信的2機(jī)的信道號必須相同

uint8ackRequest;

//應(yīng)答信號

#ifdefSECURITY_CCM

//若沒定義SECURITY_CCM符號,下面的2個加密成員無效

uint8*securityKey;

uint8*securityNonce;

#endif}basicRfCfg_t;說明:

(1)PANID的含義是個域網(wǎng)標(biāo)識符(PersonalAreaNetworkID),BasicRF網(wǎng)絡(luò)屬于個域網(wǎng),PANID值用來標(biāo)識不同的個域網(wǎng),同一個個域網(wǎng)中的節(jié)點(diǎn)其PANID值必須相同,如果2個節(jié)點(diǎn)的PANID值不同,則這2個節(jié)點(diǎn)屬于不同的網(wǎng)絡(luò)。在BasicRF網(wǎng)絡(luò)中,PANID值用16位二進(jìn)制數(shù)表示,其取值范圍為0x0000~0xffff。

(2)信道即信號傳輸?shù)念l道,也就是通信的頻率,不同的信道號對應(yīng)不同的通信頻率。在我國,BasicRF網(wǎng)絡(luò)的信道號為11~26。在BasicRF網(wǎng)絡(luò)中,相互通信的2個節(jié)點(diǎn),其信道號必須相同。

(3)網(wǎng)絡(luò)地址用來標(biāo)識網(wǎng)絡(luò)中不同的節(jié)點(diǎn),同一網(wǎng)絡(luò)中的不同節(jié)點(diǎn),其網(wǎng)絡(luò)地址不同,在BasicRF網(wǎng)絡(luò)中,網(wǎng)絡(luò)地址用16位二進(jìn)制數(shù)表示,取值范圍為0x0000~0xffff。

(4)PANID、信道、網(wǎng)絡(luò)地址是無線網(wǎng)絡(luò)常用的幾個概念,我們將在任務(wù)11、任務(wù)12中再作詳細(xì)介紹。用basicRfInit()函數(shù)初始化射頻參數(shù)的方法如下:

第1步:定義一個basicRfCfg_t類型的結(jié)構(gòu)體變量,其作用是保存所需配置的參數(shù)。例如:staticbasicRfCfg_tbasicRfConfig;

//定義結(jié)構(gòu)體變量basicRfConfig

第2步:對basicRfCfg_t類型的結(jié)構(gòu)體變量的各成員賦值。例如:basicRfConfig.panId=0x2021;

//網(wǎng)絡(luò)ID號為0x2021basicRfConfig.channel=25;

//信道號為25basicRfConfig.ackRequest=TRUE;

//應(yīng)答basicRfConfig.myAddr=0x0711;

//本機(jī)地址為0x0711

第3步:調(diào)用函數(shù)basicRfInit(),按指定參數(shù)進(jìn)行RF初始化。例如:basicRfInit(&basicRfConfig);

//按basicRfConfig變量所設(shè)置的參數(shù)初始化射頻3、basicRfSendPacket()函數(shù)功能:向指定地址節(jié)點(diǎn)發(fā)送數(shù)據(jù)。函數(shù)的原型:uint8basicRfSendPacket(uint16destAddr,uint8*pPayload,uint8length);參數(shù)含義:destAddr:目的地的網(wǎng)絡(luò)地址。pPayload:指向緩沖區(qū)的指針,該緩沖用來存放所要發(fā)送的數(shù)據(jù)。length:發(fā)送數(shù)據(jù)的長度。返回值為發(fā)送的結(jié)果。若發(fā)送成功,則返回SUCCESS,發(fā)送失敗,返回FAILED。用該函數(shù)發(fā)送數(shù)據(jù)的方法如下:

先定義一個數(shù)組,該數(shù)據(jù)用作發(fā)送數(shù)據(jù)的緩沖區(qū),然后將所需發(fā)送的數(shù)據(jù)存放至該數(shù)組中,再用basicRfSendPacket()函數(shù)將數(shù)據(jù)發(fā)送出去。舉例向網(wǎng)絡(luò)中地址為0x1234的節(jié)點(diǎn)發(fā)送2個字符“cn”的程序段如下:1234staticuint8pTxData[10]; //定義數(shù)組pTxData[],用作發(fā)送數(shù)據(jù)的緩沖區(qū)pTxData[0]='c'; //待發(fā)送數(shù)據(jù)'c'寫入發(fā)送緩沖區(qū)pTxData[1]='n'; //待發(fā)送數(shù)據(jù)'n'寫入發(fā)送緩沖區(qū)basicRfSendPacket(0x1234,pTxData,2);//向地址為0x1234的節(jié)點(diǎn)發(fā)送pTxData緩沖區(qū)中的2字節(jié)數(shù)據(jù)4、數(shù)據(jù)接收中的相關(guān)函數(shù)BasicRF庫函數(shù)中,與數(shù)據(jù)接收相關(guān)的函數(shù)主要有basicRfReceive()等4個函數(shù)。

(1)basicRfReceiveOn()函數(shù)功能:打開射頻接收器。函數(shù)的原型說明:

voidbasicRfReceiveOn(void);該函數(shù)的形參和返回值都為空。

(2)basicRfReceiveOff()函數(shù)功能:關(guān)閉射頻接收器。函數(shù)的原型說明:

voidbasicRfReceiveOff(void);該函數(shù)的形參和返回值都為空。

(3)basicRfPacketIsReady()函數(shù)功能:檢查接收數(shù)據(jù)包是否準(zhǔn)備好,即檢查是否有新的接收數(shù)據(jù)包。函數(shù)的原型說明:

uint8basicRfPacketIsReady(void);該函數(shù)無參數(shù),函數(shù)的返值為TRUE或者FLASE。檢測到有新的接收數(shù)據(jù)時函數(shù)返回TRUE,沒發(fā)現(xiàn)有新的接收數(shù)據(jù)時函數(shù)返回FLASE。

(4)basicRfReceive()函數(shù)功能:

接收若干數(shù)據(jù)并將所接收到的數(shù)據(jù)及接收數(shù)據(jù)時的信號強(qiáng)度存放至指定的緩沖區(qū)中。函數(shù)的原型如下:uint8basicRfReceive(uint8*pRxData,uint8len,int16*pRssi);各參數(shù)的含義:pRxData:數(shù)據(jù)緩沖區(qū)的首地址,該緩沖區(qū)用來存放所接收到的數(shù)據(jù)len:接收數(shù)據(jù)的長度pRssi:信號緩沖區(qū)的首地址,該緩沖區(qū)用來存放接收數(shù)據(jù)時的信號強(qiáng)度。實(shí)際使用時,一般不需要保存接收信號的強(qiáng)度,此時該參數(shù)的取值為NULL。函數(shù)的返回值是實(shí)際接收的數(shù)據(jù)長度。5、接收數(shù)據(jù)的方法接收數(shù)據(jù)分3步:第1步:定義一個字符型數(shù)組,該數(shù)組為用戶接收緩沖區(qū),用來存放接收到的用戶數(shù)據(jù),該數(shù)組一般要定義成一個全局?jǐn)?shù)組,以便多個函數(shù)中都可使用。例如:staticuint8pRxData[10];

//定義數(shù)組pRxData[],該數(shù)組為用戶接收緩沖區(qū)第2步:用basicRfReceiveOn()打開射頻接收器。第3步:用basicRfPacketIsReady()函數(shù)檢查節(jié)點(diǎn)當(dāng)前是否接收了新數(shù)據(jù),若接收到了新數(shù)據(jù),則用basicRfReceive()函數(shù)讀取新數(shù)據(jù)并存放到用戶接收緩沖區(qū)中,以供后續(xù)處理。接收數(shù)據(jù)的框架結(jié)構(gòu)如下:1234567

89101112staticuint8pRxData[10]; //定義數(shù)組pRxData[],該數(shù)組為用戶接收緩沖區(qū)…uint8 len; //局變量len,存放實(shí)際接收到的數(shù)據(jù)個數(shù)basicRfReceiveOn(); //開射頻接收器if(basicRfPacketIsReady()) //檢查底層是否接收到了新數(shù)據(jù){//接收到了新數(shù)據(jù) len=basicRfReceive(pRxData,2,NULL);//從底層取2字節(jié)新數(shù)據(jù),并存放在pRxData[]中,實(shí)際接收的個數(shù)存放在len中 if(len>0) //判斷實(shí)際是否接收到了新數(shù)據(jù){//實(shí)際接收到了數(shù)據(jù) /*此處添加對接收數(shù)據(jù)處理的代碼*/

}}6、halButtonPushed()函數(shù)功能:

檢查S1鍵是否按下。函數(shù)無參數(shù),返回值為S1鍵的狀態(tài),若S1鍵按下過,則返回1,否則返回0。

該函數(shù)只能檢測接在P01引腳上的按鍵狀態(tài),若S1鍵接在CC2530的其他引腳,則需要修改底層硬件配置文件,其修改方法我們將在后續(xù)的任務(wù)實(shí)施中再詳細(xì)介紹。如果要使用接在其他IO端口引腳上的按鍵,則需要修改該函數(shù)的代碼。7、發(fā)光二極管控制函數(shù)BasicRF庫函數(shù)中有3個發(fā)光二極管控制函數(shù),這3個函數(shù)非常相似,如表2-1所示。表2-1 發(fā)光二極管控制函數(shù)原型功能參數(shù)返回值voidhalLedSet(uint8id)點(diǎn)亮發(fā)光二極管id:發(fā)光二極管的編號取值:1~4空voidhalLedClear(uint8id)熄滅發(fā)光二極管voidhalLedToggle(uint8id)發(fā)光二極管翻轉(zhuǎn)8、延時函數(shù)BasicRF庫函數(shù)中有2個延時函數(shù),它們的定義位于hal_mcu.c文件中。(1)halMcuWaitMs()函數(shù)功能:延時若干毫秒,函的原型如下:voidhalMcuWaitMs(uint16msec);函數(shù)中各參數(shù)的含義如下:msec:延時的毫秒數(shù)。該函數(shù)的返回值為空。(2)halMcuWaitUs()函數(shù)功能:延時若干微秒,函的原型如下:voidhalMcuWaitUs(uint16usec);函數(shù)中各參數(shù)的含義如下:msec:延時的微秒數(shù)。該函數(shù)的返回值為空?!救蝿?wù)實(shí)施】

1、準(zhǔn)備文件(1)啟動工程操作步驟如下:第1步:將TI公司的BasicRF軟件包解壓至D:\EX_WSN文件夾中,再將軟件包的文件夾名改為Task4。第2步:打開“D:\EX_WSN\Task4\ide\srf05_cc2530\iar”文件夾,找到light_switch.eww文件,如圖2-2所示。然后雙擊light_switch.eww文件圖標(biāo),系統(tǒng)中會彈出如圖2-3所示的格式轉(zhuǎn)換詢問框。圖2-2 light_switch.eww工程文件圖2-3 格式轉(zhuǎn)換詢問框第3步:單擊格式轉(zhuǎn)換詢問框中的“是”按鈕,IAR就會進(jìn)行文件格式轉(zhuǎn)換,然后打開light_switch工程。第4步:按照任務(wù)3中所介紹的方法重新配置工程。其中,單片機(jī)的配置文件為CC2530F256.I51文件,連接器的配置文件為lnk51ew_cc2530F256_banked.xcl文件,仿真器的配置文件為ioCC2530F256.ddf文件?!菊f明】

TI公司提供的light_switch工程樣例是基于早期的IAR開發(fā)的,其工程文程的格式與EW8051-EV-8103-Web版的IAR工程文件的格式不同,其配置也不相同。在項(xiàng)目1中,我們安裝的EW8051-EV-8103-Web版的IAR集成開發(fā)工具,所以在打開light_switch工程樣例時會出現(xiàn)圖2-3所示的格式轉(zhuǎn)換提示,工程打開后還需配置工程。如果不重新配置工程,在文件編譯連接時會出現(xiàn)如圖2-4所示的錯誤提示。圖2-4 工程編譯連接時的錯誤提示(2)顯示行號在默認(rèn)狀態(tài)下,IAR的窗口中并不顯示代碼的行號,為了觀察和研究程序,我們需要在窗口中顯示代碼的行號。顯示代碼的行號的操作步驟如下:第1步:單擊菜單欄上的“Tools”→“Options”菜單命令項(xiàng),打開“IDEOptions”對話框,如圖2-5所示。圖2-5 IDEOptions對話框第2步:在“IDEOptions”對話框左邊的列表框中單擊“Editor”列表項(xiàng),然后在右邊區(qū)域中勾選“Showlinenumbers”多選框,如圖2-5所示。再單擊“確定”按鈕。(3)修改LED燈的配置在BasicRF軟件包中,LED燈和SW按鍵的驅(qū)動程序是按照TI公司生產(chǎn)的ZigBee開發(fā)板編寫的。在我們使用的ZigBee開發(fā)板中,LED燈的控制電路如圖2-6所示,該電路與TI公司的開發(fā)板并不一致。其中D1(LED1)接在P10引腳上,D2(LED2)接在P11引腳上,D3(LED3)接在P12引腳上,D4(LED4)接在P14引腳上,這4只LED都采用低有效控制,即單片機(jī)的控制腳為低電平時,對應(yīng)的發(fā)光二極管就點(diǎn)亮。在實(shí)際應(yīng)用時需要根據(jù)LED的實(shí)際控制電路修改BasicRF中的有關(guān)LED的配置程序。修改方法如下:圖2-6 LED控制電路第1步:按下列2種方法之一打開hal_board.h文件。法一:

在窗口左邊的Workspace欄中,點(diǎn)擊light_switch工程名前的+號,將工程中的組結(jié)構(gòu)圖展開,然后點(diǎn)擊hal組前的+號,再點(diǎn)擊srf05_soc組前的+號,將組中的文件展開,找到hal_board.h文件,如圖2-7所示,再雙擊hal_board.h文件,IAR就會打開hal_board.h文件。圖2-7 hal_board.h文件的位置法二:

在窗口左邊的Workspace欄中,點(diǎn)擊light_switch工程名前的+號,將工程中的組結(jié)構(gòu)圖展開,然后點(diǎn)擊application組前的+號,再雙擊組中的light_switch.c文件,打開light_switch.c文件。然后在light_switch.c文件的開始部分的代碼中找到“#include<hal_board.h>”代碼,再用鼠標(biāo)右鍵點(diǎn)擊該代碼,打開如圖2-8所示的快捷菜單,再在快捷菜點(diǎn)中點(diǎn)擊“Open“hal_board.h””菜單項(xiàng),IAR就會打開hal_board.h文件。第2步:在hal_board.h文件中找到定義LED端口引腳的代碼,然后按圖2-9所示修改LED端口引腳的定義圖2-9

LED的端口引腳的定義圖2-8 快捷菜單第3步:在hal_board.h文件中找到點(diǎn)亮和熄滅LED的代碼,再按圖2-10所示修改點(diǎn)亮和熄滅LED的代碼。圖2-10 點(diǎn)亮和熄滅LED的代碼第4步:保存修改后的hal_board.h文件2、編制開關(guān)發(fā)送程序文件switch.c方法如下:(1)新建switch.c文件。第1步:單擊工具欄中的“新建文件”圖標(biāo)按鈕,如圖2-11所示,新建一個空白文件。圖2-11 新建文件第2步:單擊工具欄中的“保存文件”圖標(biāo)按鈕,在彈出的“另存為”對話框中將所新建的文件保存為“switch.c”,文件存放在D:\EX_WSN\Task4\source\apps\light_switch文件夾中,如圖2-12所示。圖2-12 保存switch.c文件(2)在switch.c文件中添加程序代碼第1步:在圖2-7中雙擊application文件夾中的“l(fā)ight_switch.c”文件名,在文件窗口中打開“l(fā)ight_switch.c”文件。第2步:從“l(fā)ight_switch.c”文件中復(fù)制部分代碼至“switch.c”文件中,并對復(fù)制后的程序進(jìn)行修改。第3步:保存“switch.c”文件。為了方便讀者閱讀,我們對本例程序以及后續(xù)程序中所出現(xiàn)的相關(guān)符號及稱謂作如下說明:

①代碼前面的數(shù)字為代碼在我們所編制的程序文件中的行號,在編寫程序時,這一部分不必錄入。

②無行號的行并不是一個代碼行,該行是由于上一行的內(nèi)容過多,在文檔編排時自動換行而成的,在代碼輸入時,應(yīng)將無行號行的內(nèi)容放在上一行尾部。例如,在下面的程序中,第33行后面的行無行號,該行并不是一個代碼行,它是第33行的內(nèi)容。

③代碼中的注釋在原樣例文件中并不存在,這一部分是我們?yōu)榉奖阕x者對程序的理解而添加的,這一部分可以不輸入。

④樣例文件是指復(fù)制代碼時代碼原來所在的文件。例如,我們在編制switch.c程序文件時,其代碼是從light_switch.c文件中復(fù)制來的,我們所說的switch.c的樣例文件就是指light_switch.c文件。

⑤注釋后面的數(shù)字為該行代碼在其樣例文件中的對應(yīng)行。例如,下面的程序中,第9代碼后面的注釋為“//18”,表示第9行代碼是從light_switch.c文件中第18行復(fù)制而成的。

⑥注釋部分為“//數(shù)字+改”的表示這一行代碼是根據(jù)其樣例文件中對應(yīng)行的代碼修改而成的。其中,“數(shù)字”為這一行代碼在其樣例文件中行號,“改”字表示這一行修改過,行中黑體部分為所修改的內(nèi)容。例如第72行代碼后面的注釋為“//174改”,表示switch.c文件中的第72行代碼是根據(jù)light_switch.c文件中第174行代碼修改而成,修改處為"halButtonPushed()==HAL_BUTTON_1"。

⑦代碼后面無行號注釋的表示該行代碼是我們根據(jù)功能要求而添加的程序代碼。

⑧為了方便讀者閱讀,在編制應(yīng)用程序時我們保留了樣例文件中部分代碼行之間的空行,在輸入程序時可以去掉這些空行。3、編制點(diǎn)燈程序文件light.c

方法如下:(1)按照新建switch.c文件的方法和步驟新建light.c文件。

(2)在light.c文件中添加程序代碼。從“l(fā)ight_switch.c”文件中復(fù)制部分代碼至“l(fā)ight.c”文件中,并對復(fù)制后的程序進(jìn)行修改。4、編譯下載程序

步驟如下:(1)將light.c文件添加至application組中。第1步:在窗口左邊的Workspace欄中,點(diǎn)擊light_switch工程名前的+號,將工程中的組結(jié)構(gòu)圖展開。第2步:右擊application組,在彈出的快捷菜單中單擊【Add】→【AddFiles】菜單命令項(xiàng),如圖2-13所示。然后在彈出的“AddFiles-application”對話框中選擇剛才所編制的light.c文件,再單擊“打開”按鈕,IAR就會將light.c文件添加到application組中,添加后的結(jié)果如圖2-14所示。圖2-13 在application組中添加文件圖2-14 application組中文件(2)移除application組中的多余文件

application組中的light_switch.c文件是TI公司提供給用戶的樣例文件。本例中,我們已從樣例文件中復(fù)制了相關(guān)代碼,程序編寫完畢后,樣例文件就是多余的了。另外,樣例文件中的許多變量、宏、函數(shù)等與我們所編制的應(yīng)用程序中的變量、宏、函數(shù)同名,程序編譯時會產(chǎn)生錯誤,因此需要將light_switch.c樣例文件從工程中移除出去。從application組中移除light_switch.c文件的方法如下:

用鼠標(biāo)右鍵點(diǎn)擊application組中的light_switch.c文件,在彈出的快捷菜單中單擊“Remove”菜單命令項(xiàng),如圖2-15所示,系統(tǒng)會彈出如圖2-16所示的移除確認(rèn)對話框。然后在移除確認(rèn)對話框中單擊“是”按鈕,IAR就會將所選擇的light_switch.c文件從工程中移除出去。圖2-15 從工程中移除light_switch.c文件圖2-16

移除確認(rèn)對話框(3)編譯、連接程序

單擊菜單欄上的“Project”→“make”菜單命令項(xiàng),IAR就會對工程中的文件進(jìn)行編譯、連接,并在build窗口中顯示編譯、連接后的結(jié)果,如圖

2-17所示。圖2-17

build窗口(4)連接仿真器。

連接仿真器的操作步驟如下:

第1步:用10P排線將仿真器上的10P牛角座與Zigbee模塊上的10P牛角座相連。

第2步:用USB線將仿真器上USB口與計算機(jī)上的USB口相接。第3步:用USB線將Zigbee模塊上的USB口與計算機(jī)上的USB口相接。

第4步

溫馨提示

  • 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

提交評論