97 lines
3.2 KiB
C
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();
|
|
});
|
|
}
|