/* ============================================================================= * referee_task.c - 裁判系统链路监测 * 解析在 USART6 空闲中断完成(referee_parse_bytes 流式喂入), * 本任务仅做 100ms 周期的链路超时监测与心跳上报 * ========================================================================== */ #include "app_tasks.h" #include "cmsis_os.h" #include "bsp_usart.h" #include "referee.h" #include "robot_param.h" /* referee_task:裁判系统链路监测 * 解析在接收中断完成(referee_parse_bytes),本任务仅做超时监测与心跳 */ void referee_frame_callback(const uint8_t * frame, uint16_t len) { referee_parse_bytes(frame, len); } void referee_task(void const * argument) { while (!app_ready) osDelay(2); for (;;) { /* 链路超时置断线 */ if (referee.link_status && HAL_GetTick() - referee.last_update_tick > DEVICE_OFFLINE_TIME_MS * 10) referee.link_status = 0; monitor_heartbeat(HB_REFEREE); osDelay(100); } }