Commit 56507836 authored by 李冠华's avatar 李冠华

feat:混动车型增加单次工作时长工作逻辑

parent f8e0c73a
......@@ -3,6 +3,7 @@
DataTimeStruct_st_t Time;
uint16_t u16EngineTimeCount;
void Data_Time_KL30_Init(void)
{
......@@ -10,15 +11,19 @@ void Data_Time_KL30_Init(void)
Time.SingleMin = 0U;
Time.TotalHour = 0U;
Time.SingleValid = 0U;
Time.KeepTimeCount = 0U;
u16EngineTimeCount = 0U;
}
void Data_Time_KL15_Init(void)
{
Time.KeepTimeCount = 0U;
u16EngineTimeCount = 0U;
}
void Data_Time_Single_Working_Hours(void)
{
#if (PART_NUMBER == RMR42E_60)
uint8_t Clock_all = 0;
if ((Common_Get_IG_Sts() == COMMON_POWER_ON) && (Charge_OFF_Flag == 0) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != PKEY_ON) && (System_Indicator_CANFlag != 1))
{
......@@ -31,6 +36,21 @@ void Data_Time_Single_Working_Hours(void)
{
Time.SingleValid = 0;
}
#else
if (Get_CAN_Power_State() == KEY_ACC)
{
Time.SingleHour = (uint8_t)(Time.KeepTimeCount / 3600U);
Time.SingleMin = (uint8_t)((Time.KeepTimeCount % 3600U) / 60U);
Time.SingleValid = 1;
}
else
{
Time.SingleHour = 0U;
Time.SingleMin = 0U;
Time.SingleValid = 0U;
}
#endif
}
uint32_t u32Data_read[1] = {0};
......@@ -98,6 +118,23 @@ void Data_CumulativeWorkHours_EEPROM_Write(void)
}
}
/*发动机运行时间计时函数,为防止计时误差大,放在50μs中断中运行*/
void Single_Working_Hours_Count(void)
{
#if (PART_NUMBER == G54_A01)
if(g_ReadyStatus == 1U)
{
u16EngineTimeCount++ ;
if(u16EngineTimeCount == 20000U)
{
Time.KeepTimeCount++;
u16EngineTimeCount = 0U;
}
}
#endif
}
/******************************************************************************
函数名:Get_SingleHour_Display
功 能:获取单次工作时长小时数函数
......
......@@ -11,6 +11,7 @@ typedef struct //__attribute__((aligned(4)))
uint8_t SingleMin; /*单次计时分钟*/
uint8_t SingleValid; /*单次工作时间有效状态*/
uint32_t TotalHour; /*累计计时小时*/
uint32_t KeepTimeCount; /*单次工作时长自主计时,单位s*/
}DataTimeStruct_st_t;
......@@ -20,6 +21,7 @@ extern void Data_Time_KL15_Init(void);
extern void Data_Time_Single_Working_Hours(void);
extern void Data_Time_Total_Working_Hours(void);
extern void Data_CumulativeWorkHours_EEPROM_Write(void);
extern void Single_Working_Hours_Count(void);
extern uint8_t Get_SingleHour_Display(void);
extern uint8_t Get_SingleMin_Display(void);
......
......@@ -101,4 +101,5 @@ void Sys_Exact_50us_Tasks(void)
task_1ms = 0U;
eeprom_1ms_timeCount();
}
Single_Working_Hours_Count();
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment