Files
BR_YKC/Core/User/App/task_sys.c
2026-05-21 10:01:28 +08:00

83 lines
2.0 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/**
******************************************************************************
* @file user\task\HeartBeatTask.c
* @author luhuaishuai
* @version v0.1
* @date 2026-1-12
* @brief 心跳任务,负责发送心跳包和处理云快充的响应
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "task_sys.h"
void HeartBeat_Sign(void);
/**
* @funNm : HeartbeatTask_Function
* @brief : 心跳
* @param : argument
* @retval: void
*/
void sys_task_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
*/
static uint32_t last_heartbeat_tick[MAX_CHARGER_COUNT] = {0};
void HeartBeat_Sign(void)
{
int i;
uint32_t now = HAL_GetTick();
bool any_online = false;
/* 6路桩独立心跳互不影响 */
for (i = 0; i < MAX_CHARGER_COUNT; i++)
{
if (g_charger_manager.charger_piles[i].is_online)
{
any_online = true;
if ((now - last_heartbeat_tick[i]) >= 8000)
{
last_heartbeat_tick[i] = now;
charger_to_server_0X03(i + 1, 1);
}
}
}
if (any_online)
{
RUN_EVERY(50, 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();
});
}