chore: 导入 Simba-OmniInfantry 基线(云台/底盘双工程)

- 云台(ROBOT_TYPE_GIMBAL)与底盘(ROBOT_TYPE_CHASSIS)完整固件源码
- 新增根级 .gitignore,排除 Keil MDK-ARM 构建产物(.o/.d/.crf/.axf/.lnp/.map/.htm/.sct/.dep/.iex/.lst 等)
  与 *.uvguix.* / DebugConfig/(与机器绑定的 UI 布局)
- core.autocrlf=false,避免固件源码在检出时被改动换行符
This commit is contained in:
2026-09-12 10:28:21 +08:00
commit a4da5ad17c
517 changed files with 503795 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
#ifndef REFEREE_H
#define REFEREE_H
#include <stdint.h>
#include <string.h>
/* 裁判系统协议解析(0x0201 机器人状态 / 0x0202 实时功率 / 0x0304 自定义控制器)
* CRC 校验与字段偏移和 legacy RefereeSystem 模块保持一致 */
typedef struct
{
uint8_t robot_id; // 机器人 ID(无裁判系统时为 0,4 号步兵为 4/104)
uint8_t shooter_power_on; // 发射机构上电状态(0x0201)
uint16_t chassis_power_limit; // 底盘功率上限(W)
float chassis_power; // 底盘实时功率(W)
float buffer_energy; // 底盘缓冲能量(J)
uint8_t link_status; // 收到过有效帧置 1,掉线检测配合 last_update_tick
uint32_t last_update_tick;
} referee_data_t;
extern referee_data_t referee;
/* 流式解析一个字节(中断上下文调用;把串口收到的每个字节依次喂进来) */
extern void referee_parse_byte(uint8_t byte);
/* 批量喂入(usart 整帧回调里循环调用 referee_parse_byte 即可,此函数为便捷封装) */
extern void referee_parse_bytes(const uint8_t * data, uint16_t len);
/* 0x0304(自定义控制器)数据回调,在中断上下文执行 */
typedef void (*referee_keyboard_hook_f)(const uint8_t data[12]);
extern void referee_set_keyboard_hook(referee_keyboard_hook_f hook);
#endif