【无人机】1.编译betaflight和cleanflight的固件

在2023年,betaflight腾飞,而cleanflight已经结束更新,但是用cleanflight的原因是因为他最后版本支持stm32f103系列。不用betaflight因为手头还没有f405和f411,只有一个不支持的f407和f401,所以。。

接下来开始步骤:

下载地面站cleanflight和betaflight,在github上自行搜索,关键词cleanflight ,接着下载cleanflight和betaflight支持的固件,关键词cleanflight firmware。

使用的stm32f103c8t6板子选择src/main/target/NAZE

这里使用的是cleanflight的,2023年的betaflight还是支持f103的,编译步骤也是一样,但是要和适配版本的地面站配合使用。

下载交叉编译器

打开make/tool.mk文件可以看到,这个便是交叉编译器的网址,在浏览器打开会直接下载工具。

这里展示的交叉编译环境是虚拟机Ubuntu,将下载的交叉编译工具解压到/opt文件夹下,并在~/.bashrc文件添加gcc和g++的路径

sudo tar -xvf yourcross-tools.tar.bz2 -C /opt
# <<< cleanflight_gcc for NAZE <<<
export PATH=${PATH}:/opt/your-crosstools/bin
# >>> cleanflight_gcc for NAZE >>>

编译目标飞控

make TARGET=NAZE 
make clean TARGET=NAZE 

编译默认的发现FLASH溢出问题。通过去除部分功能减少体积

编译成功会在obj下生成hex文件,其中_.hex有元数据签名块,会加大hex体积,用.hex即可。

修改target.h文件

