0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

APM飞控固件的两种输出调试信息的方法

CHANBAEK 来源:怒飞垂云 作者:怒飞垂云 2023-07-02 17:33 次阅读

无人机飞控固件开发过程中,我们经常需要实时输出一些调试信息(如一些变量的值、状态机切换提示等),在APM固件中有如下两种常用的输出调试信息的方法:

一、使用Mavlink的“STATUS TEXT”帧来发送调试信息

这个Mavlink帧的ID号为253,内部包含了50个字节的定长数据段,也就是说我们使用这个帧最多一次只能输出50个字节的字符。其调用方法如下:

gcs().send_text(MAV_SEVERITY_CRITICAL, "NFCY test! %.2f", 1.234f);

其中第一个参数定义的是要发送的数据的紧急程度,如果定义的是“MAV_SEVERITY_CRITICAL”,则要显示的信息会同时在MissionPlanner的姿态窗口和消息窗口中显示。这个函数后面两个参数的用法与C语言中的printf是一样的。

最终的显示效果如下:

图片

二、使用“hal.console->printf”来发送调试信息

相对于第一种方法,这种方法在效率和灵活性上更接近C语言的printf,其输出直接发送到飞控USB虚拟出的串口上,因此一般直接用串口调试助手查看其输出。其用法示例如下:

hal.console- >printf("\\n\\n NFCY test! %.2f \\n\\n", 1.234f)

最终的显示效果如下:

image.png

由上图可知,这种输出方法更接近平常我们用的单片机串口调试方法,但是由于默认情况下USB接口虚拟出的串口同时也输出Mavlink帧(至少有1Hz的Mavlink心跳帧),二者混在一起,看起来比较麻烦。不过可以通过关闭Mavlink输出来解决。

以上就是APM固件的两种飞控调试信息的输出方法,希望对大家有所帮助。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 调试
    +关注

    关注

    7

    文章

    527

    浏览量

    33625
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    128799
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27182
  • 无人机
    +关注

    关注

    224

    文章

    9885

    浏览量

    174825
  • APM
    APM
    +关注

    关注

    0

    文章

    69

    浏览量

    12861
收藏 人收藏

    评论

    相关推荐

    嵌入式开发输出调试信息的几种方法

    《论语》有云:“工欲善其事,必先利其器”。输出调试信息是软件开发中必不可少的调试利器,在出现bug时如果没有调试信息将会是一件令人头痛的事。
    发表于 07-21 10:28 752次阅读
    嵌入式开发<b class='flag-5'>输出调试</b><b class='flag-5'>信息</b>的几种<b class='flag-5'>方法</b>

    请问怎么输出调试消息到IDE?

    ,我找不到一“控制台日志”的方法或将调试信息输出到IDE中。我读过各种各样的人说“使用UART”或“使用串行电缆”…但真的吗?有一些
    发表于 08-29 10:17

    寻找apm2.8固件源码

    请问apm固件源码在哪里下载,知道的朋友请麻烦告知。谢谢!
    发表于 06-30 16:33

    控疑难杂症解决方法汇总

    (pixhawk)控疑难杂症解决方法汇总(持续更新)by 怒垂云2019年11月4日APM无法解锁/控连不上/黄灯闪烁/起飞侧翻/定点
    发表于 08-06 06:21

    怎么实现stm32串口2来输出调试信息

    怎么实现stm32串口2来输出调试信息
    发表于 12-01 06:41

    STM32串口为什么不能直接使用printf输出调试信息

    STM32串口为什么不能直接使用printf输出调试信息呢?有哪些解决办法吗?
    发表于 12-02 07:17

    有哪几种方法可以实现STM32输出调试信息

    基于SEGGER的RTT方式可实现调试信息吗?怎样去使用STM32的串口输出调试信息呢?
    发表于 12-02 07:28

    怎样使用STM32CubeMX串口输出调试信息

    怎样使用STM32CubeMX串口输出调试信息呢?STM32CubeMX串口如何接收不定长的数据呢?
    发表于 12-08 06:45

    介绍两种goahead的调试手段

    这里介绍两种goahead的调试手段:(1)终端调试(2)日志调试1 终端调试终端调试*
    发表于 12-16 06:21

    嵌入式设备是怎样通过semihost机制输出调试信息调试主机的

    dave:嵌入式设备通过semihost机制输出调试信息调试主机
    发表于 12-16 07:41

    如何使用J-Link SEGGER RTT打印输出调试信息?

    如何使用J-Link SEGGER RTT打印输出调试信息?
    发表于 02-10 08:00

    如何利用设置断点和输出日志这两种方法调试HarmonyOS App呢

    ,比较常用的有设置断点和输出日志两种方式,本文将详细介绍这两种调试App的方式。设置断点如果认为需要跟踪的代码或bug在某行代码的附近,可以单击该行代码前面的部分为该行设置断点,这时会
    发表于 05-24 14:57

    嵌入式开发为什么需要输出调试信息

    嵌入式开发为什么需要输出调试信息? 因为输出调试信息是嵌入式开发中一项非常重要的实践,它有助于保证软件的可靠性、稳定性和性能,也是故障排查的关键工具之一。 嵌入式开发
    发表于 11-28 16:46

    Linux开发中如何同时输出调试信息到终端及文件

    文件中。 比如: 但是有时候既要实时查看打印调试信息,又要把这些调试信息保存下来发给他人分析。 下面分享能达到这个需求的两种方法: 1、使用
    的头像 发表于 11-04 16:40 7074次阅读
    Linux开发中如何同时<b class='flag-5'>输出调试</b><b class='flag-5'>信息</b>到终端及文件

    适用于PIX或APM的本地升级固件方法

    适用于PIX或APM的本地升级固件方法,首先打开 http://firmware.diydrones.com/ 3DR 的固件服务器。 然后选择适合自己的
    发表于 08-20 16:34 0次下载