【無人機】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
英文地址,請注明出處:http://en.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系統調用高效地監控按鍵狀態變化&…