/** This file is part of Cleanflight.** Cleanflight is free software. You can redistribute* this software and/or modify this software under the terms of the* GNU General Public License as published by the Free Software* Foundation, either version 3 of the License, or (at your option)* any later version.** Cleanflight is distributed in the hope that it* will be useful, but WITHOUT ANY WARRANTY; without even the implied* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.* See the GNU General Public License for more details.** You should have received a copy of the GNU General Public License* along with this software.** If not, see <http://www.gnu.org/licenses/>.*/#pragma once#define USE_TELEMETRY_IBUS#define USE_TARGET_CONFIG
#define TARGET_VALIDATECONFIG
#define USE_HARDWARE_REVISION_DETECTION
#define TARGET_BUS_INIT#define DEFAULT_VOLTAGE_METER_SOURCE VOLTAGE_METER_ADC#define LED0_PIN                PB3
#define LED1_PIN                PB4#define USE_BEEPER
#define BEEPER_PIN              PA12#if defined(AFROMINI)
#define BEEPER_INVERTED
#define TARGET_BOARD_IDENTIFIER "AFMN"
#elif defined(BEEBRAIN)
#define BRUSHED_MOTORS
#undef USE_SERVOS
#define TARGET_BOARD_IDENTIFIER "BEBR"
#define USE_TARGET_CONFIG
#define DEFAULT_FEATURES FEATURE_MOTOR_STOP
#else
#define TARGET_BOARD_IDENTIFIER "AFNA"
// Beeper configuration is handled in 'config.c', since it is dependent on hardware revision
#endif//#define BARO_XCLR_PIN           PC13
//#define BARO_EOC_PIN            PC14#define INVERTER_PIN_UART2        PB2 // PB2 (BOOT1) abused as inverter select GPIO#define USE_RX_MSP#define USE_EXTI
#define MAG_INT_EXTI            PC14
#define USE_GYRO_EXTI
#define GYRO_1_EXTI_PIN         PC13
#define MMA8451_INT_PIN         PA5#define USE_MPU_DATA_READY_SIGNAL
#define USE_MAG_DATA_READY_SIGNAL#define USE_SPI
#define USE_SPI_DEVICE_2#define NAZE_SPI_INSTANCE       SPI2
#define NAZE_SPI_CS_PIN         PB12// We either have this 16mbit flash chip on SPI or the MPU6500 acc/gyro depending on board revision:
#define FLASH_CS_PIN            NAZE_SPI_CS_PIN
#define FLASH_SPI_INSTANCE      NAZE_SPI_INSTANCE#define GYRO_1_CS_PIN           NAZE_SPI_CS_PIN
#define GYRO_1_SPI_INSTANCE     NAZE_SPI_INSTANCE#define USE_FLASHFS
#define USE_FLASH_M25P16#define USE_GYRO
// #define USE_GYRO_MPU3050
#define USE_GYRO_MPU6050
// #define USE_GYRO_MPU6500
// #define USE_GYRO_SPI_MPU6500#define GYRO_1_ALIGN            CW0_DEG#define USE_ACC
//#define USE_ACC_ADXL345
//#define USE_ACC_BMA280
//#define USE_ACC_MMA8452
#define USE_ACC_MPU6050
// #define USE_ACC_MPU6500
// #define USE_ACC_SPI_MPU6500//#define ACC_ADXL345_ALIGN       CW270_DEG
//#define ACC_MMA8452_ALIGN       CW90_DEG
//#define ACC_BMA280_ALIGN        CW0_DEG// Barometer dropped to make flash space
//#define USE_BARO
//#define USE_BARO_MS5611 // needed for Flip32 board
//#define USE_BARO_BMP280// Compass dropped to make flash space
//#define USE_MAG
//#define USE_MAG_HMC5883
//#define MAG_HMC5883_ALIGN       CW180_DEG// Rangefinder dropped to make flash space
//#define USE_RANGEFINDER
//#define USE_RANGEFINDER_HCSR04
//#define RANGEFINDER_HCSR04_TRIGGER_PIN       PB0
//#define RANGEFINDER_HCSR04_ECHO_PIN          PB1
//#define RANGEFINDER_HCSR04_TRIGGER_PIN_PWM   PB8
//#define RANGEFINDER_HCSR04_ECHO_PIN_PWM      PB9#define USE_UART1
#define USE_UART2
/* only 2 uarts available on the NAZE, add ifdef here if present on other boards */
//#define USE_UART3
// #define USE_SOFTSERIAL1
// #define USE_SOFTSERIAL2
#define SERIAL_PORT_COUNT       4#define SOFTSERIAL1_RX_PIN      PA6 // PWM 5
#define SOFTSERIAL1_TX_PIN      PA7 // PWM 6#define SOFTSERIAL2_RX_PIN      PB0 // PWM 7
#define SOFTSERIAL2_TX_PIN      PB1 // PWM 8#define UART3_RX_PIN            PB11
#define UART3_TX_PIN            PB10#define USE_I2C
#define USE_I2C_DEVICE_2
#define I2C_DEVICE              (I2CDEV_2)// #define SOFT_I2C // enable to test software i2c
// #define SOFT_I2C_PB1011 // If SOFT_I2C is enabled above, need to define pinout as well (I2C1 = PB67, I2C2 = PB1011)
// #define SOFT_I2C_PB67#define USE_ADC
#define CURRENT_METER_ADC_PIN   PB1
#define VBAT_ADC_PIN            PA4
#define RSSI_ADC_PIN            PA1
#define EXTERNAL1_ADC_PIN       PA5#define DEFAULT_RX_FEATURE      FEATURE_RX_PPM// IO - assuming all IOs on 48pin package
#define TARGET_IO_PORTA         0xffff
#define TARGET_IO_PORTB         0xffff
#define TARGET_IO_PORTC         ( BIT(13) | BIT(14) | BIT(15) )#define USABLE_TIMER_CHANNEL_COUNT 14
#define USED_TIMERS             ( TIM_N(1) | TIM_N(2) | TIM_N(3) | TIM_N(4) )

通过注释USE_XX减少体积,这里去掉了软串口和不要的MPU6050,实际上什么功能都可以不要,毕竟目的只是尝试使用。

下载程序

hex二进制文件得到可以用stm32CubeProgramer或者其他方法烧录,这边用stlink下载,当然可以串口和jlink下载。

地面站查看

用ch340连接PA9和PA10串口引脚(电平3.3v)

连接电脑并查看端口,点击连接便会有以下界面

进阶使用以后更新。。

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

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

相关文章

刻意练习理论

刻意练习理论 一、理论概述 刻意练习&#xff08;Deliberate Practice&#xff09;是由心理学家安德斯艾利克森&#xff08;Anders Ericsson&#xff09;提出的一种系统化学习方法&#xff0c;核心观点是卓越并非源于天赋&#xff0c;而是通过针对性训练获得。其理论基础来自对…

