当前位置:网站首页>【飞控开发高级教程2】疯壳·开源编队无人机-遥控整机代码走读、编译与烧写
【飞控开发高级教程2】疯壳·开源编队无人机-遥控整机代码走读、编译与烧写
2022-08-03 00:03:00 【efans_Mike】
COCOFLY教程
——疯壳·无人机·系列
遥控整机代码走读、编译与烧写

图1
一、代码架构
遥控的整体代码工程由 7 个工作组组成,分别是 Remoter、show、Driver、STM32_LIB、USB、USB/Lib 以及 Drv_Point,如下图所示。

图2
各个组的具体的代码功能如下表所示。

表1
二、代码走读
系统的主函数部分是整个代码的起始运行位置,在主函数内主要做三个事情:1、初始化外设及参数,2、轮询线程函数,3、菜单显示逻辑,其代码如下图所示。



图3
系统的每一个线程函数都已经分配好了运行周期,在不同的线程里执行不同的事情,线程的切换通过简单的逻辑处理形式切换,而系统的运行时间由 sysTick 提供,即系统的“滴答”时钟。各个线程的入口如下。

图4
分别有 1000ms 周期的函数、50ms 周期的函数、10ms 周期的函数、4ms 周期的函数以及 2ms 周期的函数。
整个遥控器的逻辑处理、数据交换的核心部分均在 Remoter 工作组内,该组内的代码框架如下图所示。

图5
其中的 DT.c 负责和飞控、上位机等的通信数据处理,即拆解包、封装包、提取关键数据等,如下图所示为对飞控传输过来的数据进行处理。




图6
其中 Stick.c 为摇杆逻辑处理,主要对摇杆采集到 ADC 值进行分析,判断需要执行的逻辑。最后的 cocobit.c 是负责和 cocobit 编程板之间的通信。
工作组“show”主要负责了整体的菜单 UI 显示,这里已经做了封装处理。
工作组“Driver”负责各个模块的底层驱动,例如摇杆 ADC 配置、NRF24L01
的 SPI 驱动等。
工作组“USB”以及“USB/Lib”,负责通过 STM32 自带的 USB,虚拟出串口,方便与上位机进行通信。
保存、编译最后把代码烧写的遥控中,配合飞控就可以正常使用了。如下图所示 1 为保存、2 为编译、3 为下载烧写。

图7
边栏推荐
- 从一文中了解SSRF的各种绕过姿势及攻击思路
- 稳压电源: 电路图及类型
- matplotlib中的3D绘图警告解决:MatplotlibDeprecationWarning: Axes3D(fig) adding itself to the figure
- 如何修复 SAP UI5 aggregation with cardinality 0..1 相关的错误消息
- 如何突破测试/开发程序员思维?一种不一样的感觉......
- 中科磁业IPO过会:年营收5.5亿 吴中平家族持股85%
- GoLang 使用 goroutine 停止的几种办法
- 【多线程】Thread类的基本用法
- Canonical correlation analysis of CCA calculation process
- 3、Xendesktop更改发布桌面的显示名称(MCS静态桌面)
猜你喜欢
随机推荐
What is the matter that programmers often say "the left hand is knuckled and the right hand is hot"?
NVM和NRM
Moco of Mock tools use tutorial
Mock工具之Moco使用教程
js基础知识整理之 —— 变量和数据类型
并发模型和I/O模型介绍
PAT甲级 1051 Pop Sequence
HVV红队 | 渗透测试思路整理
一文读懂 Web 3.0 应用架构
C# 异步编程(async和await)
智能合约安全-可重入攻击(SW107-Reentrancy)
RollBack Rx Professional RMC 安装教程
Rasa 3.x 学习系列- Rasa - Issues 4792 socket debug logs clog up debug feed学习笔记
即席查询—— Kylin使用
精心整理16条MySQL使用规范,减少80%问题,推荐分享给团队
公司招个程序员,34岁以上两年一跳的不要,开出工资以为看错了
Day117. Shangyitong: Generate registered order module
绿色版-SQL环境搭建
2149. 按符号重排数组
Visual Studio中vim模拟器









