0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

快速入門BlueNRG SDK固件開發(fā)流程

STM32單片機 ? 來源:STM32單片機 ? 2024-01-13 10:43 ? 次閱讀

01

前言

本文檔指導(dǎo)用戶快速地對 BlueNRG SDK 有一個直觀、清晰的認識,了解其軟件架構(gòu),以便順利地學(xué)會利用 SDK 開發(fā)自己的用戶固件。

本文檔所述 SDK 為 BlueNRG-LP/LPS 芯片的 SDK。閱讀本文檔前,用戶應(yīng)先了解BlueNRG-LP/LPS 芯片的一些基本特性,以及其配套開發(fā)板的燒錄方式。

02

SDK 目錄

從 ST 官網(wǎng)下載 SDK 的安裝包,成功安裝后,即可獲得一個 SDK 目錄。見圖 1:

53730a20-b131-11ee-8b88-92fbcf53809c.jpg

圖1.SDK 目錄

各個目錄的功能說明見表 1:

537b16ca-b131-11ee-8b88-92fbcf53809c.jpg

表1. SDK 目錄說明

BlueNRG SDK 安裝目錄為用戶工程師開發(fā) BlueNRG 平臺提供了一個便捷的入口,舉例來說,有以下幾個場景:

1. 硬件工程師設(shè)計 PCB 前,可通過 Docs 目錄找到硬件設(shè)計指導(dǎo)文檔。完成 PCBA 制作后,可自行使用 Navigator 工具通過串口燒錄 Firmware 下的應(yīng)用固件,驗證板子功能。

2. 當工程師想用板子進行功耗、射頻測試時,也可在 Firmware 目錄下找到合適的已經(jīng)編譯好的固件(測 SOC 藍牙功耗可用 Beacon,測射頻參數(shù)可用 DTM)

3. 固件工程師可在 Projects 目錄下找到豐富的例程,并且可使用 KEIL、IAR、WiSE 任一個IDE 打開工程、編譯、下載。

03

SDK 例程

SDK Projects 目錄包含了以下三類例程:

1. Periph_Examples:包含了芯片外設(shè)驅(qū)動例程。

2. External_Micro :包含了外部單片機的例程,應(yīng)用于 BlueNRG 芯片在系統(tǒng)中作為協(xié)處理器的場景。

3. BLE_Examples :包含了藍牙相關(guān)的所有例程,這些例程的工程特性展示如下:

538e46c8-b131-11ee-8b88-92fbcf53809c.jpg

表2. BLE 例程說明

04

快速實現(xiàn)用戶固件功能

本章節(jié)指導(dǎo)用戶如何快速地在 SDK 中找到相應(yīng)的 API 接口和位置,以便掌握在 SDK 例程上添加自己的配置和用戶邏輯代碼的方式。

在對 SDK 提供的例程的功能有所了解之后,假設(shè)用戶面臨的一個開發(fā)任務(wù)是:

1. BLE 從機功能,包含以下配置:

a. 一個服務(wù),一個特征,特征具備 Write、Notify 屬性

b. 設(shè)備廣播名為“Hello”

2. 使用手機 BLE 工具和設(shè)備通訊,打印通訊過程產(chǎn)生的數(shù)據(jù)

3. 自定義協(xié)議,實現(xiàn)以下功能:

a. 控制 LED 亮滅

b. 定時 1s 上傳心跳包,內(nèi)容為連接后的秒計數(shù)值

c. 每次按鍵上傳按鍵事件通知

基于以上任務(wù),我們可以選擇 BLE_SerialPort 工程作為基礎(chǔ)工程并以此來進行固件開發(fā)。

4.1. 驗證原始工程

在添加用戶代碼之前,我們最好先驗證了原始工程(BLE_SerialPort)的功能,確保開發(fā)環(huán)境正常。新建一個用戶工程目錄,比如,test_sdk1.3.0,然后從 SDK 目錄拷貝以下文件到我們的用戶工程目錄,見圖 2:

539dfeb0-b131-11ee-8b88-92fbcf53809c.jpg

圖2.用戶工程目錄

