在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

MAVLink學習之路04_MAVLink移植到STM32具體步驟

黃工的嵌入式技術圈 ? 來源:黃工的嵌入式技術圈 ? 2020-03-07 16:22 ? 次閱讀

1寫在前面

《MAVLink學習之路》前面三篇文章,可以說是一些基礎知識,也是為本文做的準備工作(建議初學者先了解前面三篇文章)。

本文主要內容:

MAVLink移植主要步驟

MAVLink移植過程要點

提示:為方便廣大初學者朋友盡快掌握MAVLink,我在文末提供MAVLink發送接收例程(基于STM32硬件、MDK-ARM和EWARM開發環境)。

為了方便大家平時公交、地鐵、外出辦事也能用手機隨時隨地查看該教程,本文章收錄于【MAVLink學習之路】,在微信公眾號回復【MAVLink學習之路】即可查看。

2

MAVLink移植主要步驟

2.1 移植說明

本文主要針對MAVLink C源代碼移植進行講述。其中,MAVLink的C源代碼可以下載網上預生成的C源代碼庫,也可以通過生成器工具生成。

A.下載預生成C代碼庫

如果是使用標準MAVLink的MSG消息,則可以現在官方指定地址預先生成的C代碼庫。預先生成C代碼庫總共兩個版本:

MAVLink V1版:

https://github.com/mavlink/c_library_v1

MAVLink V2版:

https://github.com/mavlink/c_library_v1

(提示:公眾號不支持外鏈接,請復制鏈接到瀏覽器打開)

B.生成器生成C代碼

如果你需要自定義MSG消息,則需要自己通過工具生成C代碼,具體生成方法請參看文章:《MAVLink學習之路03_XML中定義MSG并生成C代碼》

提示:

官方預生成C代碼庫就是通過生成器而生成的,官方提供的生成器工具、預生成C代碼庫不定期更新。

也就是說可能你不同時期看到的預生成庫不同,不同時期的生成器及其生成的代碼也有所不同。

如上圖,官方預生成的C代碼(V1版),與通過生成器生成的代碼完全一樣。如common.xml通過生成器生成的C代碼就和上面紫紅色框出來的代碼一樣。當然,生成器版本也是這最新的才對。

2.2 移植主要步驟

1.下載相關工具

2.環境搭建

3.生成C代碼(如果下載官方預生成代碼,前面兩步可以不用)

4.將C代碼添加到工程

5.配置(如添加MAVLink路徑、修改代碼適配工程)

6.添加MAVLink發送接收(及應用)代碼

步驟1, 2, 3已經在前面文章詳細講述了,本文主要講述步驟4, 5。步驟6下一篇文章詳細講述。

3

MAVLink移植過程要點

本節主要內容講述將C代碼添加到工程,然后配置,到編譯沒有錯誤這一過程中的一些重要知識點。

3.1 代碼添加到工程

代碼添加到工程其實很簡單,將代碼拷貝工程文件下,類似如下圖,添加組,添加源文件。

但是,MAVLink源代碼都是.h頭文件,可以不用像上面那樣添加到工程。當然,添加頭文件到工程的好處就是可以快速打開頭文件,查找相關代碼。

