BetaFlight代码解析(12)—电机输出系统

(一~)Betaflight开源AT32飞控Makefile详解 AT32国产飞控最近比较火,佬儿出了一些关于BF飞控移植的文章,但不太详细。这里记录了本人学习BF飞控时关于Makefile部分的总结,留待参照。 阅读详情

目的和范围

电机输出系统负责将飞行控制指令转换为驱动电机和舵机的PWM信号。该系统接收来自混控器的PID控制器输出和油门指令,并生成电子调速器(ESC)和舵机所需的精确时序信号。

系统架构

电机输出系统位于飞行控制流程的最后阶段,接收处理后的控制信号并将其转换为硬件特定的 PWM 输出。

电机输出系统概述


核心数据结构

PWM输出端口结构

该pwmOutputPort_t结构代表每个电机或伺服输出通道:

场地类型目的
channeltimerChannel_t使用 CCR 寄存器和 TIM 实例配置定时器通道
pulseScalefloat脉冲宽度计算的比例因子
pulseOffsetfloat脉冲定时偏移值
forceOverflowbool强制特定协议的定时器溢出
enabledbool通道启用/禁用状态
ioIO_t输出的 GPIO 引脚分配

全球汽车管理

模拟信号处理

终点计算

该analogInitEndpoints()函数计算电机控制的PWM脉冲宽度范围,可处理普通飞行模式和3D飞行模式:

普通模式与3D模式操作

模式解除武装价值输出范围死区
普通的motorConfig->mincommandminThrottle到maxthrottle不适用
3Dflight3DConfig()->neutral3dlimit3d_low到limit3d_highdeadband3d_low到deadband3d_high

电机控制接口

汽车状态管理

该系统提供多种电机状态管理和验证功能:

伺服输出支持

电机输出系统还通过专用配置结构处理伺服控制:

伺服配置结构

场地类型目的
servoCenterPulseuint16_t中心位置脉冲宽度(通常为 1500μs)
servoPwmRateuint16_t更新频率(50-498Hz)
ioTags[MAX_SUPPORTED_SERVOS]ioTag_t[]伺服输出的 GPIO 引脚分配

伺服控制功能

  • servoDevInit()根据配置初始化伺服输出通道
  • pwmWriteServo()将 PWM 值写入指定的伺服索引

与定时器系统的集成

电机输出系统高度依赖硬件定时器抽象层来生成精确的PWM信号:

系统依赖关系

电机输出系统与 Betaflight 的多个其他子系统连接:

  • PID控制器:接收电机混合的控制输出
  • 遥控控制:flight3DConfig_t3D模式配置入口
  • 功能系统:检查FEATURE_3D启用状态
  • 电机配置:motorConfig_t用于定时参数
  • 定时器系统:依赖于硬件定时器抽象层生成 PWM 信号。
BetaFlight开源飞控源码分析 BetaFlight是穿越机领域比较成熟的开源飞控,本篇文章主要分析一下源代码以及如何使用这个开源代码 阅读详情

相关推荐

BetaFlight代码解析(5)— PID控制器

Betaflight的PID控制器是保持飞行器稳定的核心算法,通过比例、积分、微分三组件实时校正姿态误差。该系统还包含前馈、动态D项限制、反重力等高级功能,通过多PID配置文件实现灵活调参,并提供多种调试模式分析性能。这些优化使控制器在保证稳定性的同时提高响应速度,是飞行调优的关键部分。

rainercool的专栏 1489

Betaflight Configurator中飞翼模式舵机配置的常见误区解析

Betaflight Configurator中飞翼模式舵机配置的常见误区解析 背景概述 在无人机飞控系统中,Betaflight作为一款流行的开源固件,其配置工具Betaflight Configurator被广泛应用于各类飞行设备的设置。然而,在飞翼(Flying Wing)这种特殊布局的配置过程中,许多用户遇到了舵机编号显示与实际输出不符的问题,导致配置过程异常困难。 问题现象 当用户在Be...

gitblog_07429的博客 777

BetaFlight代码解析(14)—定时器系统

摘要:Betaflight的定时器系统作为硬件抽象层,管理微控制器的定时器外设,为RC信号测量、PWM生成等关键功能提供支持。该系统通过timerHardware_t结构实现硬件无关的定时器通道表示,包含全局数组管理所有可用通道。提供资源分配机制、输入捕获/输出比较配置接口,以及基于链表的灵活回调系统处理定时器事件。系统还整合DMA实现高效数据传输,特别适用于电机控制等高频应用,支持DShot等协议通过精确的定时器配置和DMA传输实现。

rainercool的专栏 1083

BetaFlight开源代码框架简介

框架设计重点要做到各切分模块的业务融合,分析的主要考量点:C语言工程代码函数入口为main,之前启动及C环境初始化代码不做介绍,启动文件代码文件(lib\main\STM32H7\Drivers\CMSIS\Device\ST\STM32H7xx\Source\Templates\arm\startup_stm32h745xx.s)。业务逻辑方面主要是从main来分析框架代码,这里也不会对HAL(Hardware Adapter Layer)做分析,对底层感兴趣的朋友可以从STM官网或者其他网站得到更多的S

lida2003的专栏 1万+

BetaFlight代码解析(1)- 概览

本文概述了开源飞行控制器固件Betaflight的系统架构和功能特性。该固件采用模块化设计,支持多旋翼和固定翼飞行器,兼容STM32系列处理器。核心功能包括运动控制、传感器集成、通信系统和用户界面,采用GPLv3许可证。项目采用年度双版本发布周期,支持统一目标配置和持续集成开发流程,要求开发者遵循严格的贡献规范。用户可通过配置工具和社群支持快速入门。

rainercool的专栏 1357

Betaflight入门配置要点:电机与电调测试

刚装好飞控?别急着起飞,先用Betaflight安全完成电机转向、电调通信和油门响应测试。重点检查DShot协议是否握手成功、各电机是否按序响应,避免因接线或参数错误导致炸机。Betaflight的CLI指令和电机测试界面是排查问题的利器。

weixin_29050829的博客 613

BetaFlight代码解析(13)—脉宽调制和电机控制

本文档介绍了Betaflight中的PWM输出系统架构,该系统通过硬件抽象层管理定时器通道,为电机和舵机提供控制信号。系统核心包括pwmOutputPort_t数据结构,负责电机值到PWM脉冲的转换,支持标准飞行和3D飞行两种配置模式。其中3D模式支持双向电机控制,并设有中立点和死区保护。系统通过timerChannel_t结构与硬件定时器集成,提供频率、周期等参数配置功能,同时实现了边界检查等安全机制。此外,系统还集成了伺服控制功能,但使用与电机不同的定时参数。

rainercool的专栏 605

BetaFlight代码解析(4)- 飞行控制系统

摘要:Betaflight飞行控制系统采用模块化实时架构,核心包括PID控制器(处理三轴姿态误差)、IMU传感器融合(提供精确姿态数据)和混控系统(转换控制指令)。系统支持多种飞行模式,通过任务调度器确保确定性执行(1-8kHz),并提供调试工具(PID时序分析、黑匣子记录)和配置文件管理(4种PID/速率配置)。其精密控制算法(含反重力/前馈等)与可扩展架构,能适应各类飞行器配置,实现稳定且高性能的飞行控制。(149字)

rainercool的专栏 1070

超详细版:Betaflight竞速机型电机响应优化

深入讲解如何在betaflight中优化竞速无人机的电机响应,提升飞行性能与操控精准度。通过参数微调与滤波设置,充分发挥电机和飞控的潜力,实现更敏捷的动态表现。

weixin_42506884的博客 780

BetaFlight之穿越机F4飞控设置

BetaFlight之穿越机设置 在这里插入图片描述

u011322358的博客 3万+

Betaflight开源飞控系统——代码架构与任务调度系统初探以及视频字符叠加OSD源码详细实战分析

Betaflight开源飞控系统采用模块化架构设计,核心包含硬件抽象层、传感器处理层、飞行控制层和用户接口层。系统采用基于时间片的任务调度机制,将任务分为高、中、低三个优先级等级,其中高优先级任务(如传感器数据采集)执行周期最短(1.25ms),中等优先级任务(如PID控制)周期为2.5ms,低优先级任务(如OSD更新)周期为20ms。OSD系统AT7456E等芯片,提供电池电压、姿态角、GPS等信息的实时显示,并允许通过CLI和配置菜单进行自定义布局设置。系统通过任务调度优化、显示按需更新和硬件接口优化等

bother3000的博客 3161

Betaflight飞控系统2025.12版本:如何实现专业级飞行性能的完整指南

作为开源飞控领域的领军者,Betaflight 2025.12版本为无人机爱好者带来了前所未有的飞行控制体验。无论您是FPV竞速新手还是专业航拍玩家,这套完整的飞行控制系统都能帮助您实现精准操控和极致性能表现。 ## 🎯 四大核心功能模块:全面提升飞行品质 ### 精准电机控制技术 Betaflight支持多种先进的电机控制协议,让您的无人机响应更加灵敏: - **DShot数字协议**:1

gitblog_00751的博客 880

基于8520有刷电机打造微型六轴飞行器:轻量化设计与Betaflight调参全攻略

多旋翼飞行器的核心在于动力系统与飞控的协同。其基本原理是通过多个电机产生升力,并由飞行控制器(飞控)实时调整各电机转速,以维持姿态稳定与实现机动控制。这项技术的关键价值在于为无人机提供了稳定、灵活的飞行平台,广泛应用于航拍、巡检、教育与DIY创客领域。在微型无人机设计中,如何在有限的动力下实现稳定飞行是一大挑战,这涉及到精密的**轻量化结构设计**与细致的飞控参数整定。本文聚焦于使用成本极低的8520有刷电机,结合**Betaflight调参**,从头构建一架六轴飞行器的完整过程,为入门者与极限轻量化爱好者

weixin_33681778的博客 410

【Betaflight源码学习】Betaflight 嵌入式操作系统架构解析:与 FreeRTOS 的深度对比

Betaflight飞控系统采用轻量级自研调度机制,与FreeRTOS形成鲜明对比。该系统基于时间片的非抢占式调度,通过scheduler()函数顺序执行任务,确保飞控关键任务获得确定性执行时间。其核心taskDescriptor_t结构体包含任务函数指针、执行频率等参数,所有任务在枚举列表中明确定义。这种高度优化的调度方式为无人机控制提供了低延迟保障,但牺牲了部分系统灵活性。两种架构在任务调度策略、实时性保障等方面存在根本差异,直接影响飞控系统性能表现。

曾记否@ 1828

5分钟搞定:用Pyannote和Whisper实现带说话人分离的语音转文字(附完整代码)

本文详细介绍了如何快速构建一个集成了说话人分离功能的语音转文字系统。通过结合OpenAI的Whisper模型进行高精度语音识别和Pyannote模型实现说话人分离,并提供了完整的代码实现、环境搭建指南以及核心的对齐与合并逻辑,帮助开发者高效处理会议录音、访谈等多说话人音频,实现自动化转录。

threejs5artist的博客 633

TypeScript版LangChain环境配置全攻略:从零搭建AI应用开发环境

大语言模型(LLM)作为当前AI应用开发的核心技术,通过API接口为开发者提供了强大的自然语言处理能力。其工作原理基于Transformer架构,通过预训练和微调实现对人类语言的深度理解与生成。在工程实践中,开发者需要将LLM与外部工具、数据源和业务逻辑有效集成,这正是LangChain框架的技术价值所在——它提供了标准化的组件和接口,简化了复杂AI应用的构建流程。应用场景涵盖智能客服、内容生成、数据分析助手等多个领域。本文聚焦于TypeScript/JavaScript生态下的LangChain开发,详细

weixin_29055699的博客 250

BetaFlight代码解析(2)- 系统架构

Betaflight飞行控制系统采用实时控制架构,核心为协作式任务调度器,协调传感器处理、电机控制等子系统。系统从main()入口初始化后进入调度循环,通过参数组框架管理配置,支持运行时切换。关键组件包括电机混控器(支持多种机型混控算法)和状态管理系统(处理启动、飞行模式及错误状态)。系统采用共享全局状态而非消息传递实现子系统通信,如蜂鸣器通过beeper()函数与飞行控制联动。整个架构注重实时性,通过配置持久化和类型安全设置确保稳定运行。

