BetaFlight统一硬件配置文件研读之serial命令

news/2024/11/30 18:38:18/

BetaFlight统一硬件配置文件研读之serial命令

  • 1. 源由
  • 2. 代码分析
  • 3. 实例分析
  • 4. 配置情况
  • 5. 参考资料

统一硬件配置文件的设计是一种非常好的设计模式,可以将硬件和软件的工作进行解耦。

1. 源由

cli命令中serial是对UART串口的配置,通常情况下BetaFlight飞控会有一个USB VCP端口用来处理MSP消息配置飞控,其他端口更具应用来进行配置,所以厂家默认出厂可以不配,由用户根据需要调整。

2. 代码分析

cliSerial├──> <isEmpty(cmdline)> printSerial(DUMP_MASTER, serialConfig(), NULL, NULL); return├──> [Get 1 param: identifier] │   ├──> serialPortConfig_t *currentConfig = serialFindPortConfigurationMutable(val)│   └──> portConfig.identifier = val├──> [Get 2 param: functionMask]│   └──> portConfig.functionMask = val├──> [Get 3 param: msp_baudrateIndex]│   └──> portConfig.msp_baudrateIndex = baudRateIndex├──> [Get 4 param: gps_baudrateIndex]│   └──> portConfig.gps_baudrateIndex = baudRateIndex├──> [Get 5 param: telemetry_baudrateIndex]│   └──> portConfig.telemetry_baudrateIndex = baudRateIndex├──> [Get 6 param: blackbox_baudrateIndex]│   └──> portConfig.blackbox_baudrateIndex = baudRateIndex├──> <validArgumentCount < 6> error return├──> memcpy(currentConfig, &portConfig, sizeof(portConfig))└──> cliDumpPrintLinef(0, false, format,portConfig.identifier,portConfig.functionMask,baudRates[portConfig.msp_baudrateIndex],baudRates[portConfig.gps_baudrateIndex],baudRates[portConfig.telemetry_baudrateIndex],baudRates[portConfig.blackbox_baudrateIndex]);

程序中实际使用的波特率采用index来记录,节省空间。

const uint32_t baudRates[] = {0, 9600, 19200, 38400, 57600, 115200, 230400, 250000,400000, 460800, 500000, 921600, 1000000, 1500000, 2000000, 2470000}; // see baudRate_e

functionMask定义如下,如果需要自定义特殊的端口,可以根据表格选择。

typedef enum {FUNCTION_NONE                = 0,FUNCTION_MSP                 = (1 << 0),  // 1FUNCTION_GPS                 = (1 << 1),  // 2FUNCTION_TELEMETRY_FRSKY_HUB = (1 << 2),  // 4FUNCTION_TELEMETRY_HOTT      = (1 << 3),  // 8FUNCTION_TELEMETRY_LTM       = (1 << 4),  // 16FUNCTION_TELEMETRY_SMARTPORT = (1 << 5),  // 32FUNCTION_RX_SERIAL           = (1 << 6),  // 64FUNCTION_BLACKBOX            = (1 << 7),  // 128FUNCTION_TELEMETRY_MAVLINK   = (1 << 9),  // 512FUNCTION_ESC_SENSOR          = (1 << 10), // 1024FUNCTION_VTX_SMARTAUDIO      = (1 << 11), // 2048FUNCTION_TELEMETRY_IBUS      = (1 << 12), // 4096FUNCTION_VTX_TRAMP           = (1 << 13), // 8192FUNCTION_RCDEVICE            = (1 << 14), // 16384FUNCTION_LIDAR_TF            = (1 << 15), // 32768FUNCTION_FRSKY_OSD           = (1 << 16), // 65536FUNCTION_VTX_MSP             = (1 << 17), // 131072
} serialPortFunction_e;

3. 实例分析

# serial
serial 0 64 115200 57600 0 115200

注:这里其实不配也没有关系,不知道为什么厂家考虑使用了一个串口配置。