說這一小節是想提示大家:MAVLink的C源代碼都是.h頭文件。頭文件只需要添加對應路徑,包含頭文件即可(#include "mavlink.h")。

3.2 配置

1.添加路徑

Keil MDK-ARM和IAR EWARM添加路徑這項內容我就不在這里詳細講述了,不會的朋友可以參看看我的文章:

Keil MDK-ARM系列教程(一)_新建軟件工程詳細過程

IAR EWARM系列教程(一)_新建軟件工程詳細過程

3.3 修改代碼

這小節內容可以參看網上一篇博文:

https://www.cnblogs.com/lovechen/p/5809709.html

那篇文章講述的很多,我講一下重點:它修改的代碼是針對老版本主要需要修改兩個地方。

而且新版本MAVLink生成器已經優化了一個項,也就是只有一個地方需要修改:修改mavlink_types.h.

1.針對Keil MDK-ARM

2.針對IAR EWARM

替換代碼:#define MAVPACKED( __Declaration__ ) __Declaration__

那篇文章針對的是老版MAVLink還需要修改一個const的地方,我這里就不說了(新來的建議用新版的)。

為什么這里要修改呢?

原因在于編譯器的差異導致的。

3.4 補充知識點

1.#pragma anon_unions

keil中默認是不支持匿名結構體的,需要編譯指令#pragma anon_unions指名。

2.MAVPACKED

如果不修改代碼,直接編譯,發現有許多錯誤,原因都來自MAVPACKED。結合修改的內容,再看下圖,有什么啟發沒有。

4

源代碼下載

地址:

https://pan.baidu.com/s/1xraErAnmL-BN9CMwE6aQ-A

密碼:cusq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356764
  • C代碼
    +關注

    關注

    1

    文章

    89

    瀏覽量

    14325
  • mavlink
    +關注

    關注

    0

    文章

    8

    瀏覽量

    2597
收藏 人收藏

    評論

    相關推薦

    STM32WL55JCSTM32WLE5CC的LoRaWAN_FUOTA移植

    電子發燒友網站提供《從STM32WL55JCSTM32WLE5CC的LoRaWAN_FUOTA移植.pdf》資料免費下載
    發表于 01-15 15:24 ?0次下載
    從<b class='flag-5'>STM32</b>WL55JC<b class='flag-5'>到</b><b class='flag-5'>STM32</b>WLE5CC的LoRaWAN_FUOTA<b class='flag-5'>移植</b>

    【「身智能機器人系統」閱讀體驗】+初品的體驗

    動態互動的。 該理論強調智能行為源于智能的物理存在和行為能力,智能必須具備感知環境并在其中執行任務的能力。身智能的實現涵蓋了機器學習、人工智能、機器人學、計算機視覺、自然語言處理
    發表于 12-20 19:17

    請問TVP7002具體支持什么格式和分辨率?

    TVP7002具體支持什么格式和分辨率? 答: TVP7002 可以采集VGA和YPbPr視頻輸入。輸出支持20位BT1120或者外同步方式。截斷數據低位就可以用作16bit模式。具體支持的分辨率
    發表于 12-20 15:46

    身智能與機器學習的關系

    身智能(Embodied Intelligence)和機器學習(Machine Learning)是人工智能領域的兩個重要概念,它們之間存在著密切的關系。 1. 身智能的定義
    的頭像 發表于 10-27 10:33 ?437次閱讀

    基于機智云移植STM32L496G代碼移植

    前言最近我拿到了STM32L496AGMCU,發現其擴展版可以連接ESP-01S。我想嘗試將開發板連接到我們的機智云上,并根據機智云提供的文檔進行程序移植STM32CubeMX移植
    的頭像 發表于 09-20 08:05 ?474次閱讀
    基于機智云<b class='flag-5'>移植</b><b class='flag-5'>STM32</b>L496G代碼<b class='flag-5'>移植</b>

    【GD32 MCU 移植教程】10、從STM32F030系列移植GD32E230系列

    GD32E230 對比 STM32F030 有著很好的兼容性和更高的性價比,內核和外設都有所增強。本人曾做過產品的 MCU 替換,將基于 STM32F0xx 1.5.0 固件庫的應用程序移植
    的頭像 發表于 09-07 10:24 ?751次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】10、從<b class='flag-5'>STM32</b>F030系列<b class='flag-5'>移植</b><b class='flag-5'>到</b>GD32E230系列

    【GD32 MCU 移植教程】9、從 STM32F10x 系列移植 GD32F30x 系列

    對比、外設及性能對比以及從 STM32F10x 移植 GD32F30x 的移植步驟,旨在讓開發者能夠快速從
    的頭像 發表于 09-07 09:57 ?895次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】9、從 <b class='flag-5'>STM32</b>F10x 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32F30x 系列

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植 GD32F4xx 系

    、外設及性能對比以及從 STM32F4xx 移植 GD32F4xx 的移植步驟,旨在讓開發者能夠快速從
    的頭像 發表于 09-06 09:40 ?1435次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】8、從 <b class='flag-5'>STM32</b>F4xx 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32F4xx 系

    聚徽-LED 全彩屏的安裝和調試步驟是什么

    LED 全彩屏的安裝和調試步驟涉及多個環節,以下是根據搜索結果整理的具體步驟
    的頭像 發表于 09-03 09:24 ?440次閱讀

    將ADF移植RTOS上大概都需要哪些步驟?一般移植周期多久呢?

    1 ADF是免費的開源軟件嗎? 2 將ADF移植RTOS上大概都需要哪些步驟?一般移植周期多久呢?
    發表于 06-28 08:03

    STM32WB配置SMPS模塊具體步驟是什么?

    想要降低STM32WB的功耗,查找手冊發現開啟SMPS模塊可以降低功耗。配置SMPS模塊具體步驟是什么有大佬知道嗎?是開啟SMPS宏定義,然后寫PWR的寄存器就可以了嗎?怎么證明自己的SMPS模塊-配置正確了呢?
    發表于 03-20 08:18

    STM32F4的裸機源碼可以移植linux ARM上運行嗎? 具體需要怎么實現呢?

    STM32F4的裸機源碼可以移植linux ARM開發板上運行嗎? 具體需要怎么實現呢?
    發表于 03-20 07:00

    STM32高手進階之路與實用學習步驟

    CPU是相通的,相信大部分的同學都學習過單片機,是有一定基礎的。如果你碰到問題,去嘗試了,自己把問題解決了,你會很有成就感!
    的頭像 發表于 03-13 09:38 ?635次閱讀

    MAVLink在應用編程中的編程原理和思路

    嵌入式開發過程中,UART、 CAN、 USB等通信基本離不開通信協議。 下面給大家分享一種通信協議(MAVLink)在應用編程中的編程原理和思路。
    發表于 03-08 12:45 ?993次閱讀
    <b class='flag-5'>MAVLink</b>在應用編程中的編程原理和思路

    淺析MCU通信、存儲常用的簡單校驗算法

    UART有一個奇偶校驗,CAN通信有CRC校驗。Modbus、MAVlink、USB等通信協議也有校驗信息。
    的頭像 發表于 03-07 10:56 ?540次閱讀
    淺析MCU通信、存儲常用的簡單校驗算法
    主站蜘蛛池模板: 色综合色综合色综合色综合| 毛片一级黄色| 在线观看视频免费| free性欧美69高清| 欧美在线视频一区二区三区| 国模极品一区二区三区| 正在播放欧美| 久久草在线播放| 天天干夜夜曰| 午夜免费视频观看| 曰本裸色私人影院噜噜噜影院| 两性色午夜视频免费国产| 色操网| 九色婷婷| 人人看人人玩| 色婷婷久久久swag精品| 亚洲天堂导航| 亚洲色图 在线视频| 综合涩| 午夜欧美福利| 四虎影视院| 特一级黄色毛片| 特级片免费看| 色网站在线| 欧美一级片在线视频| 日本国产中文字幕| 三级三级三级网站网址| 日本三级视频| 日本xxxx色视频在线观看免 | 亚洲黄视频| 天天干天天做| 孩交精品xxxx视频视频| 干得好爽| 午夜国产精品久久久久| 久久水蜜桃网| 四虎在线精品| 久久综合欧美| 天天做天天摸天天爽天天爱| 欧美日韩一日韩一线不卡| 特级aaaaaaaaa毛片免费视频| 色婷婷资源网|