rainercool的专栏 438

Rancher操作手册(v2.7.5-rc1)

选择需要创建ingress的命名空间 ==》填写ingress名称 ==》在“规则”一栏,选择“Prefix” ==》输入访问路径 ==》选择访问路径对应的service ==》如果需要继续添加访问路径,点击“添加路径”,重复前面的步骤即可。选择需要创建Deployment的命名空间 ==》填写Deployment名称 ==》选择通用 ==》填写容器名称 ==》填写镜像 ==》选择镜像的拉取密文 ==》点击添加端口或Service。点击左侧菜单栏的集群里的“项目/命名空间”,点击右下角的“创建命名空间”。

weixin_60197334的博客 5567

Betaflight飞控系统深度解析:2025.12版本性能优化与架构演进

Betaflight开源飞控系统作为无人机飞行控制领域的核心技术平台,在2025.12版本中实现了前所未有的性能突破。本文将从系统架构、核心算法、硬件兼容性三个维度,深度剖析Betaflight的技术演进路径,为开发者提供完整的性能优化解决方案。 ## 核心关键词布局与SEO策略 **核心关键词**:Betaflight飞控、STM32飞控、开源飞控、无人机控制、飞行算法 **长尾关键词**

gitblog_00983的博客 1151

【一】PCIe基础知识

Linux PCIe基础知识

他山之石 可以攻玉 4万+

Python爬虫-爬取汽车之家各品牌周销量榜数据,进行数据分析

本文是该专栏的第57篇,后面会持续分享python爬虫干货知识。本文中,笔者已经整理20篇汽车平台相关的爬虫项目案例。对此感兴趣的同学,可以直接翻阅查看。同样,笔者在本文中将继续以汽车之家平台为例子。基于Python爬虫,实现批量爬取“各品牌周销量榜单”的数据。废话不多说,具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。接下来,跟着笔者直接往下看正文详细内容。(附带完整代码)

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 365

BetaFlight参数配置解读

BetaFlight参数配置解读

perseverance51博客 3465

Android CCodec (十七) 硬件解码调用分析-1(基于V4l2)

简单的分析V4L2DecodeComponent和其相关内容,后续针对解码调用单独分析。

给大佬递杯卡布奇诺的博客 6592

Betaflight飞控终极指南:2025.12版本飞行性能优化完整解决方案

Betaflight开源飞控项目2025.12版本代表了无人机飞行控制技术的最新演进成果,为FPV飞行爱好者提供前所未有的极致性能体验。作为开源飞控系统的领导者,Betaflight持续推动无人机技术的边界,让每位飞手都能享受到专业级的飞行控制能力。 ## 🚀 技术演进历程:从Baseflight到Betaflight 2025.12 **2014-2016** → Baseflight时代

gitblog_01002的博客 1442

ATT MTU 交换机制:提升 BLE 数据传输效率的关键

在低功耗蓝牙(BLE)技术的面试中,ATT MTU 交换机制始终是高频考点。无论是芯片厂商的固件开发岗,还是物联网设备的协议栈调试岗,面试官都爱通过这个知识点考察候选人对 BLE 数据传输底层逻辑的理解。本文将系统梳理核心考点,结合历年真题详解应答思路,轻松应对这类问题。​

byte轻骑兵的技术小窝 2410

【异常】Claude Code CLI工具 模型加载异常 /init报错排查与完整解决方案 There‘s an issue with the selected model (glm-5). It

此类跨厂商模型配置报错,核心诱因是API生态的兼容性不匹配。优先使用工具原生支持的模型体系,可快速解决90%以上的同类报错;若需跨厂商使用目标模型,需完成API端点、鉴权密钥、模型ID的全链路适配,确保全流程配置合规,即可完成异常修复。

奶爸的编程之路,也就一周冷个三天 3697
上一篇: BetaFlight代码解析(11)— 遥控输入和故障安全
下一篇: BetaFlight代码解析(13)—脉宽调制和电机控制
timmy-uav
博客等级 码龄26年 526粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

timmy-uav

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值