高級(jí)教程之ble實(shí)戰(zhàn)47_第1頁(yè)
高級(jí)教程之ble實(shí)戰(zhàn)47_第2頁(yè)
高級(jí)教程之ble實(shí)戰(zhàn)47_第3頁(yè)
高級(jí)教程之ble實(shí)戰(zhàn)47_第4頁(yè)
高級(jí)教程之ble實(shí)戰(zhàn)47_第5頁(yè)
已閱讀5頁(yè),還剩42頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

BLE實(shí)戰(zhàn)——WT開發(fā)板系列Wolverine-Team2015/3/13BLE實(shí)戰(zhàn)——WT開發(fā)板系列Wolverine-Team2015/3/13目錄術(shù)語(yǔ)和定義 3一、開發(fā)板演示 3二、安裝Keil 目錄術(shù)語(yǔ)和定義 3一、開發(fā)板演示 3二、安裝Keil 3三、最簡(jiǎn)代碼 3四、在最簡(jiǎn)代碼的基礎(chǔ)上創(chuàng)建自己的應(yīng)用程序 31、創(chuàng)建一個(gè)新工程 3在最簡(jiǎn)代碼的基礎(chǔ)上創(chuàng)建一個(gè)新的應(yīng)用工程文件夾 3在最簡(jiǎn)代碼的基礎(chǔ)上創(chuàng)建一個(gè)新的Keil工程文件夾 4編輯自己的新建工程 4編輯工程目錄 4編輯工程頭文件的路徑 41.4編輯工程配置 4五、用戶使用的功能函數(shù) 4六、添加應(yīng)用程序配置文件 4添加profile文件 4將頭文件的路徑加入工程中 5使能profile 5將profile源文件添加進(jìn)工程 5將新加入的頭文件路徑加入工程中 5添加對(duì)應(yīng)的頭文件 5創(chuàng)建profile的數(shù)據(jù)并使能profile 5編譯運(yùn)行 5七、與 APP通信實(shí)驗(yàn) 8八、添加GPIO實(shí)驗(yàn) 12九、定時(shí)器實(shí)驗(yàn) 14十、模數(shù)轉(zhuǎn)換實(shí)驗(yàn) 16十一、中斷實(shí)驗(yàn) 18十二、I2C實(shí)驗(yàn) 20十三、SPI實(shí)驗(yàn) 22十四、串口實(shí)驗(yàn) 25十五、如何修改BLE的一些參數(shù) 28修改服務(wù)及特征值的UUID 28修改廣播數(shù)據(jù) 28修改MAC地址 28淘寶店 /官網(wǎng)地址:: /:Mooband魔環(huán)淘寶店 /官網(wǎng)地址:: /:Mooband魔環(huán)淘寶店 /術(shù)語(yǔ)和定義BLESDKUUIDAPPMACINTADCI2CSPIUART低功耗藍(lán)牙(BluetoothLowEnergy)軟件開發(fā)工具包(SoftwareDevelopmentKit)通用唯一標(biāo)識(shí)符(Universally術(shù)語(yǔ)和定義BLESDKUUIDAPPMACINTADCI2CSPIUART低功耗藍(lán)牙(BluetoothLowEnergy)軟件開發(fā)工具包(SoftwareDevelopmentKit)通用唯一標(biāo)識(shí)符(UniversallyUniqueIdentifier)控制(MediaAccessControl)通用輸入輸出(GeneralPurposeInput/Output)中斷(Interrupt)模數(shù)轉(zhuǎn)換(AnalogtoDigitalConverter)集成電路通信總線(Inter-IntegratedCircuitbus)串行外設(shè)接口(SerialPeripheralInterface)通用異步收發(fā)器(UniversalAsynchronousReceiver/Transmitter)一、開發(fā)板演示Keil參考《零基礎(chǔ)快速上三、最簡(jiǎn)代碼例程中哪些文件可以刪大限度的裁剪到何種程度,這樣我們才能更好地定制屬于我們自己的程序。例程可以最我們提供了最簡(jiǎn)代碼的工程Simple_Proj.uvproj,工程路徑為..\dk_apps\keil_projects\Simple_Proj\Simple_Proj,用戶可以在此基礎(chǔ)上一步步添加完善自己的程序。四、在最簡(jiǎn)代碼的基礎(chǔ)上創(chuàng)建自己的應(yīng)用程序1、創(chuàng)建一個(gè)新工程1.1在最簡(jiǎn)代碼的基礎(chǔ)上創(chuàng)建一個(gè)新的應(yīng)用工程文件夾(2)Simple_proj文件夾,并重新命名,如Test_Proj;(3)Test_Proj文件夾,將里面的兩個(gè)文件重命名,如app_simple_proj.c改為1.2Keil工程文件夾(1)打開文件夾dk_apps\keil_projects;(2)Simple_proj文件夾,并重命名,如Test_Proj;打開Test_Proj,將Simple_proj重命名為Test_Proj;打開Test_ProjSimple_proj.uvprojTest_proj.uvproj。淘寶店 /編輯自己的新建工程雙擊Test_proj.uvproj,打開Keil工程。編輯工程目錄由于一些文件已經(jīng)重命名,所以要在工程視圖中將因重命名而找不到的文件刪除,然后重新添加。編輯工程頭文件的路徑“Full_emb_cortex_M0”,選擇Optionsfor編輯自己的新建工程雙擊Test_proj.uvproj,打開Keil工程。編輯工程目錄由于一些文件已經(jīng)重命名,所以要在工程視圖中將因重命名而找不到的文件刪除,然后重新添加。編輯工程頭文件的路徑“Full_emb_cortex_M0”,選擇OptionsforTarget‘Full_emb_cortex_M0’,在彈出的新命名的路徑進(jìn)行修改。1.4編輯工程配置框中選擇“C/C++”,對(duì)重打開da14580_config.h文件,將“#defineCFG_APP_TEMPLATE”替換為“#defineCFG_APP_TEST”打開rwip_config.h文件,將下列代碼添加進(jìn)去:#ifdefined(CFG_APP_TEST)#defineBLE_APP_TEST1#else//defined(CFG_APP_TEST)#defineBLE_APP_TEST0#endif//defined(CFG_APP_TEST)打開app_api.h文件,加入以下代碼:#if(BLE_APP_TEST)#include"app_test_proj.h"#endif)打開app_test_proj.c文件,將“#include"app_simple_proj.h"為“#include"app_test_proj.h"”。五、用戶使用的功能函數(shù)一系列的回調(diào)函數(shù)已經(jīng)在app_test_proj.cBLE應(yīng)用基本代碼使用的,不可以刪除。六、添加應(yīng)用程序配置文件下面進(jìn)行應(yīng)用代碼初始化,并將DISS(DeviceInformationServiceServer)服務(wù)配置加入到應(yīng)用程序中。6.1profile文件右擊profilesAddExistingFilestoGroup‘a(chǎn)pp’為..\dk_apps\src\ip\ble\hl\src\profiles\dis\diss,添加diss.c與diss_task.c文件。同樣的方法,在目錄..\dk_apps\src\ip\ble\hl\src\profiles下,繼續(xù)添加prf_utils.c文件,如下圖所示:淘寶店 /6.2將頭文件的路徑加入工程中“F_mcrx6.2將頭文件的路徑加入工程中“F_mcrx0OosrTrt‘Flmcrx0’,并選擇“C/C++”以及路徑DBoard_BLE\dk_apps\src\ip\ble\hl\src\profiles添加加進(jìn)去,如果已經(jīng)有則可以不添加,如下圖所示:6.3profile打開da14580_config.h文件,將#undefCFG_PRF_DISS改為#defineCFG_PRF_DISS,如下圖所示:淘寶店 /BLE_DIS_SERCER1DISSprofile源代碼文件添加進(jìn)工程中,如下圖所示:6.4BLE_DIS_SERCER1DISSprofile源代碼文件添加進(jìn)工程中,如下圖所示:6.4profile應(yīng)用文件添加進(jìn)工程右擊appAddExistingFilestoGroup‘a(chǎn)pp’dk_apps\src\modules\app\src\app_profiles\diss,添加app_diss.c與app_diss_task.c文件。如下圖所示:6.5將新加入的頭文件路徑加入工程中“Flmcrx0”O(jiān)osrTrt‘Flmcrx0’,并選擇“C/C++”所示:添加進(jìn)去。如下圖淘寶店 /6.6添加對(duì)應(yīng)的頭文件在app_test_proj.h文件中加入以下代碼添加頭文件:#if(BLE_DIS_SERVER)#include“app_dis.h”6.6添加對(duì)應(yīng)的頭文件在app_test_proj.h文件中加入以下代碼添加頭文件:#if(BLE_DIS_SERVER)#include“app_dis.h”#include“app_dis_task.h”#endif如下圖所示:6.7profileprofile在app_myproject_proj.c文件中的app_db_init_func()函數(shù)中添加以下代碼:#if(BLE_DIS_SERVER)case(APP_DIS_TASK):{app_dis_create_db_send();}break;#endif//BLE_DIS_SERVER如下圖所示:淘寶店 /在該文件下的app_connection_func()函數(shù)中添加如下代碼:#if(BLE_DIS_SERVER)app_dis_enable_prf(app_env.conhdl);#endif如下圖所示:6.8在該文件下的app_connection_func()函數(shù)中添加如下代碼:#if(BLE_DIS_SERVER)app_dis_enable_prf(app_env.conhdl);#endif如下圖所示:6.8編譯運(yùn)行現(xiàn)在可以通過(guò)編譯Debugger運(yùn)行應(yīng)用程序了。打開APP會(huì)自動(dòng)搜索設(shè)備,搜索到設(shè)備之后點(diǎn)擊連接,點(diǎn)擊設(shè)備信息服務(wù),可以看到設(shè)備信息,如下圖所示:淘寶店 /淘寶店 /淘寶店 /淘寶店 /淘寶店 /七、Profile講解Profile介紹Profile即指七、Profile講解Profile介紹Profile即指BLE的配置文件。藍(lán)牙配置文件為可行應(yīng)用的定義,說(shuō)明了藍(lán)牙設(shè)備與其它數(shù)據(jù)結(jié)構(gòu)、消息以及對(duì)應(yīng)消息的處理函數(shù)等。每個(gè)藍(lán)牙配置文件都至少包含下列方面的信息:對(duì)其它配置文件的依賴性建議的用戶界面格式配置文件所采用的藍(lán)牙協(xié)議棧特定部分。為履行任務(wù),各配置文件在協(xié)議棧的各層淘寶店 /級(jí)采用特定的選項(xiàng)和參數(shù),這可能包括(如適用)所需服務(wù)的概要目前已有許多配置文件被藍(lán)牙技術(shù)采納,這里我們只列出基于GATT的配置文件如下:淘寶店 /GATT說(shuō)明ANP警報(bào)通知配置文件令客戶端設(shè)備能夠接收不同類型的警報(bào)和 器設(shè)備上的新警告及未 項(xiàng)目的計(jì)數(shù)信息。ANS警報(bào)通知服務(wù)顯示不同類型的警告。BAS電池服務(wù)顯示設(shè)備的電池狀態(tài)。BLP血壓配置文件業(yè)健康護(hù)理應(yīng)用。BLS血壓服務(wù)健康護(hù)理應(yīng)用。CTS當(dāng)前時(shí)間服務(wù)(GATT)顯示當(dāng)前時(shí)間。DIS設(shè)備信息服務(wù)顯示設(shè)備的制造商信息。FMPFindMe定義按壓一臺(tái)設(shè)備上的按鈕觸動(dòng)同類設(shè)備的警告信號(hào)的行為。HTP健康體溫計(jì)配置文件應(yīng)用。HRP心率配置文件令收集設(shè)備可與心率傳感器連接和互動(dòng),以供用于健身應(yīng)用。HRS心率服務(wù)顯示心率傳感器的心率和其它數(shù)據(jù),旨在用于健身設(shè)備。HIDSHIDHIDHIDHIDHID備。HOGP基于GATTHID件定義使用低耗能無(wú)線通信的設(shè)備如何采用通用屬性配置文件支持基于HIDIAS即時(shí)警報(bào)服務(wù)級(jí)采用特定的選項(xiàng)和參數(shù),這可能包括(如適用)所需服務(wù)的概要目前已有許多配置文件被藍(lán)牙技術(shù)采納,這里我們只列出基于GATT的配置文件如下:淘寶店 /GATT說(shuō)明ANP警報(bào)通知配置文件令客戶端設(shè)備能夠接收不同類型的警報(bào)和 器設(shè)備上的新警告及未 項(xiàng)目的計(jì)數(shù)信息。ANS警報(bào)通知服務(wù)顯示不同類型的警告。BAS電池服務(wù)顯示設(shè)備的電池狀態(tài)。BLP血壓配置文件業(yè)健康護(hù)理應(yīng)用。BLS血壓服務(wù)健康護(hù)理應(yīng)用。CTS當(dāng)前時(shí)間服務(wù)(GATT)顯示當(dāng)前時(shí)間。DIS設(shè)備信息服務(wù)顯示設(shè)備的制造商信息。FMPFindMe定義按壓一臺(tái)設(shè)備上的按鈕觸動(dòng)同類設(shè)備的警告信號(hào)的行為。HTP健康體溫計(jì)配置文件應(yīng)用。HRP心率配置文件令收集設(shè)備可與心率傳感器連接和互動(dòng),以供用于健身應(yīng)用。HRS心率服務(wù)顯示心率傳感器的心率和其它數(shù)據(jù),旨在用于健身設(shè)備。HIDSHIDHIDHIDHIDHID備。HOGP基于GATTHID件定義使用低耗能無(wú)線通信的設(shè)備如何采用通用屬性配置文件支持基于HIDIAS即時(shí)警報(bào)服務(wù)顯示控制點(diǎn),允許同類設(shè)備促使該設(shè)備發(fā)出即時(shí)警報(bào)。LLS鏈路丟失服務(wù)定義兩個(gè)設(shè)備之間的 丟失行為。NDCS務(wù)(GATT)顯示有關(guān)下個(gè)日光節(jié)約時(shí)間更改的信息。PASP警報(bào)狀態(tài)配置文件令PUID設(shè)備可警告用戶與PUID設(shè)備連接的 狀態(tài)。PASS警報(bào)狀態(tài)服務(wù)顯示處于連接中的 的警報(bào)狀態(tài)。PXP近距傳感配置文件啟動(dòng)兩個(gè)設(shè)備的近距 。RTUS參考時(shí)間更新服務(wù)(GATT)要求時(shí)間服務(wù)器更新參考時(shí)間來(lái)源。ScPP掃描參數(shù)配置文件定義采用低耗能無(wú)線通信的掃描客戶端設(shè)備如何將它的客戶端掃描行為。ScPS掃描參數(shù)服務(wù)令GATT客戶端可 其在GATT服務(wù)器設(shè)備上使用的低耗能其它具體的信息可以參考藍(lán)牙開發(fā)者門戶,為: 。7.2下面我們以DISS(設(shè)備信息服務(wù))的profile為例來(lái)講解一個(gè)profile需要定義哪些數(shù)據(jù)結(jié)構(gòu),消息以及對(duì)應(yīng)的處理函數(shù)之間的關(guān)系。7.2.1文件定義SDK其它具體的信息可以參考藍(lán)牙開發(fā)者門戶,為: 。7.2下面我們以DISS(設(shè)備信息服務(wù))的profile為例來(lái)講解一個(gè)profile需要定義哪些數(shù)據(jù)結(jié)構(gòu),消息以及對(duì)應(yīng)的處理函數(shù)之間的關(guān)系。7.2.1文件定義SDKprofile4個(gè)文件,分別為:xx.h,xx.c,xx_task.h,xx_task.c。其中xx.h文件定義了服務(wù)、特征值、UUID、環(huán)境變量等;xx.c文件對(duì)服務(wù)、特征值以及配文件定義了消息對(duì)應(yīng)的處理函數(shù)。DISS的4個(gè)文件為:diss.h、diss.c、diss_task.h、diss_task.c,如下圖所示:7.2.2diss.h服務(wù)及特征值的定義如下圖所示:淘寶店 /優(yōu)化能耗和/或重新連接延遲。TIP時(shí)間配置文件時(shí)間相關(guān)的功能。TPS服務(wù)顯示處于連接中的設(shè)備的當(dāng)前 水平。DISS環(huán)境結(jié)構(gòu)體變量定義,如下圖所示:定義外部全局變量服務(wù)、特征值描述,環(huán)境變量定義,如下圖所示:淘寶店 /DISS環(huán)境結(jié)構(gòu)體變量定義,如下圖所示:定義外部全局變量服務(wù)、特征值描述,環(huán)境變量定義,如下圖所示:淘寶店 /7.2.3diss.c數(shù)據(jù)描述,定義一些權(quán)限等,加入到協(xié)議棧數(shù)據(jù)庫(kù)時(shí)需要使用,如下圖所示:服務(wù)與特征值描述賦值,如下圖所示:淘寶店 /7.2.3diss.c數(shù)據(jù)描述,定義一些權(quán)限等,加入到協(xié)議棧數(shù)據(jù)庫(kù)時(shí)需要使用,如下圖所示:服務(wù)與特征值描述賦值,如下圖所示:淘寶店 /下面定義一些配置文件相關(guān)的方法,如下圖所示:7.2.4diss_task.h定義DISS任務(wù)的狀態(tài),一般有三種狀態(tài),分別為:不可用、空閑、連接,最后要加上最多狀態(tài)數(shù),如下圖所示:淘寶店下面定義一些配置文件相關(guān)的方法,如下圖所示:7.2.4diss_task.h定義DISS任務(wù)的狀態(tài),一般有三種狀態(tài),分別為:不可用、空閑、連接,最后要加上最多狀態(tài)數(shù),如下圖所示:淘寶店 /定義配置文件相關(guān)的消息,第一個(gè)消息必須與DISS任務(wù)相關(guān)聯(lián),如下圖所示:定義消息相關(guān)的結(jié)構(gòu)體變量,如下圖所示:淘寶店 /定義配置文件相關(guān)的消息,第一個(gè)消息必須與DISS任務(wù)相關(guān)聯(lián),如下圖所示:定義消息相關(guān)的結(jié)構(gòu)體變量,如下圖所示:淘寶店 /7.2.5diss_task.c定義消息相關(guān)的處理函數(shù),如下圖所示:給消息處理結(jié)構(gòu)體賦值,即將消息與對(duì)應(yīng)的消息處理函數(shù)相關(guān)連,并指定每個(gè)狀態(tài)下接收對(duì)應(yīng)的消息,如下圖所示:應(yīng)用層配置文件定義定義好配置文件后,需要添加對(duì)應(yīng)配置的服務(wù),則需要定義對(duì)應(yīng)的應(yīng)用層文件,一般也47.2.5diss_task.c定義消息相關(guān)的處理函數(shù),如下圖所示:給消息處理結(jié)構(gòu)體賦值,即將消息與對(duì)應(yīng)的消息處理函數(shù)相關(guān)連,并指定每個(gè)狀態(tài)下接收對(duì)應(yīng)的消息,如下圖所示:應(yīng)用層配置文件定義定義好配置文件后,需要添加對(duì)應(yīng)配置的服務(wù),則需要定義對(duì)應(yīng)的應(yīng)用層文件,一般也4個(gè)文件,分別為:app_xx.h、app_xx.c、app_xx_task.h、app_xx_task.c。DISS4個(gè)文件為:app_dis.h、app_dis.c、app_dis_task.h、app_dis_task.c,如下圖所示:淘寶店 /7.3.2app_dis.h定義應(yīng)用先關(guān)的變量以及app_dis.c中的函數(shù),如下圖所示:7.3.3app_dis.c配置文件應(yīng)用程序的,定義創(chuàng)建數(shù)據(jù)函數(shù)以及使能配置文件,如下圖所示:淘寶店 /7.3.2app_dis.h定義應(yīng)用先關(guān)的變量以及app_dis.c中的函數(shù),如下圖所示:7.3.3app_dis.c配置文件應(yīng)用程序的,定義創(chuàng)建數(shù)據(jù)函數(shù)以及使能配置文件,如下圖所示:淘寶店 /7.3.4app_dis_task.happ_dis_task.c文件中函數(shù)的,如下圖所示:3.5app_dis_task.c定義應(yīng)用層實(shí)現(xiàn)功能的函數(shù),如完成創(chuàng)建數(shù)據(jù)之后的處理函數(shù),該函數(shù)必不可少,如下7.3.4app_dis_task.happ_dis_task.c文件中函數(shù)的,如下圖所示:3.5app_dis_task.c定義應(yīng)用層實(shí)現(xiàn)功能的函數(shù),如完成創(chuàng)建數(shù)據(jù)之后的處理函數(shù),該函數(shù)必不可少,如下圖所示:淘寶店 /7.4消息處理函數(shù)下面以消息DISS_CREATE_DB_REQ以及對(duì)應(yīng)消息處理函數(shù)diss_create_db_req_handler的調(diào)用過(guò)程進(jìn)行講解。DA14580的協(xié)議棧是基于RivieraWaves7.4消息處理函數(shù)下面以消息DISS_CREATE_DB_REQ以及對(duì)應(yīng)消息處理函數(shù)diss_create_db_req_handler的調(diào)用過(guò)程進(jìn)行講解。DA14580的協(xié)議棧是基于RivieraWavesRivieraWaves系統(tǒng)》中的消息機(jī)制。應(yīng)用層先消息DISS_CREATE_DB_REQ給協(xié)議棧,如下圖所示:協(xié)議棧收到消息DISS_CREATE_DB_REQ之后,就會(huì)調(diào)用對(duì)應(yīng)的消息處理函數(shù)diss_create_db_req_handler,如下圖所示:淘寶店 /由于等原因,內(nèi)核具體的調(diào)用過(guò)程及代碼我們是看不到的。將內(nèi)核代碼打包成.obj庫(kù)文件,無(wú)法看到源碼,所以這里我們只要了解消息如何調(diào)用的即可。7.5Profile程序流程首先添加對(duì)應(yīng)Profile的數(shù)據(jù)信息,如下圖所示:根據(jù)上面函數(shù)的信息,調(diào)用由于等原因,內(nèi)核具體的調(diào)用過(guò)程及代碼我們是看不到的。將內(nèi)核代碼打包成.obj庫(kù)文件,無(wú)法看到源碼,所以這里我們只要了解消息如何調(diào)用的即可。7.5Profile程序流程首先添加對(duì)應(yīng)Profile的數(shù)據(jù)信息,如下圖所示:根據(jù)上面函數(shù)的信息,調(diào)用diss_create_db_req_handler函數(shù),如下圖所示:根據(jù)上面函數(shù)的信息,調(diào)用diss_create_db_cfm_handler函數(shù),如下圖所示:淘寶店 /根據(jù)上面函數(shù)的信息,調(diào)用diss_create_db_cfm_handler函數(shù),如下圖所示:上面調(diào)用的函數(shù)plete_func()中調(diào)用了廣播函數(shù),如下圖所示:到此,設(shè)備開始廣播,其它設(shè)備就可以搜索到該設(shè)備。如果其它設(shè)備發(fā)來(lái)連接請(qǐng)求,則會(huì)觸發(fā)設(shè)備的請(qǐng)求連接消息的處理函數(shù),如下圖所示:淘寶店 /根據(jù)上面函數(shù)的信息,調(diào)用diss_create_db_cfm_handler函數(shù),如下圖所示:上面調(diào)用的函數(shù)plete_func()中調(diào)用了廣播函數(shù),如下圖所示:到此,設(shè)備開始廣播,其它設(shè)備就可以搜索到該設(shè)備。如果其它設(shè)備發(fā)來(lái)連接請(qǐng)求,則會(huì)觸發(fā)設(shè)備的請(qǐng)求連接消息的處理函數(shù),如下圖所示:淘寶店 /上面調(diào)用的函數(shù)app_connection_func中調(diào)用了服務(wù)使能函數(shù),如下圖所示:app_dis_enable_prf中服務(wù)使能消息DISS_ENABLE_REQ,如下圖所示:根據(jù)上面函數(shù)的信息,調(diào)用diss_enable_req_handler上面調(diào)用的函數(shù)app_connection_func中調(diào)用了服務(wù)使能函數(shù),如下圖所示:app_dis_enable_prf中服務(wù)使能消息DISS_ENABLE_REQ,如下圖所示:根據(jù)上面函數(shù)的信息,調(diào)用diss_enable_req_handler函數(shù),如下圖所示:淘寶店 /DISS服務(wù)使能之后,APP中就可以看到該服務(wù)以及該服務(wù)下的特征值。八、與APP通信實(shí)驗(yàn)SDK的例程基礎(chǔ)上修改,進(jìn)行與下面我們?cè)谀夸浵?。APP通信的實(shí)驗(yàn)。APP軟件位于打開數(shù)據(jù)吞吐量測(cè)試?yán)蘤h_project_throughput_eval_peripheral.uvproj,位于目錄DISS服務(wù)使能之后,APP中就可以看到該服務(wù)以及該服務(wù)下的特征值。八、與APP通信實(shí)驗(yàn)SDK的例程基礎(chǔ)上修改,進(jìn)行與下面我們?cè)谀夸浵?。APP通信的實(shí)驗(yàn)。APP軟件位于打開數(shù)據(jù)吞吐量測(cè)試?yán)蘤h_project_throughput_eval_peripheral.uvproj,位于目錄dk_apps\keil_projects\throughput_eval\throughput_eval_peripheral_fh下。打開streamdatad.h文件,修改服務(wù)以及特征值的UUID,UUID為服務(wù)與特征值的通用唯一標(biāo)識(shí),APP通過(guò)UUID來(lái)檢測(cè)服務(wù)與特征值,如果UUID不對(duì),則連接不上。如下圖紅框所示:之后在srmdask文件中將使用的兩個(gè)特征值的長(zhǎng)度修改為0淘寶店 /性20個(gè)字節(jié)(不能比20大),找到接收數(shù)據(jù)進(jìn)入的函數(shù),然后在接收特征值的case語(yǔ)句下將接收值使用memcpy函數(shù)給變量,就可以得到 APP過(guò)來(lái)的數(shù)據(jù),如下圖所示:,利用這些語(yǔ)句可以將內(nèi)容顯示在 APP上。最下面的紅框部分語(yǔ)句為數(shù)據(jù)給修改好之后,編譯,插上JLINK進(jìn)行DEBUG,打開APP,點(diǎn)擊性20個(gè)字節(jié)(不能比20大),找到接收數(shù)據(jù)進(jìn)入的函數(shù),然后在接收特征值的case語(yǔ)句下將接收值使用memcpy函數(shù)給變量,就可以得到 APP過(guò)來(lái)的數(shù)據(jù),如下圖所示:,利用這些語(yǔ)句可以將內(nèi)容顯示在 APP上。最下面的紅框部分語(yǔ)句為數(shù)據(jù)給修改好之后,編譯,插上JLINK進(jìn)行DEBUG,打開APP,點(diǎn)擊Connect搜索到數(shù)據(jù),就會(huì)接收到同樣的數(shù)據(jù),如下圖所示:淘寶店 /淘寶店 /淘寶店 /淘寶店 /淘寶店 /GPIO實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為, APP1,則開發(fā)板上LED4亮,2,則開發(fā)板上LED4GPIO實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為, APP1,則開發(fā)板上LED4亮,2,則開發(fā)板上LED4滅。文件中的GPIO_reservations()函數(shù)中添加RESERVE_GPIO(GPIO,GPIO_PORT_0GPIO_PIN_7PID_GPIO);,在set_pad_function()函數(shù)中添加GPIO_PIN_7OUTPUTPID_GPIOfalse);,如下圖所示:淘寶店 /首先在streamdatad_task.c文件中添加頭文件gpio.h,在接收函數(shù)中添加判斷與亮燈、滅燈的語(yǔ)句。如下圖所示:淘寶店 /首先在streamdatad_task.c文件中添加頭文件gpio.h,在接收函數(shù)中添加判斷與亮燈、滅燈的語(yǔ)句。如下圖所示:淘寶店 /十、定時(shí)器實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為: s,則啟動(dòng)定時(shí)器,并且LED4開始閃爍,并且LED4停止閃爍。e,則關(guān)閉定時(shí)器,在分組driver下,添加驅(qū)動(dòng)文件pwm.c,并將十、定時(shí)器實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為: s,則啟動(dòng)定時(shí)器,并且LED4開始閃爍,并且LED4停止閃爍。e,則關(guān)閉定時(shí)器,在分組driver下,添加驅(qū)動(dòng)文件pwm.c,并將pwm.h所在的路徑加到工程中,如下圖所示:periph_setup.c文件中定義定時(shí)器初始化函數(shù)timer_init()與中斷回調(diào)函數(shù)timer_callback(),并添加至periph_init()函數(shù)中,如下圖所示:淘寶店 /時(shí)器語(yǔ)句,如下圖所示:淘寶店 /時(shí)器語(yǔ)句,如下圖所示:淘寶店 /十一、模數(shù)轉(zhuǎn)換實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為:通過(guò)模數(shù)轉(zhuǎn)換測(cè)量電池電量,t,將轉(zhuǎn)換結(jié)果APP顯示。在分組driver下,添加驅(qū)動(dòng)文件adc.c,并將adc.h所在的路徑加到工程中,如下圖所示:淘寶店十一、模數(shù)轉(zhuǎn)換實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為:通過(guò)模數(shù)轉(zhuǎn)換測(cè)量電池電量,t,將轉(zhuǎn)換結(jié)果APP顯示。在分組driver下,添加驅(qū)動(dòng)文件adc.c,并將adc.h所在的路徑加到工程中,如下圖所示:淘寶店 /在periph_setup.c文件中添加頭文件adc.h,并初始化對(duì)應(yīng)引腳,將初始化函數(shù)adc_init()添加至periph_init()函數(shù)中,如下圖所示:在periph_setup.c文件中添加頭文件adc.h,并初始化對(duì)應(yīng)引腳,將初始化函數(shù)adc_init()添加至periph_init()函數(shù)中,如下圖所示:淘寶店 /在streamdatad_task.c文件中添加頭文件adc.h,并在接收函數(shù)中添加判斷、測(cè)量與句,如下圖所示:語(yǔ)十二、中斷實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為:通過(guò)按鍵中斷,向APP字符,按鍵B2B3。該實(shí)驗(yàn)不需要另外添加文件,在在streamdatad_task.c文件中添加頭文件adc.h,并在接收函數(shù)中添加判斷、測(cè)量與句,如下圖所示:語(yǔ)十二、中斷實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為:通過(guò)按鍵中斷,向APP字符,按鍵B2B3。該實(shí)驗(yàn)不需要另外添加文件,在periph_setup.c文件中添加頭文件prf_utils.h,attm_db.h,streamdatad.h,配置中斷引腳,定義初始化函數(shù)及中斷函數(shù),并將初始化函數(shù)gpio_init()添加至periph_init()函數(shù)中,如下圖所示:淘寶店 /淘寶店 /淘寶店 /注意:在協(xié)議棧中添加中斷函數(shù),需要在rom_symdef.txt文件中將對(duì)應(yīng)的中斷注釋,在前面加分號(hào)即可,該文件位于目錄DBoard_BLE\dk_apps\misc下。十三、I2C實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為:通過(guò)I2C接口控制實(shí)時(shí)時(shí)鐘,t,將時(shí)間注意:在協(xié)議棧中添加中斷函數(shù),需要在rom_symdef.txt文件中將對(duì)應(yīng)的中斷注釋,在前面加分號(hào)即可,該文件位于目錄DBoard_BLE\dk_apps\misc下。十三、I2C實(shí)驗(yàn)實(shí)驗(yàn)實(shí)現(xiàn)的功能為:通過(guò)I2C接口控制實(shí)時(shí)時(shí)鐘,t,將時(shí)間APP顯示。在分組driver下,添加驅(qū)動(dòng)文件i2c_eeprom.c,并將i2c_eeprom.h所在的路徑加到工程中,如下圖所示:i2c_eeprom.h,并初始化對(duì)應(yīng)引腳,定義實(shí)時(shí)時(shí)鐘初始淘寶店 /化函數(shù),將初始化函數(shù)rtc_init();添加至periph_init()函數(shù)中,如下圖所示:淘寶店 /化函數(shù),將初始化函數(shù)rtc_init();添加至periph_init()函數(shù)中,如下圖所示:淘寶店 /i2c_eeprom.h,并在接收函數(shù)中添加判斷,數(shù)據(jù),轉(zhuǎn)換格式并語(yǔ)句,如下圖所示:十四、SPI實(shí)驗(yàn)本實(shí)驗(yàn)需要兩個(gè)板子,一個(gè)板子作為從設(shè)備,程序及步驟見《機(jī)(程序講解)》中的SPI實(shí)驗(yàn)中的從設(shè)備。另一個(gè)板子作為主設(shè)備,有藍(lán)牙協(xié)議棧,實(shí)現(xiàn)的功能有,APP1,從設(shè)備上的LED4亮,2從設(shè)備上的i2c_eeprom.h,并在接收函數(shù)中添加判斷,數(shù)據(jù),轉(zhuǎn)換格式并語(yǔ)句,如下圖所示:十四、SPI實(shí)驗(yàn)本實(shí)驗(yàn)需要兩個(gè)板

溫馨提示

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

評(píng)論

0/150

提交評(píng)論