打開 Projects > BLE_SerialPort 的 Keil 工程,勾選“Browse Information”選項,以便使能工程內(nèi)函數(shù)的跳轉(zhuǎn),同時選中 Server 工程配置,見圖 3,圖 4:

53af0764-b131-11ee-8b88-92fbcf53809c.jpg

圖3.Browse Information

53b92c76-b131-11ee-8b88-92fbcf53809c.jpg

圖4.選中 Server 工程配置

編譯、下載工程到開發(fā)板,工程運行起來后,應(yīng)能見到以下打印信息

53d13186-b131-11ee-8b88-92fbcf53809c.jpg

圖5.BLE_SerialPort 工程 LOG 信息

使用 STBLE Toolbox 工具掃描該設(shè)備,應(yīng)能看到設(shè)備名為“Sport_LP”,見圖 6:

53e0d33e-b131-11ee-8b88-92fbcf53809c.jpg

圖6.STBLE Toolbox 掃描頁面

至此,原始工程已經(jīng)正常運行起來了。該工程實現(xiàn)了自定義服務(wù)、特征的功能,并能通過串口和手機進行數(shù)據(jù)的收發(fā)。要完成此次開發(fā)任務(wù),我們只需在特定位置修改一些代碼即可。

4.2. 配置 BLE 從機功能

原始工程有兩個特征,一個負責(zé)發(fā)(TX_CHR_UUID),一個負責(zé)收(RX_CHR_UUID)。按照要求,我們需要把他們合并為一個可以收、發(fā)的特征。圖 6 演示了定義新的特征 UUID 并注釋掉舊的兩個特征 UUID 的方式:

53f17356-b131-11ee-8b88-92fbcf53809c.jpg

圖7.特征 UUID

協(xié)議棧提供了 ble_gatt_chr_def_t 類型結(jié)構(gòu)體,用戶可以定義一個結(jié)構(gòu)體變量并賦值,以此來聲明一個特征。圖 7 展示了我們所需的特征配置的相關(guān)賦值過程,圖中可見特征的 UUID 聲明,特征 notify、write 屬性聲明,特征的特征描述符聲明等信息。另外,舊的兩個特征應(yīng)該注釋掉。

53fe6cdc-b131-11ee-8b88-92fbcf53809c.jpg

圖8.定義特征

將新的特征配置賦值給服務(wù)聲明,特征的數(shù)量修改為 1 個:

541a9448-b131-11ee-8b88-92fbcf53809c.jpg

圖9.特征聲明賦值給服務(wù)聲明

上述服務(wù)、特征相關(guān)的數(shù)據(jù)結(jié)構(gòu)配置完畢,我們還需要將這些配置通過 API 傳遞給協(xié)議棧。

首先,需要先定義一個新的句柄,所謂句柄,簡單地說,用戶在進行數(shù)據(jù)收發(fā)的時候,需要選擇在哪個特征上進行數(shù)據(jù)收發(fā),此時便需要句柄來指定特征(句柄本質(zhì)上便是 attribute 的handle 字段)。原來的兩個句柄也要注釋掉,見圖 10

542262a4-b131-11ee-8b88-92fbcf53809c.jpg

圖10. 句柄

然后,將上文定義好的服務(wù)、特征通過 aci_gatt_srv_add_service 函數(shù)一次性傳送給協(xié)議棧,協(xié)議棧對這些配置進行解析、構(gòu)建完整的 ATT 屬性表,保存在內(nèi)存中。之后,用戶可使用aci_gatt_srv_get_char_decl_handle 接口獲取已分配好的句柄(見圖 11),此后的數(shù)據(jù)交互過程將頻繁使用該句柄。

542a672e-b131-11ee-8b88-92fbcf53809c.jpg

圖11. 獲取句柄

至此,GATT 相關(guān)的配置已經(jīng)完成。但是,由于上層大量引用了舊的兩個句柄進行數(shù)據(jù)收發(fā),因此此時編譯會出現(xiàn)比較多的錯誤,此處暫不處理這些錯誤,先完成其他的 BLE 配置。

