/** ****************************************************************************** * @file user\task\HeartBeatTask.c * @author luhuaishuai * @version v0.1 * @date 2026-1-12 * @brief 心跳任务,负责发送心跳包和处理云快充的响应 ****************************************************************************** */ /* Includes ------------------------------------------------------------------*/ #include "HeartBeatTask.h" void HeartBeat_Sign(void); /** * @brief 发送显示数据 * @note 发送显示数据,包括充电桩的连接状态和工作状态 */ void Send_Display_Data(void) { #ifdef DEBUG char str[128]; sprintf(str, "t1.bco=%s\xff\xff\xfft2.bco=%s\xff\xff\xfft3.bco=%s\xff\xff\xfft4.bco=%s\xff\xff\xfft5.bco=%s\xff\xff\xfft6.bco=%s\xff\xff\xff", g_charger_manager.charger_piles[0].is_udp_online ? "GREEN" : "RED", g_charger_manager.charger_piles[1].is_udp_online ? "GREEN" : "RED", g_charger_manager.charger_piles[2].is_udp_online ? "GREEN" : "RED", g_charger_manager.charger_piles[3].is_udp_online ? "GREEN" : "RED", g_charger_manager.charger_piles[4].is_udp_online ? "GREEN" : "RED", g_charger_manager.charger_piles[5].is_udp_online ? "GREEN" : "RED"); Rs485_Message_Send(str, strlen(str)); sprintf(str, "t7.bco=%s\xff\xff\xfft8.bco=%s\xff\xff\xfft9.bco=%s\xff\xff\xfft10.bco=%s\xff\xff\xfft11.bco=%s\xff\xff\xfft12.bco=%s\xff\xff\xff", g_charger_manager.charger_piles[0].is_online ? "GREEN" : "RED", g_charger_manager.charger_piles[1].is_online ? "GREEN" : "RED", g_charger_manager.charger_piles[2].is_online ? "GREEN" : "RED", g_charger_manager.charger_piles[3].is_online ? "GREEN" : "RED", g_charger_manager.charger_piles[4].is_online ? "GREEN" : "RED", g_charger_manager.charger_piles[5].is_online ? "GREEN" : "RED"); Rs485_Message_Send(str, strlen(str)); #endif } /** * @funNm : HeartbeatTask_Function * @brief : 心跳 * @param : argument * @retval: void */ void HeartbeatTask_Function(void const *argument) { while (1) { TaskRunTimeStat.HeartBeatTask.threads_runtime = GetTask_RunTime(HeartBeatTaskID); TaskRunTimeStat.HeartBeatTask.threads_counter = GetTask_Beatcnt(HeartBeatTaskID); TaskRunTimeStat.HeartBeatTask.threads_freestack = Get_Free_Stack(HeartBeatTaskID); HeartBeat_Sign(); // 指示灯、蜂鸣器 // HAL_IWDG_Refresh(&hiwdg); //喂狗 osDelay(50); } } /** * @funNm : HeartBeat_Sign * @brief : 心跳指示灯、蜂鸣器 云快充心跳 * @param : none * @retval: void */ void HeartBeat_Sign(void) { if (g_charger_manager.charger_piles[0].is_online) { RUN_EVERY(8000, tick_A, { charger_to_server_0X03(1, 1, 0); }); RUN_EVERY(100, tick_B, { System_Mode_Led_Toggle(); }); } else { RUN_EVERY(500, tick_C, { System_Mode_Led_Toggle(); }); } RUN_EVERY(1000, tick_D, { System_Run_Led_Toggle(); }); RUN_EVERY(500, tick_E, { Send_Display_Data(); CDC_Transmit_FS((uint8_t*)"123", 3); }); }