KEIL工程移植
本文利用STM32F4的控制板的PX4控制板,并且利用cubeMX进行工程配置来实现MAVLink的移植。最终实现PX4控制板与QGC上位机的通信,以此来验证MAVLink是否成功移植。
1.因为转换的C语言代码都是以.h的文件夹实现的,所以把上图的文件包含到工程路径中,并且包含如下的头文件即可包含全部实现的
#include
接着利用cubeMx进行串口的配置,我们使用中断DMA接收与普通轮询模式发送。不是本文重点,不做描述,可百度,亦可有兴趣观看视频。
接着我们可以在keil工程里面全局编译一下,会发现好多的错误。这个错误跟编译器有关。一种方式是直接修改每一个错误,可以自行百度“mavlink移植 ”;当然还有一种方法,是在工程配置中加入如下配置:
--no_strict --gnu
目的是想让MAVLink这段代码采用gun的格式进行编译,但是要注意其他的代码需要保证是使用的keil的默认编译器__CC_ARM进行编译。再次编译会发现没有错误。
2.接着就是实现发送、接收数据的底层函数。
C MAVLink库的实现的多通道的数据流,同样的程序可以在不同的独立通道流上进行传输。如果只存在一个MAVLink数据流,channel 0默认被用来进行数据传输(MAVLINK_COMM_0)
接收数据的处理函数是在MAVLink的 mavlink_helpers.h:mavlink_parse_char()函数里面实现的。这个函数实际上需要在每次接收到一个字节数据的时候调用它来解析的信息,直到一个完整的数据包被解析完成。
发送数据可以用mavlink_msg_*_pack()这些函数,然后调用mavlink_helpers.h:mavlin