接下來修改藍牙地址,并修改廣播名,見圖 12:

54343d12-b131-11ee-8b88-92fbcf53809c.jpg

圖12. 藍牙地址和廣播名

廣播名的長度改變后,應(yīng)注意指定其長度:

54472d78-b131-11ee-8b88-92fbcf53809c.jpg

圖13. 廣播名長度

LOCAL_NAME 設(shè)置的是廣播包里的設(shè)備名,當設(shè)備連接成功后,主機會從 GAP Profile 的device name 特征里獲取另外一個設(shè)備名,此處應(yīng)保持這兩個名字一致:

5450bbc2-b131-11ee-8b88-92fbcf53809c.jpg

圖14. 設(shè)備名

54596e7a-b131-11ee-8b88-92fbcf53809c.jpg

圖15. 設(shè)置設(shè)備名

至此,關(guān)于藍牙的應(yīng)用配置即告完畢。接下來可進行數(shù)據(jù)通訊相關(guān)的配置、實現(xiàn)。

4.3.和手機進行通訊

上一小節(jié)配置完從機功能后,編譯會產(chǎn)生大量錯誤,是因為 BLE 的通訊過程會比較多地引用舊的句柄。循著解決這些編譯錯誤的操作,我們能了解到 BLE 通訊的過程。具體操作如下:

全局搜索舊的發(fā)送句柄(TXCharHanlde),我們找到了用于數(shù)據(jù)發(fā)送的協(xié)議棧 API,修正之 :

546a6522-b131-11ee-8b88-92fbcf53809c.jpg

圖16. 發(fā)送 Notify

手機使能訂閱后,會通過圖 17 的回調(diào)函數(shù)通知上層。此時應(yīng)該修改為新的特征句柄,同時,添加一些打印指示 notify 的使能、禁用狀態(tài):

547e3822-b131-11ee-8b88-92fbcf53809c.jpg

圖17. 使能訂閱回調(diào)

添加新的特征句柄全局變量聲明,注釋掉舊的:

54873fb2-b131-11ee-8b88-92fbcf53809c.jpg

圖18. 句柄聲明

關(guān)于舊的發(fā)送句柄(TXCharHanlde)的問題已經(jīng)全部解決。繼續(xù)搜索舊的接收句柄(RXCharHanlde),我們應(yīng)能找到設(shè)備接收手機數(shù)據(jù)的函數(shù)接口,將其中的句柄替換為新的特征句柄,見圖 19:

5495c2e4-b131-11ee-8b88-92fbcf53809c.jpg

圖19. 數(shù)據(jù)接收回調(diào)函數(shù)

至此,我們應(yīng)該能通過全部編譯過程,并且已經(jīng)找到了數(shù)據(jù)發(fā)送、接收的位置。此時可以在這些位置添加數(shù)據(jù)發(fā)送、接收的打印函數(shù)。接收數(shù)據(jù)的用戶接口見圖 20:

54a48e82-b131-11ee-8b88-92fbcf53809c.jpg

圖20. 用戶接收 BLE 數(shù)據(jù)

關(guān)于發(fā)送數(shù)據(jù),原始工程實現(xiàn)了以下處理流程:

1. 從串口接收數(shù)據(jù)

2. 解析數(shù)據(jù)為命令并緩存這些命令

3. 通過輪詢的方式,不斷將命令緩沖區(qū)里的命令發(fā)送出去

該處理流程不適用于我們的任務(wù)要求,我們需要先取消這部分功能,見圖 21

54b3cabe-b131-11ee-8b88-92fbcf53809c.jpg

圖21. 取消原有的數(shù)據(jù)處理流程

然后設(shè)計自己的發(fā)送函數(shù),見圖 22:

54c3f696-b131-11ee-8b88-92fbcf53809c.jpg

圖22. 自定義 BLE 數(shù)據(jù)發(fā)送函數(shù)

至此,藍牙的通訊功能已經(jīng)全部實現(xiàn)完畢。用戶可通過:

? Data_Received()接口接收數(shù)據(jù)

? user_send_data_over_ble()接口發(fā)送數(shù)據(jù)

