參考https://cloud.tencent.com/developer/news/48344
https://www.cnblogs.com/lovechen/p/5801679.html
https://www.cnblogs.com/lovechen/p/5809709.htm
https://www.jianshu.com/p/e57aa664103f
https://www.e-learn.cn/content/qita/1017591
是一種用於飛行器上的輕量級成熟通信協議,與很多自定的協議相比,它的開發難度非常小,有現成的配置工具,可直接生成MSG代碼(簡單來說,就是生成對應的函數接口供你直接調用即可),直接調用幾個相應的函數接口即可,不需要自己封裝、解析等;突出的優點在於配置和調用比較簡單
1.配置
MAVLink通過xml文件,配置信息(MSG),這個MSG可以理解成我們需要接收或者發送的數據變量。比如:運動控制包含速度和距離,xml配置如下:
2.通過生成代碼
從官網下載mavlink(git clone https://github.com/mavlink/mavlink.git)
mavlink官網(http://qgroundcontrol.org/mavlink/start),下拉到MAVLink Code and Generator如下圖,得到mavlink源碼有多種途徑,這里選取用python生成。即點擊MAVLink Generator (C/C++, Python)
git clone https://github.com/mavlink/mavlink mavlink-generator
或者用PYTHON進行安裝 pip install pymavlink,切換到mavlink-master目錄下然后運行python mavegenerate.py ,然后修改xml並生成C庫
3.調用代碼
代碼生成,只需要簡單調用兩個函數接口即可:
兩個函數即可:
mavlink_msg_motion_pack:封包函數接口;
mavlink_msg_to_send_buffer:轉換成發送的BUF
4編譯排錯:
keil工程里面全局編譯一下,會發現好多的錯誤。這個錯誤跟編譯器有關。一種方式是直接修改每一個錯誤,可以自行百度“mavlink移植 ”;當然還有一種方法,是在工程配置中加入如下配置:
--no_strict --gnu
目的是想讓MAVLink這段代碼采用gun的格式進行編譯,但是要注意其他的代碼需要保證是使用的keil的默認編譯器__CC_ARM進行編譯。再次編譯會發現沒有錯誤。