【FastDDS】Layer DDS之Domain ( 04-DomainParticipantFactory)

Fast DDS 域参与者工厂&#xff08;DomainParticipantFactory&#xff09;详解 一、域参与者工厂&#xff08;DomainParticipantFactory&#xff09;基础定义 域参与者工厂&#xff08;DomainParticipantFactory&#xff09;的唯一作用是实现域参与者&#xff08;DomainPartici…

树莓集团建数字产业学院:产教融合强化成渝人才链与产业链衔接

成渝地区双城经济圈建设是国家重大发展战略&#xff0c;而人才链与产业链的有效衔接&#xff0c;是推动成渝地区产业高质量发展的关键。树莓集团顺应时代发展需求&#xff0c;搭建数字产业学院&#xff0c;以产教融合为纽带&#xff0c;不断强化成渝人才链与产业链的衔接&#…

在 ASP.NET 8 WebAPI 中使用不同的提供程序验证多个令牌(Token)及常见问题解答

介绍作为 ASP.NET 框架的最新版本&#xff0c;ASP.NET 8提供了强大的功能&#xff0c;可用于构建安全且可扩展的 Web API。API 开发的一个关键方面是身份验证&#xff0c;它确保只有授权用户或服务才能访问受保护的资源。在本文中&#xff0c;我们将探讨如何在 ASP.NET 8 API 中…

工业相机为啥丢包?黑条 / 撕裂的原因 + 解决办法,一看就懂

工业相机为啥丢包&#xff1f;黑条/撕裂的原因解决办法&#xff0c;一看就懂 工业相机拍图时出现黑条、撕裂、花屏&#xff0c;别急着换设备——大概率是“数据丢包”在搞鬼。尤其是高频率、高分辨率采图时&#xff0c;数据传输稍出问题&#xff0c;图像就会出故障。今天用“快…

【IQA技术专题】NIQE代码讲解

本文是对NIQE图像质量评价指标的代码解读&#xff0c;原文解读请看NIQE文章讲解。 本文的代码来源于IQA-Pytorch工程。 1、原文概要 NIQE实现了无参考的图像质量评价指标&#xff0c;可以有效地对图像的感知&#xff08;Fidelity&#xff09;质量进行评估。本文提出了一种完全…

配置时钟分频与倍频

在STM32微控制器中&#xff0c;“配置时钟分频与倍频”是一个关键步骤&#xff0c;它允许开发者根据应用需求调整系统时钟的频率。以下是对这一概念的详细解释&#xff1a;时钟源与基础频率时钟源&#xff1a;STM32微控制器通常支持多种时钟源&#xff0c;如高速外部时钟&#…

【深度学习新浪潮】视觉大模型在预训练方面有哪些关键进展?

近年来,视觉大模型在预训练领域取得了多项突破性进展,涵盖架构设计、多模态融合、数据利用效率及训练策略等多个维度。以下结合2024-2025年最新研究成果,从技术创新和应用突破两方面展开分析: 一、架构创新:突破分辨率与模态限制 超高分辨率预训练 伯克利与英伟达提出的P…

Elasticsearch原理篇

Elasticsearch原理篇写在前面&#xff1a;用之于手&#xff0c;先明于心一、传统数据库的瓶颈&#xff1a;当数据量成为负担1. 千万级数据下的性能衰减2. 分页查询的“深水陷阱”3. 关联查询的扩展难题4. 全文检索能力薄弱二、Elasticsearch 的优势&#xff1a;为搜索而生的分布…

《我是如何用C语言写工控系统的漏洞和Bug》连载(1)内容大纲

第一部分&#xff1a;导论与基础 第1章 引言 1.1 工控系统的独特性和重要性 实时性、可靠性、长生命周期的要求与IT系统的差异&#xff1a;后果不再是信息泄露&#xff0c;而是物理世界的中断与破坏 1.2 为什么C语言依然是工控领域的主流&#xff1f; 性能、底层硬件操作、历史…

.Net程序员就业现状以及学习路线图(三)

