cuav系列飞控关于MAIN-IO 的输出数量控制

在无人机设置中,经常涉及到使用AUX辅助通道来控制附属设备,或者直接把主控输出通道放到AUX。但是CUAV系列飞控按照常规设置并不能正常启用AUX输出,通过查看飞控源码找到 原因
一些机型例如24001使用了12个电机,常规主通道只有8个,所以按照主通道6个电机,辅助通道6个电机安排
在这里插入图片描述
在代码中明显可以看出AUX通道被注释没有启用。

constexpr io_timers_t io_timers[MAX_IO_TIMERS] = {initIOTimer(Timer::Timer5, DMA{DMA::Index1}),initIOTimer(Timer::Timer4, DMA{DMA::Index1}),// initIOTimer(Timer::Timer1, DMA{DMA::Index1}),// initIOTimer(Timer::Timer12, DMA{DMA::Index1}),
};constexpr timer_io_channels_t timer_io_channels[MAX_TIMER_IO_CHANNELS] = {// MAINinitIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel1}, {GPIO::PortH, GPIO::Pin10}),initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel2}, {GPIO::PortH, GPIO::Pin11}),initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel3}, {GPIO::PortH, GPIO::Pin12}),initIOTimerChannel(io_timers, {Timer::Timer5, Timer::Channel4}, {GPIO::PortI, GPIO::Pin0}),initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel1}, {GPIO::PortD, GPIO::Pin12}),initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel2}, {GPIO::PortD, GPIO::Pin13}),initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel3}, {GPIO::PortD, GPIO::Pin14}),initIOTimerChannel(io_timers, {Timer::Timer4, Timer::Channel4}, {GPIO::PortD, GPIO::Pin15}),// AUX// initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel1}, {GPIO::PortE, GPIO::Pin9}),// initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel2}, {GPIO::PortE, GPIO::Pin11}),// initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel3}, {GPIO::PortA, GPIO::Pin10}),// initIOTimerChannel(io_timers, {Timer::Timer1, Timer::Channel4}, {GPIO::PortE, GPIO::Pin14}),// initIOTimerChannel(io_timers, {Timer::Timer12, Timer::Channel1}, {GPIO::PortH, GPIO::Pin6}),// initIOTimerChannel(io_timers, {Timer::Timer12, Timer::Channel2}, {GPIO::PortH, GPIO::Pin9}),
};

/* PWM */
#define DIRECT_PWM_OUTPUT_CHANNELS 8
输出控制也被控制在了8个

/* configuration limits */
#ifdef BOARD_NUM_IO_TIMERS
#define MAX_IO_TIMERS BOARD_NUM_IO_TIMERS
#else
#define MAX_IO_TIMERS 2
#endif
IO通道计时器启用数量也只是被限制了2个,计时器启用数量依靠DIRECT_PWM_OUTPUT_CHANNELS 决定
cuav的boards配置文件board_config.h中没有
#define BOARD_NUM_IO_TIMERS 6
所以计时器直接使用了
#define MAX_IO_TIMERS 2

启用4个计时器需要对应的修改dma的映射
在这里插入图片描述
启用所有的FMU输出
#define DIRECT_PWM_OUTPUT_CHANNELS 14

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35440.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度清洁:使用npm prune命令优化你的Node.js项目

标题:深度清洁:使用npm prune命令优化你的Node.js项目 在Node.js的世界中,随着项目的不断扩展,package.json文件中的依赖项可能会变得冗余和膨胀。未使用的依赖项不仅会占用不必要的磁盘空间,还可能引入安全风险。幸运…

【神经网络】CNN网络:深入理解卷积神经网络

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! CNN网络:深入理解…

Leetcode 股票买卖

买卖股票最佳时机 I II 不限制交易次数 prices [7,1,5,3,6,4] 启发思路:最后一天发生了什么? 从第0天到第5天结束时的利润 从第0天到第4天结束时的利润 第5天的利润 (第5天的利润:0/-4/4) 关键词:天…

Java中请写出最常见的10个RuntimeException

在Java中,RuntimeException是所有未检查异常(Unchecked Exception)的基类,未检查异常不需要显式地捕获或声明在方法签名中。以下是10个最常见的RuntimeException子类: NullPointerException 当应用程序试图在需要对象的…

常用的企业级快速传输大文件平台

在当今企业运营中,数据管理成了一项不可或缺的任务。企业每日需处理庞大的数据量,这包括高清视频、大量数据集和复杂的设计图纸等大型文件。然而,传统的文件传输手段,比如通过电子邮件发送附件或使用FTP服务,已经难以满…

完成一个有趣的Web期末大作业(html、css、javascript、MySQL、Node.js)