4.4.添加其它功能

根據(jù)任務(wù)要求,我們還需實現(xiàn)下面三個功能:

1. 控制 LED 亮滅

2. 定時 1s 上傳心跳包,內(nèi)容為連接后的秒計數(shù)值

3. 每次按鍵上傳按鍵事件通知下面開始逐個實現(xiàn):

4.4.1. 控制 LED 亮滅

首先,實現(xiàn) LED 亮滅處理函數(shù),

54cdbeb0-b131-11ee-8b88-92fbcf53809c.jpg

圖23. LED 命令處理函數(shù)

將其添加到 BLE 數(shù)據(jù)接收函數(shù)處,見圖 24。LED 控制功能實現(xiàn)完畢。

54dc98cc-b131-11ee-8b88-92fbcf53809c.jpg

圖24. 接收數(shù)據(jù)后進行 LED 命令處理

4.4.2. 每秒上傳心跳包

首先,實現(xiàn)心跳上傳處理函數(shù),實現(xiàn)當設(shè)備連接后,每秒上傳一個 4 字節(jié)的計數(shù)值,并使用0xaa 作為命令字。見圖 25:

54fb8bf6-b131-11ee-8b88-92fbcf53809c.jpg

圖25. 心跳上傳處理

將心跳處理函數(shù)添加到系統(tǒng)任務(wù)處理函數(shù) App_Tick 中,App_Tick 會在 main loop 中不斷地被調(diào)用。心跳包需要在藍牙連接成功并且使能了訂閱之后才可以發(fā)送。另外,使用 timeout_flag變量來控制其每秒只被調(diào)用一次,實現(xiàn)方法如下:

5506316e-b131-11ee-8b88-92fbcf53809c.jpg

圖26. 心跳處理

上述 timeout_flag 變量需要使用每秒循環(huán)的軟件定時器來周期性置位。軟件定時器的應(yīng)用方式很簡單。

首先,實例化一個定時器,并定義超時回調(diào)函數(shù):

55136212-b131-11ee-8b88-92fbcf53809c.jpg

圖27. 軟件定時器實例化

然后,在 Serial_port_DeviceInit 函數(shù)的末端位置注冊超時回調(diào)函數(shù)并啟動定時器。

5521f0fc-b131-11ee-8b88-92fbcf53809c.jpg

圖28. 啟動定時器

4.4.3. 上傳按鍵事件

首先,實現(xiàn)按鍵回調(diào)函數(shù),該函數(shù)在按鍵按下時被調(diào)用。發(fā)送按鍵事件前,應(yīng)檢查此時藍牙是否處理連接、已訂閱狀態(tài)。見圖 29:

55367874-b131-11ee-8b88-92fbcf53809c.jpg

圖29. 按鍵回調(diào)

按鍵中斷服務(wù)函數(shù)中調(diào)用:

55468aca-b131-11ee-8b88-92fbcf53809c.jpg

圖30. 按鍵中斷服務(wù)函數(shù)

至此,開發(fā)任務(wù)的要求已經(jīng)全部實現(xiàn)完畢。接下來進行功能驗證。

4.5.驗證功能

用戶工程運行起來后,用 STBLE Toolbox 掃描,可見廣播名已經(jīng)修改過來了。

554d954a-b131-11ee-8b88-92fbcf53809c.jpg

圖31. 用戶工程廣播名

連上設(shè)備并點擊 Notify 開關(guān)以使能訂閱,可觀察到底部已經(jīng)開始接收到設(shè)備的心跳包數(shù)據(jù)(以 AA 開頭的 5 字節(jié)數(shù)據(jù)),該數(shù)據(jù)每秒鐘變化一次,見圖 32:

555e29fa-b131-11ee-8b88-92fbcf53809c.jpg

圖32. 使能訂閱

通過 LOG 也能觀察到心跳包發(fā)送情況,此時如果按動按鍵,也能觀察到按鍵事件已經(jīng)發(fā)送:

556e0b2c-b131-11ee-8b88-92fbcf53809c.jpg

圖33. 用戶工程 LOG

05

小結(jié)

