- 云台(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,避免固件源码在检出时被改动换行符
64 lines
2.2 KiB
C
64 lines
2.2 KiB
C
/* =============================================================================
|
|
* can_task.c - CAN_Task 强定义:全部硬件层初始化 + 蓝灯自检
|
|
* 顺序: led_init(蓝灯常亮=调度器/任务栈正常的证据) -> buzzer_init ->
|
|
* MX_USB_DEVICE_Init -> can_start -> 电机/发射/板间通讯初始化 ->
|
|
* 串口初始化 -> app_ready=1(其余任务在此之前的 while 等待)
|
|
* 注意: 本文件双板共用,板差异用 ROBOT_TYPE 宏条件编译
|
|
* ========================================================================== */
|
|
#include "app_tasks.h"
|
|
#include "cmsis_os.h"
|
|
#include "bsp_can.h"
|
|
#include "bsp_usart.h"
|
|
#include "usb_device.h"
|
|
#include "c_comm.h"
|
|
#include "led.h"
|
|
#include "buzzer.h"
|
|
#if defined(ROBOT_TYPE_GIMBAL)
|
|
#include "gimbal.h"
|
|
#include "shoot.h"
|
|
#elif defined(ROBOT_TYPE_CHASSIS)
|
|
#include "chassis.h"
|
|
#endif
|
|
|
|
volatile uint8_t app_ready = 0;
|
|
volatile uint32_t dbg_can_loop = 0; // 诊断:CAN_Task 循环计数
|
|
|
|
static uint8_t dr16_rx_buf[36]; // DR16 单帧 18 字节,缓冲放大一倍防止帧粘连
|
|
static uint8_t referee_rx_buf[128]; // 裁判系统变长帧缓冲
|
|
|
|
/* CAN_Task:完成全部硬件层初始化后置 app_ready,其余任务等待该标志
|
|
* 蓝灯常亮 = 本任务正在初始化(调度器与任务栈正常的最直观证据) */
|
|
void CAN_Task(void const * argument)
|
|
{
|
|
led_init();
|
|
buzzer_init();
|
|
led_set_blue(1);
|
|
|
|
MX_USB_DEVICE_Init();
|
|
|
|
can_start(); // CAN 过滤器/启动/中断
|
|
|
|
#if defined(ROBOT_TYPE_GIMBAL)
|
|
gimbal_motor_init(); // 电机实例与 CAN 回调注册
|
|
shoot_init();
|
|
c_comm_init(); // 板间通讯回调注册
|
|
|
|
usart3_init(dr16_rx_buf, 36, dr16_frame_callback); // DR16 遥控器
|
|
usart6_init(referee_rx_buf, 128, referee_frame_callback); // 图传链路(0x0304)
|
|
usart1_tx_dma_init(); // 视觉串口发送 DMA(TODO:视觉自瞄)
|
|
#elif defined(ROBOT_TYPE_CHASSIS)
|
|
chassis_motor_init(); // 电机实例与 CAN 回调注册
|
|
c_comm_init();
|
|
|
|
usart6_init(referee_rx_buf, 128, referee_frame_callback); // 裁判系统(0x0201/0x0202)
|
|
#endif
|
|
|
|
app_ready = 1;
|
|
|
|
for (;;)
|
|
{
|
|
dbg_can_loop++;
|
|
osDelay(1000);
|
|
}
|
|
}
|