# UAV **Repository Path**: cod_-control/uav ## Basic Information - **Project Name**: UAV - **Description**: 25赛季无人机云台 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-01-23 - **Last Updated**: 2025-02-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UAV ## 简介 25赛季无人机云台代码 ## 环境搭建 * 开发工具:Keil V5.38a,VsCode * 软件环境:Window11 * 硬件环境:大疆RoboMaster开发板C型 (STM32F407IGHX) * 编译工具:Arm Compiler V5.06u7,C/C++编译 ## 目录结构 ``` HAL-Template ├───Application/API ├───Application/Tasks ├───BSP ├───Components/Algorithm ├───Components/Controller ├───Components/Device ├───Core ├───Docs ├───Drivers ├───MDK-ARM ├───Middlewares ├───Third_Party └───USB_DEVICE ``` ## 模块功能说明 ### Gimbal模块主要文件说明 #### Gimbal_Task 主要包含Yaw、Pich、Roll三轴的控制。 #### Can_Task 主要包含can通讯发送的数据。 ### IMU 惯性测量单元 * 模块参考[哈尔滨工程大学创梦之翼战队惯导姿态解算项目](https://github.com/WangHongxi2001/RoboMaster-C-Board-INS-Example)。 * 详情见[Quaternion](./Docs/Quaternion.pdf)。 ### MiniPC通信 * 使用`MicroUSB`连接STM32和上位机 * 在`./Device/Src/minipc.c`中封装了适配[rm_serial_driver](https://github.com/chenjunnn/rm_serial_driver)的数据交互函数 * ```c void MiniPC_RecvFrameInfo(uint8_t* Buf, uint32_t *Len) ``` 函数在`Application/User/USB_DEVICE/App/usbd_cdc_if.c`的 ```c static int8_t CDC_Receive_FS(uint8_t* Buf, uint32_t *Len) ``` 函数中调用,实现了上位机数据的接收。 * ```c void MiniPC_SendFrameInfo(MiniPC_SendPacket_Typedef *SendPacket) ``` 函数应在RTOS任务中以500Hz的频率实现下位机数据的发送。 ### 裁判系统 * 使用STM32串口DMA实现裁判系统数据交互 * 数据接收使用双缓存循环模式 * 数据发送使用单缓存普通模式 * 在`./Components/Device/Src/Referee_info.c`中封装了适配[RoboMaster 裁判系统串口协议附录 V1.4](https://www.robomaster.com/zh-CN/products/components/referee?djifrom=nav)及[RoboMaster 裁判系统串口协议附录 V1.4 增补修订说明](https://www.robomaster.com/zh-CN/products/components/referee?djifrom=nav)的通信解码函数,其在`./BSP/bsp_uart.c`中的 ```C void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart,uint16_t Size) ``` 串口传输完成回调函数中调用,以实现裁判系统的数据更新。 * 在`./Components/Device/Src/ui.c`中封装了适配[RoboMaster 裁判系统串口协议附录 V1.4](https://www.robomaster.com/zh-CN/products/components/referee?djifrom=nav)的客户端绘制UI所需通信编码函数,用户可调用此类函数实现客户端绘制***自定义UI***的通信数据帧编码,并利用 ```C HAL_StatusTypeDef HAL_UART_Transmit_DMA(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size) ``` 函数以串口DMA的形式,向裁判系统链路发送相关通信数据帧。