跑完了上述用戶任務(wù)開發(fā)的流程后,相信用戶對 BlueNRG SDK 的軟件架構(gòu)應(yīng)有所理解了。BlueNRG SDK 的軟件層次架構(gòu)為 STM32 典型的三層架構(gòu),分別為驅(qū)動層、中間層、用戶層:

55845fe4-b131-11ee-8b88-92fbcf53809c.jpg

圖34. 軟件層次架構(gòu)

上述添加用戶功能的整個過程,其實只改動到了用戶層的功能,用戶層包含以下幾個文件:

55902630-b131-11ee-8b88-92fbcf53809c.jpg

圖35. 用戶層文件

這些文件的含義是:

? serial_port.c,用戶應(yīng)用邏輯的實現(xiàn)

? BLE_SerialPort_main.c,程序入口,程序主流程

? gatt_db.c,BLE GATT 層功能的實現(xiàn)

? rf_device_it.c,存放所有的中斷服務(wù)函數(shù)

上述用戶固件的功能,大多都在 serial_port.c 中實現(xiàn)。BLE_SerialPort_main.c 函數(shù)則實現(xiàn)了系統(tǒng)的主要流程。簡單來說,BlueNRG SDK 的裸機系統(tǒng)即是一個前后臺系統(tǒng)。藍牙事件、按鍵中斷等屬于前臺處理,負責(zé)置位相關(guān)標志位和狀態(tài),main 函數(shù)的 while1 屬于后臺處理,運行藍牙協(xié)議棧、用戶任務(wù)處理等后臺任務(wù),見圖 36:

55a71ce6-b131-11ee-8b88-92fbcf53809c.jpg

圖36. 系統(tǒng)流程

BlueNRG SDK 中的絕大多數(shù)例程都使用了本文檔所述的軟件架構(gòu),即前后臺系統(tǒng)。該軟件架構(gòu)比較簡單,優(yōu)點是用戶能非??焖俚卣莆掌淞鞒?,能夠依據(jù)本文檔的示例快速構(gòu)建自己的用戶功能。缺點是功能比較簡單,用戶需要在此基礎(chǔ)上再添加一個調(diào)度器以應(yīng)對復(fù)雜功能的要求。






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 單片機
    +關(guān)注

    關(guān)注

    6039

    文章

    44588

    瀏覽量

    636758
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4184

    瀏覽量

    218578
  • 固件
    +關(guān)注

    關(guān)注

    10

    文章

    559

    瀏覽量

    23088
  • 協(xié)處理器
    +關(guān)注

    關(guān)注

    0

    文章

    75

    瀏覽量

    18200
  • DTM
    DTM
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    7409
  • SDK
    SDK
    +關(guān)注

    關(guān)注

    3

    文章

    1040

    瀏覽量

    46052
  • BlueNRG
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    9653

原文標題:實戰(zhàn)經(jīng)驗 | 快速入門 BlueNRG SDK 固件開發(fā)

