关注+星标公众号,不错过精彩内容
作者 | strongerHuang
微信公众号 | strongerHuang
地址:
https://pan.baidu.com/s/1xraErAnmL-BN9CMwE6aQ-A
密码:cusq
(公众号不支持外链接,请复制链接到浏览器打开)
应用编程主要内容
1、发送和接收说明
利用MAVLink通信协议进行编程,主要实现的功能就是:
1.发送端
将需要发送的数据(如:SysState, BatVol),添加MAVLink通信协议,通过硬件(如:UART、CAN)发送出去。
2.接收端
硬件(如:UART、CAN)接收到的数据,通过MAVLink协议解析,得到一帧完整的MAVLink数据包,提取发送端发送的数据(如:SysState, BatVol),将得到的数据应用到我们程序中。
主要流程:数据 -> MAVLink封装 -> 发送 -> 接收 -> MAVLink解析 ->数据
2.发送和接收流程图
该流程图是结合我上一篇文章提供的源代码例程画出来,包含的只是主要内容,更多细节没有在流程图中呈现。
提示:
我提供例程是针对初学者提供比较单一发送和接收例程(MDK-ARM和EWARM包含各自的发送和接收工程)。
而实际项目可能会:
1.发送和接收在一个工程;
2.包含操作系统;
3.发送、接收数据FIFO(队列)处理;
所以,实际项目,请按需修改我提供的源码。
MAVLink函数接口详细说明
上面是我提供例程的代码,主要讲4个接口。
1.MAVLink_SendTest
这个接口是根据自己情况进行封装函数,用于应用程序调用,这里不多说。
2.mavlink_msg_sys_info_pack
这个函数接口主要目的:将变量信息(SysID、CompID、SysState、BatVol)打包,最终得到MAVLink_Msg这个消息包。
3.mavlink_msg_to_send_buffer
将上一步得到的MAVLink_Msg转换成我们要发送的数据BUF缓存。
4.MAV_USART_SendNByte
这个函数接口也是我自己根据硬件(UART)封装的,如果你是其它硬件通信,只需要封装一个类似的接口(参数具有BUF,LEN)即可。
发送数据的流程:从应用代码 -> 底层硬件(发送出去)。
如果要深入了解,可以先熟悉软件流程,再结合源代码工程,同时参看接口函数具体实现。相信你很快就明白了。
2.接收主要函数接口
猜你喜欢:
分享一种灵活性很高的协议格式(附代码例子)
嵌入式C语言程序调试和宏使用的技巧
STM32中常用的C语言知识点总结!
《结构体、联合体嵌套使用的一些实用操作》
《C语言、嵌入式中几个非常实用的宏技巧》
《C语言、嵌入式应用:TCP通信实例分析》
《C语言、嵌入式位操作精华技巧大汇总》
《C语言、嵌入式重点知识:回调函数》
在公众号聊天界面回复1024,可获取嵌入式资源;回复 m ,可查看文章汇总