查看: 24302|回復: 0
打印 上一主題 下一主題

【飛控開(kāi)發(fā)高級教程1】瘋殼·開(kāi)源編隊無(wú)人機-飛控整機代碼走讀、編譯與燒寫(xiě)

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2022-7-27 11:02:22 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
COCOFLY教程
——瘋殼·無(wú)人機系列
飛控整機代碼走讀、編譯與燒寫(xiě)





圖1


一、代碼架構
  飛控的整體代碼工程由 8 個(gè)工作組組成,分別是 Ctrl、Driver、VL53L1X、STM32_LIB、USB、USB/Lib、StartUP 以及 Drv_Point,如下圖所示。


圖2
  各個(gè)組的具體的代碼功能如下表所示。


表1

二、代碼走讀

  系統的主函數部分是整個(gè)代碼的起始運行位置,在主函數內主要做兩個(gè)事情:1、初始化外設及參數,2、輪詢(xún)線(xiàn)程。


圖3
  系統的每一個(gè)線(xiàn)程都已經(jīng)分配好了運行周期,在不同的線(xiàn)程里執行不同的事情,線(xiàn)程的切換通過(guò)函數指針的形式切換,而系統的運行時(shí)間由 sysTick 提供即系統的“滴答”時(shí)鐘。各個(gè)線(xiàn)程的入口如下。


圖4
  分別有 1000ms 周期的任務(wù)、50ms 周期的任務(wù)、20ms 周期的任務(wù)、10ms 周期的任務(wù)、6ms 周期的任務(wù)、4ms 周期的任務(wù)、3ms 周期的任務(wù)以及 2ms 周期的任務(wù)。
  整個(gè)飛控可以平穩飛行,重點(diǎn)在于控制部分,即工作組“Ctrl”里面的代碼。如下圖所示為“Ctrl”組的代碼框架。


圖5
  其中與遙控器、上位機的數據通信處理包含在 Data_Transfers.c 內。里面無(wú)非就是對數據包進(jìn)行拆解包、封裝包等。如下圖所示為對接收到的遙控器數據進(jìn)行解包分析的代碼。














  三軸數據的獲取處理在 mpu_perpare.c 內,如下圖所示。




圖15
  PID 控制相關(guān)代碼集中在 Ctrl.c 及 Alt_Ctrl.c 內,其中 Ctrl.c 負責角度環(huán)、角速度環(huán) PID 控制,而 Alt_Ctrl.c 則負責高度環(huán)、高度速度環(huán)的 PID 控制。
  IMU.c 和 MotionCal.c 是保證整個(gè)飛控平穩飛行的重要一環(huán),這兩個(gè) c 文件主要負責飛控的姿態(tài)解算、數據融合處理等。


  工作組“USB”以及“USB/Lib”,負責通過(guò) STM32 自帶的 USB,虛擬出串口,方便與上位機進(jìn)行通信。
  此外為了保護開(kāi)發(fā)者的勞動(dòng)成果,Player_Flight.lib 還封裝了秘鑰驗證激活算法、多機編隊控制、水平方向的速度和位置環(huán)的 PID 控制以及 3D 翻滾控制代碼。
  保存、編譯最后把代碼燒寫(xiě)的飛控主板中,配合遙控器就可以正常使用了。如下圖所示 1 為保存、2 為編譯、3 為下載燒寫(xiě)。


圖16




如需定制開(kāi)發(fā),請通過(guò)官網(wǎng)“瘋殼”網(wǎng)頁(yè)底部的“聯(lián)系我們”進(jìn)行聯(lián)系

文件下載請點(diǎn)擊: 【1】飛控整機代碼走讀、編譯與燒寫(xiě).pdf (1.17 MB)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页