文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    CW32快速開發(fā)入門

    CW32快速開發(fā)入門
    的頭像 發(fā)表于 04-24 18:56 ?2055次閱讀
    CW32<b class='flag-5'>快速</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>入門</b>

    BlueNRG-2N處理器不需要使用特定固件就可以進行外部閃爍嗎

    大家好,我正在使用 STM32L4 開發(fā)定制板,并希望包含一個“即用型”BLE 模塊,例如 BlueNRG-2 系列。我擁有 X-NUCLEO-BNRG2A1 并對其進行了徹底測試。發(fā)現(xiàn)
    發(fā)表于 12-16 07:47

    哪個固件BlueNRG-M2SP模塊的默認固件呢?

    以根據(jù)所需用途在 BlueNRG-M2SP 模塊上下載不同的固件。如果我訂購 20 個 BlueNRG-M2SP 模塊,它們會預(yù)裝特定固件,還是我必須分別對每個模塊進行編程?如果它們確
    發(fā)表于 12-19 08:02

    BlueNRG-LP、BlueNRG-LPS(無線)固件升級程序

    本應(yīng)用筆記介紹運行于隨 BlueNRG-LP、BlueNRG-LPS 片上系統(tǒng)提供的 Bluetooth?低功耗(LE)棧之上的 BlueNRG-LP、BlueNRG-LPS 無線(O
    發(fā)表于 08-14 10:19

    FPGA/SOPC開發(fā)快速入門教程

    FPGA/SOPC開發(fā)快速入門教程
    發(fā)表于 08-06 16:56 ?79次下載
    FPGA/SOPC<b class='flag-5'>開發(fā)</b><b class='flag-5'>快速</b><b class='flag-5'>入門</b>教程

    基于BlueNRG開發(fā)手冊

    STM32單片機基于BlueNRG開發(fā)手冊
    發(fā)表于 11-25 14:55 ?90次下載

    CC2640 SDK應(yīng)用入門教程二

    CC2640 SDK開發(fā)套件的基本入門教程,主要介紹了如何利用SDK工具實現(xiàn)藍牙操控,通過手機APP來實現(xiàn)LED燈的開關(guān)、閃爍、亮度調(diào)節(jié)及其他場景功能的掌握。
    發(fā)表于 02-14 17:21 ?71次下載

    ESP8266快速入門指南的詳細免費下載

    本文檔的主要內(nèi)容詳細介紹的是ESP8266快速入門指南的詳細免費下載包括了:第 1 章 快速玩轉(zhuǎn)開發(fā)板 介紹如何使用開發(fā)板,燒錄可運行
    發(fā)表于 03-19 08:00 ?37次下載
    ESP8266<b class='flag-5'>快速</b><b class='flag-5'>入門</b>指南的詳細免費下載

    涂鴉標準模組MCU SDK開發(fā)流程

    的對接成本,MCU SDK 已搭建通訊及協(xié)議解析架構(gòu)。將 MCU SDK 添加至自己的工程并配置相關(guān)信息后,既可以快速的完成 MCU 程序開發(fā)。在涂鴉 IoT 平臺通過自定義產(chǎn)品功能自
    發(fā)表于 10-28 20:36 ?12次下載
    涂鴉標準模組MCU <b class='flag-5'>SDK</b><b class='flag-5'>開發(fā)</b><b class='flag-5'>流程</b>

    ST BlueNRG藍牙開發(fā)平臺

    ST BlueNRG藍牙開發(fā)平臺
    發(fā)表于 12-08 13:51 ?20次下載
    ST <b class='flag-5'>BlueNRG</b>藍牙<b class='flag-5'>開發(fā)</b>平臺

    使用MicroPython開發(fā)ESP32(01):快速入門

    文章目錄為什么使用MicroPython開發(fā)ESP32快速入門開發(fā)板準備開發(fā)工具選擇固件下載與燒錄我的總結(jié)為什么使用MicroPython
    發(fā)表于 12-29 18:49 ?22次下載
    使用MicroPython<b class='flag-5'>開發(fā)</b>ESP32(01):<b class='flag-5'>快速</b><b class='flag-5'>入門</b>

    高級開發(fā)套件快速入門指南

    高級開發(fā)套件快速入門指南
    發(fā)表于 01-30 18:51 ?0次下載
    高級<b class='flag-5'>開發(fā)</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入門</b>指南

    Evaluation SDK 4-1 快速入門指南

    Evaluation SDK 4-1 快速入門指南
    發(fā)表于 04-19 19:31 ?0次下載
    Evaluation <b class='flag-5'>SDK</b> 4-1 <b class='flag-5'>快速</b><b class='flag-5'>入門</b>指南

    高級開發(fā)套件快速入門指南

    高級開發(fā)套件快速入門指南
    發(fā)表于 07-03 20:20 ?0次下載
    高級<b class='flag-5'>開發(fā)</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入門</b>指南

    鴻蒙開發(fā)實例【使用高德地圖鴻蒙SDK】(一)

    使用高德地圖鴻蒙SDK快速入門指南。
    的頭像 發(fā)表于 03-22 16:59 ?870次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>實例【使用高德地圖鴻蒙<b class='flag-5'>SDK</b>】(一)