1寫在前面
《MAVLink學(xué)習(xí)之路》前面三篇文章,可以說是一些基礎(chǔ)知識,也是為本文做的準(zhǔn)備工作(建議初學(xué)者先了解前面三篇文章)。
本文主要內(nèi)容:
MAVLink移植主要步驟
MAVLink移植過程要點(diǎn)
提示:為方便廣大初學(xué)者朋友盡快掌握MAVLink,我在文末提供MAVLink發(fā)送接收例程(基于STM32硬件、MDK-ARM和EWARM開發(fā)環(huán)境)。
為了方便大家平時公交、地鐵、外出辦事也能用手機(jī)隨時隨地查看該教程,本文章收錄于【MAVLink學(xué)習(xí)之路】,在微信公眾號回復(fù)【MAVLink學(xué)習(xí)之路】即可查看。
2
MAVLink移植主要步驟
2.1 移植說明
本文主要針對MAVLink C源代碼移植進(jìn)行講述。其中,MAVLink的C源代碼可以下載網(wǎng)上預(yù)生成的C源代碼庫,也可以通過生成器工具生成。
A.下載預(yù)生成C代碼庫
如果是使用標(biāo)準(zhǔn)MAVLink的MSG消息,則可以現(xiàn)在官方指定地址預(yù)先生成的C代碼庫。預(yù)先生成C代碼庫總共兩個版本:
MAVLink V1版:
https://github.com/mavlink/c_library_v1
MAVLink V2版:
https://github.com/mavlink/c_library_v1
(提示:公眾號不支持外鏈接,請復(fù)制鏈接到瀏覽器打開)
B.生成器生成C代碼
如果你需要自定義MSG消息,則需要自己通過工具生成C代碼,具體生成方法請參看文章:《MAVLink學(xué)習(xí)之路03_XML中定義MSG并生成C代碼》
提示:
官方預(yù)生成C代碼庫就是通過生成器而生成的,官方提供的生成器工具、預(yù)生成C代碼庫不定期更新。
也就是說可能你不同時期看到的預(yù)生成庫不同,不同時期的生成器及其生成的代碼也有所不同。
如上圖,官方預(yù)生成的C代碼(V1版),與通過生成器生成的代碼完全一樣。如common.xml通過生成器生成的C代碼就和上面紫紅色框出來的代碼一樣。當(dāng)然,生成器版本也是這最新的才對。
2.2 移植主要步驟
1.下載相關(guān)工具
2.環(huán)境搭建
3.生成C代碼(如果下載官方預(yù)生成代碼,前面兩步可以不用)
4.將C代碼添加到工程
5.配置(如添加MAVLink路徑、修改代碼適配工程)
6.添加MAVLink發(fā)送接收(及應(yīng)用)代碼
步驟1, 2, 3已經(jīng)在前面文章詳細(xì)講述了,本文主要講述步驟4, 5。步驟6下一篇文章詳細(xì)講述。
3
MAVLink移植過程要點(diǎn)
本節(jié)主要內(nèi)容講述將C代碼添加到工程,然后配置,到編譯沒有錯誤這一過程中的一些重要知識點(diǎn)。
3.1 代碼添加到工程
代碼添加到工程其實(shí)很簡單,將代碼拷貝工程文件下,類似如下圖,添加組,添加源文件。
但是,MAVLink源代碼都是.h頭文件,可以不用像上面那樣添加到工程。當(dāng)然,添加頭文件到工程的好處就是可以快速打開頭文件,查找相關(guān)代碼。
說這一小節(jié)是想提示大家:MAVLink的C源代碼都是.h頭文件。頭文件只需要添加對應(yīng)路徑,包含頭文件即可(#include 'mavlink.h')。
3.2 配置
1.添加路徑
Keil MDK-ARM和IAR EWARM添加路徑這項(xiàng)內(nèi)容我就不在這里詳細(xì)講述了,不會的朋友可以參看看我的文章:
Keil MDK-ARM系列教程(一)_新建軟件工程詳細(xì)過程
IAR EWARM系列教程(一)_新建軟件工程詳細(xì)過程
3.3 修改代碼
這小節(jié)內(nèi)容可以參看網(wǎng)上一篇博文:
https://www.cnblogs.com/lovechen/p/5809709.html
那篇文章講述的很多,我講一下重點(diǎn):它修改的代碼是針對老版本主要需要修改兩個地方。
而且新版本MAVLink生成器已經(jīng)優(yōu)化了一個項(xiàng),也就是只有一個地方需要修改:修改mavlink_types.h.
1.針對Keil MDK-ARM
2.針對IAR EWARM
替換代碼:#define MAVPACKED( __Declaration__ ) __Declaration__
那篇文章針對的是老版MAVLink還需要修改一個const的地方,我這里就不說了(新來的建議用新版的)。
為什么這里要修改呢?
原因在于編譯器的差異導(dǎo)致的。
3.4 補(bǔ)充知識點(diǎn)
1.#pragma anon_unions
keil中默認(rèn)是不支持匿名結(jié)構(gòu)體的,需要編譯指令#pragma anon_unions指名。
2.MAVPACKED
如果不修改代碼,直接編譯,發(fā)現(xiàn)有許多錯誤,原因都來自MAVPACKED。結(jié)合修改的內(nèi)容,再看下圖,有什么啟發(fā)沒有。
4
源代碼下載
地址:
https://pan.baidu.com/s/1xraErAnmL-BN9CMwE6aQ-A
密碼:cusq
上一篇:手把手教你基于RT-Thread Studio使用STM32單片機(jī)的PWM外設(shè)
下一篇:基于STM32Cubemx HAL 庫實(shí)現(xiàn) DMA 驅(qū)動 GPIO 高速翻轉(zhuǎn)
設(shè)計資源 培訓(xùn) 開發(fā)板 精華推薦
- 迅為imx6ull開發(fā)板使用c語言調(diào)用shell命令控制led燈
- 迅為IMX8MM開發(fā)板Android編譯環(huán)境搭建
- 迅為IMX6ULL開發(fā)板NFS服務(wù)器的使用
- 迅為ITOP4412開發(fā)板Qt界面添加圖片
- 迅為IMX6開發(fā)板OTA遠(yuǎn)程升級-SWUpdata概述和使用
- 迅為IMX6ULL開發(fā)板NFS服務(wù)器的搭建
- 迅為IMX6開發(fā)板Buildroot文件系統(tǒng)4G撥號上網(wǎng)工具測試
- 實(shí)驗(yàn)分享丨迅為IMX6ULL開發(fā)板點(diǎn)亮第一個led燈
- 迅為-IMX6Q開發(fā)板Buildroot文件系統(tǒng)nfs測試
- LTC2164、16 位、105Msps 低功耗 ADC 的典型應(yīng)用
- 使用 LTC2367CDE-16、16 位、500ksps SAR ADC 的典型應(yīng)用
- 使用 Infineon Technologies AG 的 IRU1117-25 的參考設(shè)計
- 【實(shí)測成功】基于arduino UNO的擴(kuò)展板
- 使用 Analog Devices 的 LTC1475CMS8-3.3 的參考設(shè)計
- 指紋辨識安全物聯(lián)網(wǎng)門鎖
- 可白嫖元神小尺子
- M24SR-DISCO-STD,M24SR 系列動態(tài) NFC/RFID 標(biāo)簽的探索套件
- NOIP1SN025KA-GDI-A-GEVK:PYTHON 25K 評估套件(單色)
- 使用 NXP Semiconductors 的 TDA8580 的參考設(shè)計
- 捷尼賽思全新SUV增添新技術(shù)!“刷臉”功能更便捷
- 11-基于51單片機(jī)的十字路口交通燈
- 最高調(diào)漲30%,ST、聯(lián)發(fā)科、安森美等10家IC廠漲價!
- 上海加快700MHz頻段5G基站規(guī)模建設(shè)
- 突發(fā)電力壓降!臺積電、力積電、聯(lián)電等芯片大廠生產(chǎn)或受影響!
- 聯(lián)名紫禁城IP realme真我V25發(fā)布:超大內(nèi)存 價格1999元
- TI創(chuàng)新性封裝如何提高功率密度
- 100%自主指令集!國產(chǎn)龍芯CPU今年適配409款產(chǎn)品
- 兩相雙極步進(jìn)電機(jī)驅(qū)動中電流再生時的電流衰減
- 迅為imx6ull開發(fā)板使用c語言調(diào)用shell命令控制led燈
- 迅為IMX8MM開發(fā)板Android編譯環(huán)境搭建
- 迅為IMX6ULL開發(fā)板NFS服務(wù)器的使用
- 迅為ITOP4412開發(fā)板Qt界面添加圖片
- 迅為IMX6開發(fā)板OTA遠(yuǎn)程升級-SWUpdata概述和使用
- 迅為IMX6ULL開發(fā)板NFS服務(wù)器的搭建
- 迅為IMX6開發(fā)板Buildroot文件系統(tǒng)4G撥號上網(wǎng)工具測試
- 實(shí)驗(yàn)分享丨迅為IMX6ULL開發(fā)板點(diǎn)亮第一個led燈
- 迅為-IMX6Q開發(fā)板Buildroot文件系統(tǒng)nfs測試
- 進(jìn)步一點(diǎn)點(diǎn)丨迅為4412開發(fā)板Linux內(nèi)核開發(fā)基礎(chǔ)
- 免費(fèi)申請測評 | RDK X3機(jī)器人開發(fā)套件
- 【社區(qū)大講堂】頂嵌與你一起:動手做嵌入式產(chǎn)品
- 了解數(shù)字功能的模擬控制器,千元好禮等你來拿!
- 答題有禮: 尋覓可靠的觸控、手勢控制解決方案?快來認(rèn)識新一代AVR DA單片機(jī)
- 【評論有禮】大話CC2650,從資料到例程、從應(yīng)用到生態(tài)全方位講解!
- 有獎直播|安森美先進(jìn)的封裝和驅(qū)動技術(shù)助力碳化硅能源應(yīng)用
- 2024 DigiKey 應(yīng)用說:藍(lán)牙5.4新特性解讀和實(shí)例演示
- 免費(fèi)申請評測:和小伙伴們一起暢玩STM32F769I
- 高管揭秘榮耀30S怎么樣打造檔位最美旗艦
- 三星關(guān)閉了LCD業(yè)務(wù),京東方、華星將占據(jù)全球面板半壁江山
- 海外有國家近四分之一人用華為手機(jī)
- 從材料領(lǐng)域“將軍”三星!臺積電“3nm”團(tuán)隊(duì)解密
- 研究人員開發(fā)出了一種稱為LB-WayPtNav-DH的機(jī)器人導(dǎo)航新框架
- 中國集成電路提前布局后摩爾時代或可步入“同步發(fā)展”
- 餐廳機(jī)器人來了 目測是你要的AI落地實(shí)操
- 200多萬人的測試 教會自動駕駛車輛如何“救人”
- 上海最大集成電路項(xiàng)目建成投片
- 高薪挖臺灣人才會是中國芯片業(yè)的正確捷徑嗎?