Commit 0f4f61d2 authored by 高士达's avatar 高士达

Merge branch 'gaoshida' into 'dev'

Gaoshida

See merge request !18
parents 3fa7100a b768d65a
......@@ -139,10 +139,10 @@ void Can_Set_Buff_510(uint8_t CopyData[])
temp16 = FuelR/10;
if(FuelR>3100){
temp16 = 320;
}
//temp16 = FuelR/10;
//if(FuelR>3100){
// temp16 = 320;
//}
CopyData[2] = (temp16>>8)&0xff;
CopyData[3] = temp16&0xff;
......
#include "common.h"
#include "Fuel.h"
#include "gpio.h"
#include "Analog_Signals.h"
#include "Common_Interface.h"
#include "Flash_synchronizer.h"
#define FUEL_DATA_TIME 25u /*这里填写多长时间采集一个数据,单位ms*/
#define FUEL_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/
#define FUEL_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define FUEL_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/
#define RETURN_DIFFERENCE 25u /*判断上升或下降的回差,精度0.1*/
#define FUEL_SEG_UP 0u
#define FUEL_SEG_DOWN 1u
uint16_t FuelData[FUEL_DATA_NUM];
uint8_t FuelDataCount = 0u;
uint16_t FuelR = 0u; /*滤波后的燃油电阻,精度0.1*/
static uint16_t FuelRBak = 0;
uint8_t DesFuelSetp = 0u;
uint8_t CurFuelSetp = 0u;
uint8_t FuelInitFlag = 0u;
uint8_t FuelStateInitFlag = 0u;
uint8_t FuelDir = FUEL_SEG_UP;
FuelSensorSts_t FuelSensorState = FuelSensorNormal;
uint16_t FuelSensorNormalTime = 0u;
uint16_t FuelSensorShortTime = 0u;
uint16_t FuelSensorOpenTime = 0u;
uint8_t FuelADCompleteFlg = 0u;
_Fuel_Dis FuelDis;
_FuelData Fuel_Data;
void Fuel_KL30_Init(void)
{
PORT_ClrBit(Fuel_Vcc_en);
Fuel_Data.u8FuelInitFlag = 0u;
Fuel_Data.FuelDir = Up_Dir;
Fuel_Data.FuelSensorState = FuelSensorNormal;
Fuel_Data.u8FuelDataCount = 0u;
for (uint8_t i = 0; i < FUEL_DATA_NUM; i++)
{
Fuel_Data.FuelDataBuffer[i] = 0;
}
Fuel_Data.FuelDataArray[0] = 0u; /* Short */
Fuel_Data.FuelDataArray[1] = 970u; /* Seg1 */
Fuel_Data.FuelDataArray[2] = 790u; /* Seg2 */
Fuel_Data.FuelDataArray[3] = 610u; /* Sge3 */
Fuel_Data.FuelDataArray[4] = 430u; /* Seg4 */
Fuel_Data.FuelDataArray[5] = 250u; /* Seg5 */
Fuel_Data.FuelDataArray[6] = 1100u; /* Open */
Fuel_Data.u8FuelInitFlag = 1;
Fuel_Data.u8FuelInitState = 1;
Fuel_Data.u8FuelADCompleteFlg = 0;
Fuel_Data.u16SensorNormalTimer = 0;
Fuel_Data.u16SensorOpenTimer = 0;
Fuel_Data.u16SensorShortTimer = 0;
FuelDis.u8Curseg = 0;
FuelDis.u8DestSeg = 0;
FuelDis.u16Down_Timer = Creep_Down_Up_Timer;
}
void Fuel_KL15_Init(void)
{
PORT_SetBit(Fuel_Vcc_en);
DesFuelSetp = 0u;
CurFuelSetp = 0u;
FuelInitFlag = 1u;
FuelStateInitFlag = 1u;
FuelDir = FUEL_SEG_UP;
FuelSensorState = FuelSensorNormal;
FuelSensorNormalTime = 0u;
FuelSensorShortTime = 0u;
FuelSensorOpenTime = 0u;
FuelADCompleteFlg = 0u;
Fuel_Data.FuelDir = Up_Dir;
Fuel_Data.FuelSensorState = FuelSensorNormal;
Fuel_Data.u8FuelDataCount = 0u;
for (uint8_t i = 0; i < FUEL_DATA_NUM; i++)
{
Fuel_Data.FuelDataBuffer[i] = 0;
}
Fuel_Data.FuelDataArray[0] = 0u; /* Short */
Fuel_Data.FuelDataArray[1] = 970u; /* Seg1 */
Fuel_Data.FuelDataArray[2] = 790u; /* Seg2 */
Fuel_Data.FuelDataArray[3] = 610u; /* Sge3 */
Fuel_Data.FuelDataArray[4] = 430u; /* Seg4 */
Fuel_Data.FuelDataArray[5] = 250u; /* Seg5 */
Fuel_Data.FuelDataArray[6] = 1100u; /* Open */
Fuel_Data.u8FuelInitFlag = 1;
Fuel_Data.u8FuelInitState = 1;
Fuel_Data.u8FuelADCompleteFlg = 0;
Fuel_Data.u16SensorNormalTimer = 0;
Fuel_Data.u16SensorOpenTimer = 0;
Fuel_Data.u16SensorShortTimer = 0;
FuelDis.u8Curseg = 0;
FuelDis.u8DestSeg = 0;
FuelDis.u16Down_Timer = Creep_Down_Up_Timer;
}
uint16_t TestFuelR = 320u;
/**
* @brief 燃油采集计算服务
*
*/
void Fuel_R_Cal(uint8_t deltaTime)
{
uint16_t FuelRes = 0;
uint8_t i,j;
uint8_t i, j;
uint32_t temp32;
static uint16_t timeCount = 0;
if(timeCount >= FUEL_DATA_TIME){
timeCount = 0;
if(FuelDataCount < FUEL_DATA_NUM)
if (Fuel_Data.u8FuelCollectCount >= FUEL_DATA_TIME) /* 多久采集一次燃油数据 */
{
Fuel_Data.u8FuelCollectCount = 0;
if (Fuel_Data.u8FuelDataCount < FUEL_DATA_NUM)
{
/*获取燃油电阻*/
FuelRes = ADC_Read_Signal(ADC_CH_FUEL1);
FuelRes = 0;
/*四舍五入*/
if(FuelRes < 32000){
if(FuelRes % 10 >= 5){
if (FuelRes < Fuel_Data.FuelDataArray[6]) /* 小于开路阻值 */
{
if (FuelRes % 10 >= 5)
{
FuelRes += 5;
}
}
else{
FuelRes = 32000;
else
{
FuelRes = Fuel_Data.FuelDataArray[6];
}
/*由小到大插入数据*/
for(i=0; i < FuelDataCount; i++)
for (i = 0; i < Fuel_Data.u8FuelDataCount; i++)
{
if(FuelRes < FuelData[i])
if (FuelRes < Fuel_Data.FuelDataBuffer[i])
{
break;
}
}
for(j=FuelDataCount; j>i; j--)
for (j = Fuel_Data.u8FuelDataCount; j > i; j--)
{
FuelData[j] = FuelData[j-1];
Fuel_Data.FuelDataBuffer[j] = Fuel_Data.FuelDataBuffer[j - 1];
}
FuelData[i] = FuelRes;
FuelDataCount++;
Fuel_Data.FuelDataBuffer[i] = FuelRes;
Fuel_Data.u8FuelDataCount++;
}
else
{
/*一组数据采集完毕,取中间部分计算平均值*/
temp32 = 0;
for(i=FUEL_CAL_START; i<FUEL_CAL_END; i++ )
for (i = FUEL_CAL_START; i < FUEL_CAL_END; i++)
{
temp32 += FuelData[i];
temp32 += Fuel_Data.FuelDataBuffer[i];
}
FuelR = temp32 / (FUEL_CAL_END - FUEL_CAL_START);
FuelDataCount = 0;
FuelADCompleteFlg = 1;
Fuel_Data.Fuel_Res = temp32 / (FUEL_CAL_END - FUEL_CAL_START);
Fuel_Data.u8FuelDataCount = 0;
Fuel_Data.u8FuelADCompleteFlg = 1;
}
}
timeCount += deltaTime;
Fuel_Data.u8FuelCollectCount += deltaTime;
}
/**
* @brief 检查燃油传感器状态
*
*/
void Fuel_State_Check(uint8_t deltaTime)
{
if (FuelR < 20)
{ /*短路 1*/
FuelSensorOpenTime = 0;
FuelSensorNormalTime = 0;
if ((FuelSensorShortTime > 3000) || ((FuelStateInitFlag) && (FuelSensorShortTime > 3000)))
{
FuelSensorState = FuelSensorShortCircuit;
DesFuelSetp = 0;
CurFuelSetp = 0;
FuelStateInitFlag = 0;
FuelInitFlag = 1;
FuelDir = FUEL_SEG_UP;
}
else
// if (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[0])
//{ /*短路 1*/
// Fuel_Data.u16SensorOpenTimer = 0;
// Fuel_Data.u16SensorNormalTimer = 0;
// if ((Fuel_Data.u16SensorShortTimer > Fuet_Short_Dealy_Timer) || ((Fuel_Data.u8FuelInitState) && (Fuel_Data.u16SensorShortTimer > Fuet_Short_Dealy_Timer)))
// {
// Fuel_Data.FuelSensorState = FuelSensorShortCircuit;
// FuelDis.u8DestSeg = 0;
// FuelDis.u8Curseg = 0;
// Fuel_Data.u8FuelInitState = 0;
// Fuel_Data.u8FuelInitFlag = 1;
// Fuel_Data.FuelDir = FUEL_SEG_UP;
// }
// else
// {
// Fuel_Data.u16SensorShortTimer += deltaTime;
// }
// }
// else
if (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[6]) /* 开路 */
{
FuelSensorShortTime += deltaTime;
}
}
else if (FuelR >= 3200)
{ /*断路 320*/
FuelSensorShortTime = 0;
FuelSensorNormalTime = 0;
if ((FuelSensorOpenTime > 3000) || ((FuelStateInitFlag) && (FuelSensorOpenTime > 3000)))
Fuel_Data.u16SensorShortTimer = 0;
Fuel_Data.u16SensorNormalTimer = 0;
if ((Fuel_Data.u16SensorOpenTimer > Fuel_Open_Dealy_Timer) || ((Fuel_Data.u8FuelInitState) && (Fuel_Data.u16SensorOpenTimer > Fuel_Open_Dealy_Timer)))
{
FuelSensorState = FuelSensorOpenCircuit;
DesFuelSetp = 0;
CurFuelSetp = 0;
FuelStateInitFlag = 0;
FuelInitFlag = 1;
FuelDir = FUEL_SEG_UP;
Fuel_Data.FuelSensorState = FuelSensorOpenCircuit;
FuelDis.u8DestSeg = 0;
FuelDis.u8Curseg = 0;
Fuel_Data.u8FuelInitState = 0;
Fuel_Data.u8FuelInitFlag = 1;
Fuel_Data.FuelDir = Up_Dir;
}
else
{
FuelSensorOpenTime += deltaTime;
Fuel_Data.u16SensorOpenTimer += deltaTime;
}
}
else
{
FuelSensorShortTime = 0;
FuelSensorOpenTime = 0;
if (FuelSensorNormalTime > 3000)
Fuel_Data.u16SensorShortTimer = 0;
Fuel_Data.u16SensorOpenTimer = 0;
if (Fuel_Data.u16SensorNormalTimer > Fuel_Normal_Dealy_Timer)
{
FuelSensorState = FuelSensorNormal;
FuelStateInitFlag = 0;
Fuel_Data.FuelSensorState = FuelSensorNormal;
Fuel_Data.u8FuelInitState = 0;
}
else
{
FuelSensorNormalTime += deltaTime;
Fuel_Data.u16SensorNormalTimer += deltaTime;
}
}
}
/**
* @brief 燃油显示服务
*
*/
void Fuel_Gauges_Cal(uint8_t deltaTime)
{
static uint16_t time = 0;
if((FuelSensorState == FuelSensorNormal)&& (FuelR >= 20)&& (FuelR < 3200)){//32000 //FuelR >10 change FuelR >20
if ((Fuel_Data.FuelSensorState == FuelSensorNormal) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[0]) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[6]))
{
/*采集完第一组数据后,开始计算燃油格数*/
if(FuelADCompleteFlg){
if(FuelInitFlag){
FuelRBak = FuelR;
if (Fuel_Data.u8FuelADCompleteFlg)
{
if (Fuel_Data.u8FuelInitFlag)
{
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
}
/*根据回差计算走动方向*/
if(FuelDir == FUEL_SEG_UP){
if (Fuel_Data.FuelDir == Up_Dir)
{
if(FuelR >= FuelRBak + RETURN_DIFFERENCE){
FuelDir = FUEL_SEG_DOWN;
FuelRBak = FuelR;
if (Fuel_Data.Fuel_Res >= Fuel_Data.Fuel_Res_Back + RETURN_DIFFERENCE)
{
Fuel_Data.FuelDir = Down_Dir;
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
}
if(FuelR < FuelRBak){
FuelRBak = FuelR;
if (Fuel_Data.Fuel_Res < Fuel_Data.Fuel_Res_Back)
{
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
}
}
else{
if(FuelRBak >= FuelR + RETURN_DIFFERENCE){
FuelDir = FUEL_SEG_UP;
FuelRBak = FuelR;
else
{
if (Fuel_Data.Fuel_Res_Back >= Fuel_Data.Fuel_Res + RETURN_DIFFERENCE)
{
Fuel_Data.FuelDir = Up_Dir;
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
}
if(FuelR > FuelRBak){
FuelRBak = FuelR;
if (Fuel_Data.Fuel_Res > Fuel_Data.Fuel_Res_Back)
{
Fuel_Data.Fuel_Res_Back = Fuel_Data.Fuel_Res;
}
}
/*计算目标格数*/
if(FuelDir == FUEL_SEG_UP){
if(((DesFuelSetp == 4)||FuelInitFlag) && (FuelR < 150)){
DesFuelSetp = 5;
}
else if(((DesFuelSetp == 3)||FuelInitFlag) && (FuelR < 490)){
DesFuelSetp = 4;
}
else if(((DesFuelSetp == 2)||FuelInitFlag) && (FuelR < 820)){
DesFuelSetp = 3;
if (Fuel_Data.FuelDir == Up_Dir)
{
if (((FuelDis.u8DestSeg == 4) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[5]))
{
FuelDis.u8DestSeg = 5;
}
else if(((DesFuelSetp == 1)||FuelInitFlag) && (FuelR < 1280)){
DesFuelSetp = 2;
else if (((FuelDis.u8DestSeg == 3) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[4]))
{
FuelDis.u8DestSeg = 4;
}
else if(((DesFuelSetp == 0)||FuelInitFlag) && (FuelR < 1870)){
DesFuelSetp = 1;
else if (((FuelDis.u8DestSeg == 2) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[3]))
{
FuelDis.u8DestSeg = 3;
}
else if (((FuelDis.u8DestSeg == 1) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[2]))
{
FuelDis.u8DestSeg = 2;
}
else if(FuelDir == FUEL_SEG_DOWN){
if(((DesFuelSetp == 1)||FuelInitFlag) && (FuelR >= 1870)){
DesFuelSetp = 0;
else if (((FuelDis.u8DestSeg == 0) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res < Fuel_Data.FuelDataArray[1]))
{
FuelDis.u8DestSeg = 1;
}
else if(((DesFuelSetp == 2)||FuelInitFlag) && (FuelR >= 1280)){
DesFuelSetp = 1;
}
else if(((DesFuelSetp == 3)||FuelInitFlag) && (FuelR >= 820)){
DesFuelSetp = 2;
else if (Fuel_Data.FuelDir == Down_Dir)
{
if (((FuelDis.u8DestSeg == 1) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[1]))
{
FuelDis.u8DestSeg = 0;
}
else if(((DesFuelSetp == 4)||FuelInitFlag) && (FuelR >= 490)){
DesFuelSetp = 3;
else if (((FuelDis.u8DestSeg == 2) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[2]))
{
FuelDis.u8DestSeg = 1;
}
else if(((DesFuelSetp == 5)||FuelInitFlag) && (FuelR >= 150)){
DesFuelSetp = 4;
else if (((FuelDis.u8DestSeg == 3) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[3]))
{
FuelDis.u8DestSeg = 2;
}
else if (((FuelDis.u8DestSeg == 4) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[4]))
{
FuelDis.u8DestSeg = 3;
}
else if (((FuelDis.u8DestSeg == 5) || (Fuel_Data.u8FuelInitFlag)) && (Fuel_Data.Fuel_Res >= Fuel_Data.FuelDataArray[5]))
{
FuelDis.u8DestSeg = 4;
}
/*IGN ON 1秒/故障恢复后,开始走格 立即指向当前格 20220704*/
if(Common_GetIgnOnTime() >= 3000ul){
time += deltaTime;
if(FuelInitFlag){
FuelInitFlag = 0;
time = 0;
CurFuelSetp = DesFuelSetp;
}
if(time >= 15000){
time = 0;
if(CurFuelSetp < DesFuelSetp){
CurFuelSetp ++;
if (Fuel_Data.u8FuelInitFlag == 1) /* 首次上电 当前格等于目标格 */
{
FuelDis.u8Curseg = FuelDis.u8DestSeg;
Fuel_Data.u8FuelInitFlag = 0;
}
else if(CurFuelSetp > DesFuelSetp){
CurFuelSetp --;
}
}
if(CurFuelSetp == DesFuelSetp){
time = 0;
}
/* 阻尼处理 上升下降每10S一格 */
if (FuelDis.u8Curseg > FuelDis.u8DestSeg) /* 下降方向 */
{
FuelDis.u16Up_Timer = 0;
FuelDis.u16Down_Timer += deltaTime;
if (FuelDis.u16Down_Timer >= Creep_Down_Up_Timer)
{
FuelDis.u8Curseg--;
FuelDis.u16Down_Timer = 0;
}
}
}
uint8_t Get_Fuel_Disp_Byte(void)
{
uint8_t FuelDispByte = 0u;
FuelDispByte = CurFuelSetp;
if (FuelSensorState == FuelSensorShortCircuit)
else if (FuelDis.u8Curseg < FuelDis.u8DestSeg) /* 上升方向 */
{
//Short
FuelDispByte = FLASH_SYNC_1Hz ? 7 : 0;
}
else if (FuelSensorState == FuelSensorOpenCircuit)
FuelDis.u16Down_Timer = 0;
FuelDis.u16Up_Timer += deltaTime;
if (FuelDis.u16Up_Timer >= Creep_Down_Up_Timer)
{
//Open
FuelDispByte = FLASH_SYNC_1Hz ? 6 : 0;
FuelDis.u8Curseg++;
FuelDis.u16Up_Timer = 0;
}
else if (CurFuelSetp == 1)
{
FuelDispByte = FLASH_SYNC_1Hz ? 1 : 0;
}
else if(CurFuelSetp == 0)
else
{
FuelDispByte = 0;
FuelDis.u16Down_Timer = 0;
FuelDis.u16Up_Timer = 0;
FuelDis.u8Curseg = FuelDis.u8DestSeg;
}
}
return FuelDispByte;
}
void Fuel_Cal_Sevice(uint8_t deltaTime)
/**
* @brief 用于计算燃油电阻值
* 10ms 调用
*/
void Fuel_Res_Call(uint8_t deltaTime)
{
/*计算燃油电阻值*/
Fuel_R_Cal(deltaTime);
}
/**
* @brief 燃油服务函数
* 100ms
*/
void Fuel_Cal_Sevice(uint8_t deltaTime)
{
/*检测燃油电阻状态*/
Fuel_State_Check(deltaTime);
/*显示燃油格*/
Fuel_Gauges_Cal(deltaTime);
}
/**
* @brief 获取燃油当前格数
* @return 格数 Seg0~Sge5
*/
uint8_t Get_CurFuelSetp(void)
{
return CurFuelSetp;
return FuelDis.u8Curseg;
}
/**
* @brief 获取燃油传感器状态
* @return 0 FuelSensorNormal
* 1 FuelSensorShortCircuit
* 2 FuelSensorOpenCircuit
*/
FuelSensorSts_t Get_Fuel_Sensor_State(void)
{
return FuelSensorState;
return Fuel_Data.FuelSensorState;
}
#ifndef FUEL_H
#define FUEL_H
typedef enum{
#include "common.h"
#define Fuel_Short_Value 0 /* 燃油短路值 精度0.1ohm */
#define Fuel_Open_Value 1100 /* 燃油开路值 精度0.1ohm */
#define Fuet_Short_Dealy_Timer 3000 /* 燃油从正常进入短路的延迟时间 单位ms*/
#define Fuel_Open_Dealy_Timer 3000 /* 燃油从正常进入开路的延迟时间 单位ms*/
#define Fuel_Normal_Dealy_Timer 3000 /* 燃油从异常状态进入正常的延迟时间 单位ms*/
#define FUEL_DATA_TIME 25u /*这里填写多长时间采集一个数据,单位ms*/
#define FUEL_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/
#define FUEL_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define FUEL_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/
#define RETURN_DIFFERENCE 25u /*判断上升或下降的回差,精度0.1*/
#define Creep_Down_Up_Timer 10000 /* 一个格的时间 单位ms */
typedef enum
{
Up_Dir = 0,
Down_Dir = 1,
Unvalid = 0XFF,
} _FuelDir;
typedef enum
{
FuelSensorNormal = 0,
FuelSensorShortCircuit,
FuelSensorOpenCircuit,
}FuelSensorSts_t;
} FuelSensorSts_t;
typedef struct
{
uint8_t u8FuelDataCount; /* 燃油采集计数 */
uint8_t u8FuelCollectCount; /* 多久采集一次燃油数据 */
uint16_t FuelDataBuffer[FUEL_DATA_NUM]; /* 存储燃油数据buffer */
uint8_t u8FuelInitState; /* 燃油传感器初始化状态 */
uint8_t u8FuelInitFlag; /* 燃油初始化标志 */
uint16_t FuelDataArray[7]; /* 数组下标0用于存储短路值,1~5用于存储当前对应格数阻值,6用于存储开路阻值 */
uint16_t Fuel_Res; /* 进行滤波处理后的燃油阻值 */
uint16_t Fuel_Res_Back; /* 历史燃油阻值 */
uint16_t u16SensorShortTimer; /* 传感器进入短路时间 */
uint16_t u16SensorOpenTimer; /* 传感器进入开路时间 */
uint16_t u16SensorNormalTimer; /* 传感器进入正常时间 */
uint8_t u8FuelADCompleteFlg; /* 一组数据采集完成标志 */
_FuelDir FuelDir; /* 燃油方向 */
FuelSensorSts_t FuelSensorState; /* 燃油传感器状态 */
} _FuelData;
typedef struct
{
uint8_t u8Curseg; /* 当前格 */
uint8_t u8DestSeg; /* 目标格 */
uint16_t u16Down_Timer; /* 上升延迟时间 */
uint16_t u16Up_Timer; /* 下降延迟时间 */
} _Fuel_Dis;
extern _Fuel_Dis FuelDis;
extern _FuelData Fuel_Data;
extern void Fuel_KL15_Init(void);
extern void Fuel_KL30_Init(void);
extern void Fuel_Cal_Sevice(uint8_t deltaTime);
extern uint8_t Get_Fuel_Disp_Byte(void);
extern uint8_t Get_CurFuelSetp(void);
extern FuelSensorSts_t Get_Fuel_Sensor_State(void);
void Fuel_Res_Call(uint8_t deltaTime);
#endif
#include "Unit_Convert_Service.h"
#define GUI_DISP_MODE_NORMAL 0x00 //正常
#define GUI_DISP_MODE_NEGATIVE 0x01 //负数
/**
* @brief 公里转换英里服务函数
* @return 英里 精度 1
*/
uint32_t Unit_Conv_km_To_mile(unsigned long km)
{
return km * 621 / 1000; //mile = km * 3937 / 6336
}
#ifndef UNIT_CONVERT_SERVICE_H
#define UNIT_CONVERT_SERVICE_H
#include "common.h"
extern uint32_t Unit_Conv_km_To_mile(unsigned long km);
#endif
\ No newline at end of file
......@@ -91,6 +91,7 @@ void Sys_Run_Mode_10ms_Tasks(void)
Data_Mileage_Write_EEPROM();
Fuel_Res_Call(10u);
}
/*============================================================================*/
......@@ -147,7 +148,9 @@ void Sys_Run_Mode_100ms_Tasks_Group2(void)
void Sys_Run_Mode_100ms_Tasks_Group3(void)
{
Services_Mileage_Callback();
Data_Trip_Processing();
Data_ODO_Processing();
}
void Sys_Run_Mode_100ms_Tasks_Group4(void)
......@@ -156,8 +159,14 @@ void Sys_Run_Mode_100ms_Tasks_Group4(void)
RTC_Service();
}
uint32_t TRIPATEST = 0;
uint32_t ODOTEST = 0;
uint32_t MileageTest = 0;
void Sys_Run_Mode_100ms_Tasks_Group5(void)
{
TRIPATEST = Data_Read_Trip(EM_TRIP_A);
ODOTEST = Data_ODO_Read();
MileageTest = Data_Mileage_Read();
}
......
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