4. 配置情况

  • serial 20:USB VCP用于MSP通信(FUNCTION_MSP),系统默认配置
  • serial 0:厂家配置文件提供
# serial
serial 20 1 115200 57600 0 115200
serial 0 64 115200 57600 0 115200
serial 1 0 115200 57600 0 115200
serial 2 0 115200 57600 0 115200
serial 3 0 115200 57600 0 115200
serial 5 0 115200 57600 0 115200
serial 6 0 115200 57600 0 115200
serial 7 0 115200 57600 0 115200

以下是BetaFlight配置工具呈现的情况:
在这里插入图片描述

5. 参考资料

【1】BetaFlight开源代码框架简介
【2】BetaFlight统一硬件资源简单配置修改
【3】BetaFlight统一硬件配置文件研读


http://www.ppmy.cn/news/58983.html

相关文章

DNS解析过程

域名解析&#xff08;获取域名对应的IP的过程&#xff09; 域名 维基百科解释&#xff1a; 在互联网上&#xff0c;域名是一个字符串&#xff0c;用于标识行政自治、权威或控制的领域。域名通常用于标识通过互联网提供的服务&#xff0c;例如网站、电子邮件服务等。一般来说&a…

荔枝派Zero(全志V3S)开启 SSH 实现远程连接和文件传输

文章目录 前言一、配置 buildroot二、编译 buildroot三、拷贝到 SD 卡四、测试 ssh1、修改 /etc/ssh/sshd_config 文件2、运行 /usr/sbin/sshd3、使用 SecureCRT 测试4、使用 SecureFx 测试 前言 本文将在 Buildroot 根文件系统开启 ssh 功能。 一、配置 buildroot 1、在 bui…

深入浅出PyTorch:从零开始入门人工智能

一、什么是PyTorch&#xff1f; PyTorch是由Facebook AI研究院开发的Python深度学习框架&#xff0c;是目前最流行的深度学习框架之一。它通过动态计算图的方式实现了神经网络的构建和优化&#xff0c;同时能够高效地利用GPU进行计算加速。PyTorch具有易用、灵活和高效等特点&…

13. Pod 从入门到深入理解(二)

本章讲解知识点 Pod 容器共享 VolumeConfigMapSecretDownward APIEmptyDir VolumeHostPath Volume1. Pod 容器共享 Volume 1.1. Volume 的背景及需要解决的问题 存储是必不可少的,对于服务运行产生的日志、数据,必须有一个地方进行保存,但是我们的容器每一次重启都是“恢复…

初识vue-模板

目录 模板语法 模板插值 指令 条件渲染&#xff08;v-if &#xff1b;v-show&#xff09; 列表循环&#xff08;v-for&#xff09; ref JSX&#xff08;render渲染&#xff09; 条件渲染 列表渲染 八皇后框架-背景格&#xff08;循环&#xff09; 模板语法 Vue.js使用了…

nestJS入门cli 创建项目以及集成swagger和mysql

nestJs 1. 简介 介绍 NestJS NestJS 是一个基于 TypeScript 的渐进式 Node.js 框架&#xff0c;它结合了 OOP、FP 和 FRP 的元素&#xff0c;以提供一种现代且可扩展的开发体验。NestJS 建立在 Express.js 之上&#xff0c;但是提供了更加抽象和模块化的方式来编写应用程序。…

为了做低代码平台,这些年我们对.NET的DataGridView做的那些扩展

我们的低代码开发平台从一开始决定做的时候&#xff0c;就追求未来能够支持多种类型的客户端&#xff0c;目前支持Winform&#xff0c;Web&#xff0c;H5&#xff0c;FlutterAPP&#xff0c;当然了&#xff0c;未来也有可能会随着实际的需要淘汰掉一些客户端的。 为了系统更易…

springboot+vue垃圾分类网站(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的垃圾分类网站。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…