Commit e5997789 authored by 时昊's avatar 时昊

:sparkles: feat:修改里程代码

parent 8cd1ebc9
......@@ -7,7 +7,7 @@
__align(4)
uint8_t DataMilleageBuf[Data_MEM_Block_Mileage];
uint8_t DataMilleageBuf[Data_MEM_Block_Mileage];
uint8_t DataODOBuf[Data_MEM_Block_ODO];
uint8_t DataTripBuf[Data_MEM_Block_Trip * EM_TRIP_MAX];
Mileage_t g_WriteMileage;
......@@ -17,15 +17,13 @@ uint8_t odo_readState;
static uint32_t Data_User_EEPROM_Read(uint16_t u16BlockID, uint32_t u32Data[], uint16_t u16Len);
static void Data_User_EEPROM_Write(Data_EEPROM_Enum_t BlockID, uint32_t u32Data[], uint16_t u16Len);
#define EEPROM_BLOCK_00 0X00
#define EEPROM_BLOCK_01 0X16
#define EEPROM_BLOCK_02 0X32
#define EEPROM_BLOCK_03 0X48
#define EEPROM_BLOCK_04 0X64
#define EEPROM_BLOCK_05 0X80
#define EEPROM_BLOCK_06 0X90
uint32_t Milleage_InitFlag = 0U;
#define EEPROM_BLOCK_00 0
#define EEPROM_BLOCK_01 16
#define EEPROM_BLOCK_02 32
#define EEPROM_BLOCK_03 48
#define EEPROM_BLOCK_04 64
#define EEPROM_BLOCK_05 80
#define EEPROM_BLOCK_06 96
......@@ -42,10 +40,8 @@ void Data_User_Mileage_KL30Init(void)
Mileage_Init_t MileInit = {0};
Mileage_Func_t Func = {0};
ODO_Init_t ODOInit = {0};
// EngODO_Init_t EngODOInit = {0};
Trip_Init_t TripInit[4] = {0};
Milleage_InitFlag = 0U;
// �������ݴ�EEPROM�ж�ȡ
(void)Data_User_EEPROM_Read(EM_MILEAGE_BLOCK, TempBuf, 1);
if (TempBuf[0] == 0xFFFFFFFF)
{
......@@ -57,9 +53,9 @@ void Data_User_Mileage_KL30Init(void)
}
Func.Get_Sys_IG_Sts = Common_Get_IG_Sts;
Func.Get_Act_V_Speed_Valid = Common_Get_Act_V_Speed_Valid;
Func.Get_Act_V_Speed = Common_Get_Act_V_Speed_Limit;
Func.Get_Act_V_Speed = Common_Get_Act_V_Speed;
Func.Get_TireSize = (void *)0;
Func.EEPromWrite_Cbk = Data_User_EEPROM_Write; // ��ʱδ����
Func.EEPromWrite_Cbk = Data_User_EEPROM_Write;
Data_Mileage_KL30_Init(DataMilleageBuf, &MileInit, &Func);
(void)Data_User_EEPROM_Read(EM_ODO_BLOCK, TempBuf + 1, 2);
......@@ -92,7 +88,7 @@ void Data_User_Mileage_KL30Init(void)
TripInit[EM_TRIP_A].Stamp = TempBuf[3];
}
TripInit[EM_TRIP_A].Offset = TempBuf[4];
TripInit[EM_TRIP_A].MaxValue = 16092; /* 最大999.9Mile 进行复位 */
TripInit[EM_TRIP_A].MaxValue = 99999; /* 最大999.9Mile 进行复位 */
TripInit[EM_TRIP_A].IsRestart = 1u;
TripInit[EM_TRIP_B].Stamp = 0xFFFFFFFFu;
......@@ -108,33 +104,26 @@ void Data_User_Mileage_KL30Init(void)
TripInit[EM_TRIP_D].IsRestart = 1u;
Data_Trip_KL30_Init(DataTripBuf, TripInit, EM_TRIP_MAX, Func.EEPromWrite_Cbk);
Milleage_InitFlag = 0X5AA53AA3UL;
}
void Data_User_Mileage_WakeupInit(void)
{
Mileage_Func_t Func = {0};
Milleage_InitFlag = 0U;
Func.Get_Sys_IG_Sts = Common_Get_IG_Sts;
Func.Get_Act_V_Speed_Valid = Common_Get_Act_V_Speed_Valid;
Func.Get_Act_V_Speed = Common_Get_Act_V_Speed_Limit;
Func.Get_Act_V_Speed = Common_Get_Act_V_Speed;
Func.Get_TireSize = (void *)0;
Func.EEPromWrite_Cbk = Data_User_EEPROM_Write; // ��ʱδ����
Data_Mileage_Wakeup_Init(DataMilleageBuf, &Func);
Data_ODO_Wakeup_Init(DataODOBuf, Func.EEPromWrite_Cbk);
//Data_Trip_Wakeup_Init(DataTripBuf, EM_TRIP_MAX, Func.EEPromWrite_Cbk);
Milleage_InitFlag = 0X5AA53AA3UL;
}
Data_Trip_Wakeup_Init(DataTripBuf, EM_TRIP_MAX, Func.EEPromWrite_Cbk);
uint32_t Get_MileageInit_Status(void)
{
return Milleage_InitFlag;
}
static uint32_t Data_User_EEPROM_Read(uint16_t u16BlockID, uint32_t u32Data[], uint16_t u16Len)
{
switch (u16BlockID)
......@@ -162,8 +151,6 @@ static uint32_t Data_User_EEPROM_Read(uint16_t u16BlockID, uint32_t u32Data[], u
static void Data_User_EEPROM_Write(Data_EEPROM_Enum_t BlockID, uint32_t u32Data[], uint16_t u16Len)
{
// uint8_t i = 0u;
switch (BlockID)
{
case EM_MILEAGE_BLOCK:
......@@ -196,7 +183,7 @@ void Services_Mileage_Callback(void)
{
Data_Mileage_ISR();
Data_ODO_Processing();
//Data_Trip_Processing();
Data_Trip_Processing();
Trip_Clear_Km_Service();
}
......@@ -207,18 +194,18 @@ void Services_Mileage_Callback(void)
uint32_t Get_ODO_Value(void)
{
uint32_t ODO = 0;
if (Get_Dis_Unit() == 0) /* 公制 */
{
ODO = Data_ODO_Read();
}
else if (Get_Dis_Unit() == 1) /* 英制 */
{
ODO = Data_Km_To_Mile(Data_ODO_Read());
}
else /* 无效值,按照公里处理,理论上不会执行到这 */
{
ODO = Data_ODO_Read();
}
// if (Get_Dis_Unit() == 0) /* 公制 */
// {
// ODO = Data_ODO_Read();
// }
// else if (Get_Dis_Unit() == 1) /* 英制 */
// {
// ODO = Data_Km_To_Mile(Data_ODO_Read());
// }
// else /* 无效值,按照公里处理,理论上不会执行到这 */
// {
// ODO = Data_ODO_Read();
// }
return ODO;
}
......@@ -229,34 +216,34 @@ uint32_t Get_ODO_Value(void)
uint32_t Get_Trip_Value(void)
{
uint32_t Trip = 0;
if (Get_Dis_Unit() == 0) /* 公制 */
{
Trip = Data_Read_Trip(EM_TRIP_A);
}
else if (Get_Dis_Unit() == 1) /* 英制 */
{
Trip = Data_Km_To_Mile(Data_Read_Trip(EM_TRIP_A));
}
else /* 无效值,按照公里处理,理论上不会执行到这 */
{
Trip = Data_Read_Trip(EM_TRIP_A);
}
// if (Get_Dis_Unit() == 0) /* 公制 */
// {
// Trip = Data_Read_Trip(EM_TRIP_A);
// }
// else if (Get_Dis_Unit() == 1) /* 英制 */
// {
// Trip = Data_Km_To_Mile(Data_Read_Trip(EM_TRIP_A));
// }
// else /* 无效值,按照公里处理,理论上不会执行到这 */
// {
// Trip = Data_Read_Trip(EM_TRIP_A);
// }
return Trip;
}
uint32_t testtrip = 0;
/**
* @brief 当前单位在KM时,小计里程大于999.9KM,主动触发小计清零
*
*/
void Trip_Clear_Km_Service(void)
{
if (Get_Dis_Unit() == 0) /* 公制 */
{
if (Data_Read_Trip(EM_TRIP_A) > 9999) /* 当前单位在KM时,里程大于999.9KM进行清零 */
{
Data_Clear_Trip_All();
}
}
// if (Get_Dis_Unit() == 0) /* 公制 */
// {
// if (Data_Read_Trip(EM_TRIP_A) > 9999) /* 当前单位在KM时,里程大于999.9KM进行清零 */
// {
// Data_Clear_Trip_All();
// }
// }
}
......
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