Commit 6d6245fd authored by 李冠华's avatar 李冠华

feat:完善燃油数据处理功能

parent 4ab79f59
......@@ -687,7 +687,7 @@ const st_CANMsgAttribute CAN_CH0_CAN_MSG_CONST_ARRAY[CAN_CH0_ID_TOTAL_MAX] =
500ul,
0x18Eul,
(( void * )0),
(( void * )0),
(MsgID_0x18E_Receive),
(( void * )0),
},
{
......
......@@ -5,7 +5,10 @@ FuelStruct_st_t Fuel;
void Data_Fuel_KL30_Init(void)
{
Fuel.FuelSeg = 0U;
Fuel.FuelSegDis = 0U;
Fuel.FuelStatusCount = 0U;
Fuel.FuelValid = 0U;
}
void Data_Fuel_KL15_Init(void)
......@@ -15,21 +18,37 @@ void Data_Fuel_KL15_Init(void)
void MsgID_0x18E_Receive(void)
{
if((Fuel.FuelSeg != Fuel.FuelSegDis) && (Fuel.FuelStatusCount >= 3U))
{
Fuel.FuelSegDis = Fuel.FuelSeg;
Fuel.FuelStatusCount = 0U;
}
else if((Fuel.FuelSeg != Fuel.FuelSegDis) && (Fuel.FuelStatusCount < 3U))
{
Fuel.FuelStatusCount ++;
}
else
{
Fuel.FuelStatusCount = 0U;
}
}
void Data_Fuel_Service(void)
{
uint8_t FuelRemainLevel = 0U;
if (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18E_Msg)) == CAN_SIG_NORMAL)
{
FuelRemainLevel = Get_CAN_CH0_ID_18E_Sig_EMS_FuelRemainLevel();
Fuel.FuelSeg = Get_CAN_CH0_ID_18E_Sig_EMS_FuelRemainLevel();
Fuel.FuelValid = 1U;
if (Fuel.FuelSeg > 8U)
{
Fuel.FuelSeg = 8U;
}
}
else
{
Fuel.FuelValid = 0U;
Fuel.FuelStatusCount = 0U;
}
}
......@@ -44,14 +63,14 @@ void Data_Fuel_Service(void)
******************************************************************************/
uint8_t Get_FuelSeg_Display(void)
{
return Fuel.FuelSeg;
return Fuel.FuelSegDis;
}
/******************************************************************************
函数名:Get_Soc2Num_Display
功 能:获取电量表2显示电量值函数
函数名:Get_FuelStatus_Valid
功 能:获取燃油表有效状态函数
参 数:无
返回值:显示的电量值 x1
返回值:Fuel.FuelValid 0--无效,1--有效
******************************************************************************
注 意:该函数必须每 ms被调用一次
******************************************************************************/
......@@ -60,3 +79,27 @@ uint8_t Get_FuelStatus_Valid(void)
return Fuel.FuelValid;
}
/******************************************************************************
函数名:Get_FuelPilotLamp_Status
功 能:获取燃油指示灯状态函数
参 数:无
返回值:LampStatus 0--白色,1--黄色,2--黄色闪烁
******************************************************************************
注 意:该函数必须每 ms被调用一次
******************************************************************************/
uint8_t Get_FuelPilotLamp_Status(void)
{
uint8_t LampStatus = 0U;
if((Fuel.FuelValid == 1U) && (Fuel.FuelSegDis == 1U))
{
LampStatus = 1U;
}
else if ((Fuel.FuelValid == 1U) && (Fuel.FuelSegDis == 0U))
{
LampStatus = 2U;
}
return LampStatus;
}
......@@ -8,6 +8,7 @@
typedef struct //__attribute__((aligned(4)))
{
uint8_t FuelSeg; //燃油格数
uint8_t FuelSegDis; //燃油显示格数
uint8_t FuelValid; //燃油有效状态
uint8_t FuelStatusCount; /*燃油状态计数*/
......@@ -19,5 +20,8 @@ extern void Data_Fuel_KL15_Init(void);
extern void MsgID_0x18E_Receive(void);
extern void Data_Fuel_Service(void);
extern uint8_t Get_FuelSeg_Display(void);
extern uint8_t Get_FuelStatus_Valid(void);
extern uint8_t Get_FuelPilotLamp_Status(void);
#endif
......@@ -75,6 +75,7 @@ static void Power_KL30_Init(void)
Data_Soc_KL30_Init();
Data_Time_KL30_Init();
Data_Gear_KL30_Init();
Data_Fuel_KL30_Init();
}
extern uint32_t PowerIgnOffTimeLine;
......
......@@ -40,6 +40,7 @@ void Sys_10ms_Tasks(void)
void Sys_20ms_Tasks(void)
{
Data_Fuel_Service();
}
void Sys_50ms_Tasks(void)
......
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