题目:学校老师的要求很开放,要自己做一个感兴趣的网页,要求使用基础的html、css和javascript,后端要使用数据库。 网上都是各种管理系统,看多了觉得没啥意思,要做一个自己感兴趣的网站。近几年沉迷犬夜叉这…

“论大数据处理架构及其应用”写作框架,软考高级,系统架构设计师

论文真题 大数据处理架构是专门用于处理和分析巨量复杂数据集的软件架构。它通常包括数据收集、存储、处理、分析和可视化等多个层面,旨在从海量、多样化的数据中提取有价值的信息。Lambda架构是大数据平台里最成熟、最稳定的架构,它是一种将批处理和流…

达梦数据库增删改查语句

库名(CONFIRMATION) 表名(APP_CONF_NODE),字段(USER_ACCOUNTS) 前言:创建表 CREATE TABLE "CONFIRMATION"."APP_CONF_NODE" ("ID" BIGINT IDENTITY(…

AI图书下载:《ChatGPT百万富翁-最快赚钱之道》

《ChatGPT百万富翁-最快赚钱之道》(ChatGPT Millionaire. The Fastest Way To Make Real Money)是一本集合了五本书内容的作品,由Harper Hanz编写,旨在探讨如何利用ChatGPT这一强大的自然语言处理系统创造被动收入。 以下是该书各…

Mysql索引和事务

一、索引是做什么的? 很多时候,当你的应用程序进行SQL查询速度很慢时,应该想想是否可以建索引。 大多数MySQL索引(PRIMARY KEY、UNIQUE、INDEX和FULLTEXT)在B树中存储。只是空间列类型的索引使用R-树,并且MEMORY表还支持hash索引。 索引是…

Ubuntu-22.04 安装禅道

🚀write in front🚀 🔎大家好,我是黄桃罐头,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🎁欢迎各位→点赞👍 收藏⭐️ 留言📝​…

使用setpci 读取/修改pci寄存器

setpci setpci是一个查询和修改pci寄存器的linux 命令: root@PTWH0108:~# setpci --help Usage: setpci [<options>] (<device>+ <reg>[=<values>]*)*General options: -f Dont complain if theres nothing to do -v Be …

螺栓的拧紧扭矩计算

对于采用控制扭矩方式拧紧的螺栓连接而言&#xff0c;螺栓扭矩是一个非常重要的参数&#xff0c;扭矩的大小决定了螺栓预紧力的大小&#xff0c;而螺栓预紧力又是预紧型螺栓连接的灵魂。前文讨论了螺栓扭矩的校验&#xff0c;即如何验证螺栓扭矩是否满足设计要求&#xff0c;与…

脚本工具库】划分图像数据集(附源码)

在机器学习和深度学习任务中&#xff0c;数据集的划分是非常重要的一步。我们通常需要将数据集划分为训练集、验证集和测试集&#xff0c;以便进行模型训练和评估。手动操作不仅耗时&#xff0c;而且容易出错。为了解决这个问题&#xff0c;我们可以编写一个Python脚本&#xf…

python-登录界面-demo

文章目录 前言python-登录界面-demo 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢迎常来啊!!! python-…

Flask之表单

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、HTML表单 二、使用Flask-WTF处理表单 2.1、定义WTForms表单类 2.2、输出HTML代码 2.3、在模板中渲染表单 三、处理表单数据 3.1、提…

geojson文件默认已有的style会导致webGL渲染错误处理办法

geojson文件默认已有的style会导致webGL渲染错误处理办法 相关链接&#xff1a; 功能示例(Vue版) | Mars3D三维可视化平台 | 火星科技 代码&#xff1a; export function showDraw(isFlyTo) {removeLayer()graphicLayer new mars3d.layer.GeoJsonLayer({data: {type: &quo…

有两个长方柱,其高、宽、长分别为12,20,25;10,14,20。求它们的体积。编写一个基于对象的程序,在类中用带参数的构造函数对数据成员初始化

在上一篇文章中的构造函数不带参数&#xff0c;在函数体中对数据成员赋初值。这种方式使该类的每一个对象的数据成员都得到同一组初值&#xff08;例中各个对象的数据成员的初值均为0)。但有时用户希望对不同的对象赋予不同的初值&#xff0c;这时就无法使用上面的办法来解决了…

Open AI 前 Superalignment部门研究员Leopold Aschenbrenner的关于Superintelligence担忧的真挚长文

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

理解MySQL数据库主键:从基础概念到实践

一、前言 在关系型数据库中&#xff0c;主键&#xff08;Primary Key&#xff09;是一个至关重要的概念。它不仅用于唯一标识表中的每一行数据&#xff0c;还在保证数据完整性和执行高效查询方面发挥着重要作用。本篇文章将深入探讨MySQL数据库主键的相关知识&#xff0c;包括…