一、.Net程序员就业现状分析 1. 市场需求与薪资水平 ‌市场需求两极分化‌&#xff1a;2025年数据显示&#xff0c;.Net开发岗位全国占比约0.009%&#xff0c;主要集中在深圳、上海等一线城市 2 3。高端岗位&#xff08;云原生/AI集成方向&#xff09;年薪可达36-60万&#xff…

云计算学习100天-第40天 -普罗米修斯1

目录 Prometheus 概述—— 安装prometheus 案例 环境说明 实验步骤 一、prometheus服务器配置时间同步 二、安装Prometheus服务器 配置文件说明 三、编写服务启动文件并启动服务 四、访问web页面 Prometheus 概述—— Prometheus是一个开源系统监控和警报工具包&a…

高效文本处理:cut、sort、uniq 和 tr 命令详解与实战

前言 &#x1f52a; 一、cut —— 按列或字符截取 常用选项&#xff1a; 示例&#xff1a; &#x1f504; 二、sort —— 排序&#xff08;默认按行首字符升序&#xff09; 常用选项&#xff1a; 示例&#xff1a; &#x1f9fc; 三、uniq —— 去除连续重复行 常用选项…

时序数据库选型指南:Apache IoTDB为何成为工业物联网首选?

引言&#xff1a;时序数据管理的时代挑战 随着工业4.0和物联网技术的快速发展&#xff0c;全球时序数据呈现爆炸式增长。据IDC预测&#xff0c;到2025年&#xff0c;全球物联网设备产生的数据量将达到79.4ZB&#xff0c;其中超过60%为时序数据。这类数据具有显著特征&#xff…

Ubuntu查看开机以来修改的文件

获取本次开机时间 uptime -s获取开机时间之后修改的文件 find /home -type f -newermt "2025-09-03 18:10:12"解读&#xff1a;-type f意为只查找类型为“普通文件”&#xff08;file&#xff09;&#xff0c;不包括目录、链接等。newermt 代表“修改时间比指定时间新…

差分隐私在运营指标:ABP 的 DP 计数器与噪声预算

&#x1f6a6; 差分隐私在运营指标&#xff1a;ABP 的 DP 计数器与噪声预算 &#x1f4da; 目录&#x1f6a6; 差分隐私在运营指标&#xff1a;ABP 的 DP 计数器与噪声预算0. TL;DR &#x1f680;&#x1f4c8; 一图看懂&#xff08;写入→发布→预算→加噪&#xff09;1. 背景…

洛谷 P1077 [NOIP 2012 普及组] 摆花-普及-

P1077 [NOIP 2012 普及组] 摆花 题目描述 小明的花店新开张&#xff0c;为了吸引顾客&#xff0c;他想在花店的门口摆上一排花&#xff0c;共 mmm 盆。通过调查顾客的喜好&#xff0c;小明列出了顾客最喜欢的 nnn 种花&#xff0c;从 111 到 nnn 标号。为了在门口展出更多种花&…

时序数据库选型指南:为何Apache IoTDB成为工业物联网首选

引言&#xff1a;时序数据管理的挑战与机遇 在工业4.0与物联网技术深度融合的今天&#xff0c;全球设备产生的时序数据量正以指数级增长。据IDC预测&#xff0c;到2025年物联网设备产生的数据将达79.4ZB&#xff0c;其中60%为时序数据。这类数据具有高频采集&#xff08;毫秒级…

【C++】C++入门—(中)

前言&#xff1a;上一篇文章我们介绍了C入门的一些基础的语法&#xff0c;将了命名空间&#xff0c;缺省参数等。这篇文章我们就来介绍剩余的语法。 文章目录一&#xff0c;函数重载二&#xff0c;引用2.1引用的概念和定义2.2引用的特性2.3引用的引用场景2.3.1做函数形参&#…

嵌入式Linux驱动开发:i.MX6ULL按键中断驱动(非阻塞IO)

嵌入式Linux驱动开发&#xff1a;i.MX6ULL按键中断驱动&#xff08;非阻塞IO&#xff09; 概述 本文档详细介绍了在i.MX6ULL开发板上实现按键中断驱动的完整过程。该驱动程序实现了非阻塞IO操作&#xff0c;允许用户空间应用程序通过poll系统调用高效地监控按键状态变化&…