Files
BR_YKC/Core/User/Task/HeartBeatTask.c
2026-03-31 15:46:04 +08:00

97 lines
3.2 KiB
C

/**
******************************************************************************
* @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();
});
}