# 云台板固件(Simba-ELCT-FrameWork) > 步兵机器人**云台板**工程 · STM32F407IGH6 · Keil + FreeRTOS + CMSIS-DSP 项目总览、代码地图、任务表、调试与注意事项请先读 **[根 README](../README.md)** 与 **[已知问题与排障](../doc/已知问题与排障.md)**。本文只讲这块板特有的东西。 --- ## 这块板负责什么 - **云台控制**:Yaw(GM6020 `0x205`,CAN2 `0x1FE`电流控制)/ Pitch(GM6020 `0x206`,CAN1 `0x1FE`电流控制)双环 - **发射机构**:摩擦轮 M3508 `0x201`/`0x202`(CAN1 `0x200`) + 拨弹 M2006 `0x201`(CAN2 `0x200`)(装与不装由 `GIMBAL_RAMMER_INSTALLED` 决定) - **图传链路 / 裁判系统**:USART6(3pin 口) - **DR16 遥控器**:USART3 - **板间通讯主控**:云台把世界系 yaw(`0x1A9`)与摇杆/控制状态(`0x149`/`0x189`)发给底盘 - **视觉上位机接口**:USART1(4pin 口),收发 DMA 已就绪,协议待接入 ## 编译宏 ``` USE_HAL_DRIVER, STM32F407xx, ARM_MATH_CM4, ROBOT_TYPE_GIMBAL ``` ## 相对底盘板多出来的东西 | 项 | 位置 | | --- | --- | | `gimbal` 云台双环 + 装配符号自检 | `modules/control/gimbal.c` | | `shoot` 摩擦轮/拨弹 | `modules/control/shoot.c` | | `gimbal_task` / `shoot_task` | `Application/Task/Src/` | | DR16 遥控器、视觉串口 | `Bsp/bsp_usart.c` 的 `usart3_init` / `usart1_*` | | 板间帧 0x149 / 0x189 / 0x1A9 的**发送**侧 | `modules/comms/c_comm.c` | | IST8310 磁力计与本板 IMU 恒温 | `modules/imu/attitude.c`(双板都有,云台用于云台控制) | 底盘板有的 `control/chassis.c` 与 `chassis_task` 本工程没有(所以两棵树的 `modules/control/` 内容不同,属预期差异)。 ## 上电时本板特有的行为 1. `led_init` 点亮蓝灯 → 各外设初始化 2. IMU 初始化 + **z 轴零偏静止标定(约 0.5~1.5 s,这段时间别碰车)** 3. **Yaw 装配符号自检**:给 Yaw 电机一个正向小电流脉冲,看陀螺 z 轴往哪边转,自动定符号;**云台会轻转几度,不要扶住云台**。失败(被按住 / 电机离线)时回退到 `GIMBAL_YAW_SIGN_FALLBACK` 4. 自检结果经 `0x1A9` 的 flags 下发给底盘,与底盘自测的车身转向相乘完成跟随符号综合 ## 蜂鸣器序号(本板) CAN 掉线报警按设备序号响 `n` 下: ``` 0 = 摩擦轮L(CAN1 0x201) 1 = 摩擦轮R(CAN1 0x202) 2 = Pitch(CAN1 0x206) 3 = Yaw(CAN2 0x205) 4 = 拨弹(CAN2 0x201) 5 = 底盘回传(0x019) ``` **响三下 = Pitch 电机掉线。** 台架调试嫌吵时把 `robot_param.h` 的 `DEBUG_BUZZER_MELODY` 置 1(只换声音不换灯语)。 ## 构建 用 Keil 打开 `MDK-ARM/Simba-ELCT-FrameWork.uvprojx`,确认 Define 里是 `ROBOT_TYPE_GIMBAL`,Rebuild → Download。 > ⚠️ 本工程与底盘工程源码高度同构,改一处通常要同步改另一处。动手前请读根 README 的 [§11 已知陷阱](../README.md#11-已知陷阱与注意事项)。