Commit 3bdf9153 authored by wangxuhui's avatar wangxuhui

Merge branch 'dev' into 'master_dev'

Dev

See merge request !93
parents 4a07f805 bbf1d175
......@@ -393,6 +393,11 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\System\main.h</FilePath>
</File>
<File>
<FileName>Sys_Scheduler_Lib.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\System\Sys_Scheduler_Lib.c</FilePath>
</File>
<File>
<FileName>Sys_Scheduler.c</FileName>
<FileType>1</FileType>
......@@ -403,11 +408,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\System\Sys_Scheduler.h</FilePath>
</File>
<File>
<FileName>Sys_Scheduler_Lib.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\System\Sys_Scheduler_Lib.c</FilePath>
</File>
<File>
<FileName>Sys_Scheduler_Lib.h</FileName>
<FileType>5</FileType>
......
......@@ -132,7 +132,7 @@ const uint8_t user_opt_data[4] __attribute__((used)) __attribute__((section(".AR
// <0x72=> VLVDH = 4.06V/3.98V, VLVDL = 2.75V ( interrupt & reset mode )
// <i> Please setting the item for interrupt & reset mode
// </h>
0x3B,
0x72,
/**
* @brief HOCO Control BYTE (FRQSEL)
......
#include "Backlight.h"
#include "BackLight.h"
#include "Components.h"
typedef void (*SetPwm)(Light_uint16_t Pwm);
typedef Light_uint8_t (*SetPwmEnable)(void);
typedef Light_uint8_t (*SetPwmLevel)(void);
typedef Light_uint16_t (*NtcRes)(void);
typedef struct
{
SetPwm SetPwmCbk; /* 设置PWM回调函数 */
SetPwmEnable SetPwmEnCbk; /* 设置PWM使能回调函数 */
SetPwmLevel SetPwmLevelCbk; /* 背光等级回调函数 */
NtcRes NtcResCbk; /* 获取电阻值回调函数 */
} BackLightExtPara;
typedef struct
{
SetPwm SetPwmCbk; /* 设置PWM回调函数 */
SetPwmEnable SetPwmEnCbk; /* 设置PWM使能回调函数 */
SetPwmLevel SetPwmLevelCbk; /* 背光等级回调函数 */
NtcRes NtcResCbk;
Light_uint8_t BacklightEn; /* 背光使能 */
Light_uint16_t BacklightPwm; /* 背光PWM */
Light_uint16_t BacklightLevel; /* 背光等级 */
} _Backlight_Op;
_Backlight_Op Backlight_Operate;
#define BACK_LIGHT_Val_1 (( 100 * Backlight_Operate.BacklightPwm ) / 100 )
#define BACK_LIGHT_Val_2 (( 200 * Backlight_Operate.BacklightPwm ) / 100 )
#define BACK_LIGHT_Val_3 (( 400 * Backlight_Operate.BacklightPwm ) / 100 )
#define BACK_LIGHT_Val_4 (( 600 * Backlight_Operate.BacklightPwm ) / 100 )
#define BACK_LIGHT_Val_5 (( 800 * Backlight_Operate.BacklightPwm ) / 100 )
#define LIGHT_DATA_TIME 10u /*这里填写多长时间采集一个数据,单位ms*/
#define LIGHT_DATA_NUM 20u /*燃油电阻采集数据总数 最大255*/
#define LIGHT_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
......@@ -45,349 +12,101 @@ Light_uint16_t NtcDataCount;
Light_uint16_t NtcData[LIGHT_DATA_NUM] = {0};
typedef struct
{
Light_uint16_t Temperature; /* 温度 */
Light_uint16_t Resistance; /* 阻值 */
} _st_Backlight;
typedef struct
{
Light_uint16_t BacklightLevel; /* 背光等级 */
Light_uint16_t BacklightDuty; /* 背光占空比 */
} _st_BacklightLevel;
#define Backlight_Max 10
#define BacklightLevel_Max 5
_st_Backlight BacklightTable[Backlight_Max] =
{
/*温度 阻值 */
{550, 2708},
{600, 2602},
{650, 2500},
{700, 2043},
{750, 2310},
{800, 2221},
{850, 2136},
{900, 2055},
{950, 1977},
{1000, 1902},
};
_st_BacklightLevel BacklightLevelTable[BacklightLevel_Max] =
{
/*背光等级 背光占空比 */
{1, 100},
{2, 200},
{3, 400},
{4, 600},
{5, 800},
};
void Data_Light_Res_service(Light_uint8_t deltaTime)//获取光感阻值,并做平均
{
uint16_t LightRes = 0;
uint8_t i, j;
uint32_t temp32;
static uint16_t timeCount = 0;
if (timeCount >= LIGHT_DATA_TIME)
{
timeCount = 0;
if (NtcDataCount < LIGHT_DATA_NUM)
{
/*获取光敏电阻*/
LightRes = ADC_Read_Signal(ADC_CH_LIGHT_SENSITIVE); // ADC_Read_Signal(ADC_CH_FUEL1);
/*四舍五入*/
if (LightRes < 32000)
{
if (LightRes % 10 >= 5)
{
LightRes += 5;
}
}
else
{
LightRes = 32000;
}
/*由小到大插入数据*/
for (i = 0; i < NtcDataCount; i++)
{
if (LightRes < NtcData[i])
{
break;
}
}
for (j = NtcDataCount; j > i; j--)
{
NtcData[j] = NtcData[j - 1];
}
NtcData[i] = LightRes;
NtcDataCount++;
}
else
{
/*一组数据采集完毕,取中间部分计算平均值*/
temp32 = 0;
for (i = LIGHT_CAL_START; i < LIGHT_CAL_END; i++)
{
temp32 += NtcData[i];
}
LightR = (uint16_t) (temp32 / (LIGHT_CAL_END - LIGHT_CAL_START));
NtcDataCount = 0;
LightADCompleteFlg = 1;
}
}
timeCount += deltaTime;
if(SYS_OPR_STAT_IGN_ON)
{
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO))
{
if(LightADCompleteFlg)
{
if(LightR <= 800)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
{
LightR_Status_Count = 0;
LightR_Status = 0;
}
}
else if(LightR > 800)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
{
LightR_Status_Count = 0;
LightR_Status = 1;
}
}
if(LightR_Status == 0)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_2);
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_5);
}
}
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
if(Backlight_SetPwmLevel() == 1U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_1);
}
else if(Backlight_SetPwmLevel() == 2U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_2);
}
else if(Backlight_SetPwmLevel() == 3U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_3);
}
else if(Backlight_SetPwmLevel() == 4U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_4);
}
else if(Backlight_SetPwmLevel() == 5U)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_5);
}
}
else
{
BackLight_Process();
}
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
}
}
uint8_t u8Lvl;
uint8_t Pos_Lamp_Sts;
uint16_t u16DialcurDuty;
uint16_t u16DialdestDuty;
uint16_t u16DialDampingTimer;
uint16_t u16TftcurDuty;
uint16_t u16TftdestDuty;
uint16_t u16TftDampingTimer;
Light_uint16_t GetBacklightDutyByLevel(Light_uint16_t level)
{
for (Light_uint8_t i = 0; i < BacklightLevel_Max; ++i)
{
if (BacklightLevelTable[i].BacklightLevel == level)
{
return BacklightLevelTable[i].BacklightDuty;
}
}
return 0;
}
uint8_t destFactor;
uint8_t curFactor;
uint16_t Ntc_Timer;
} _Back_Light_Struct;
_Back_Light_Struct g_stBL;
/* 设置PWM回调函数 */
void Backlight_SetPwm(Light_uint16_t Pwm)
typedef enum
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, Pwm);
}
/* 设置PWM使能回调函数 */
Light_uint8_t Backlight_SetPwmEn(void)
Light_Lvl_0 = 0,
Light_Lvl_1,
Light_Lvl_2,
Light_Lvl_3,
Light_Lvl_4,
Light_Lvl_5,
Light_Lvl_6,
Light_Lvl_Max,
}_BL_LVL_Enum;
void BackLight_Back_PWM_Init(void);
void BackLight_30_Init(void)
{
return 1;
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
BackLight_Set_Lvl(Light_Lvl_4);
g_stBL.curFactor = 100;
}
/* 背光等级回调函数 */
Light_uint8_t Backlight_SetPwmLevel(void)
void BackLight_15_Init(void)
{
Light_uint8_t Backlight_PwmLevel;
if(LightR > 0 && LightR <= 400)
{
Backlight_PwmLevel = 1U;
}
else if(LightR > 400 && LightR <= 800)
{
Backlight_PwmLevel = 2U;
}
else if(LightR > 800 && LightR <= 1400)
{
Backlight_PwmLevel = 3U;
}
else if(LightR > 1400 && LightR <= 2000)
{
Backlight_PwmLevel = 4U;
}
else if(LightR > 2000 && LightR <= 2600)
{
Backlight_PwmLevel = 5U;
}
return Backlight_PwmLevel;
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
g_stBL.curFactor = 100;
}
/* 获取电阻值回调函数 */
Light_uint16_t Backlight_NtcRes(void)
void BackLight_WakeUp_Init(void)
{
Light_uint16_t u8NtcRes = ADC_Read_Signal(ADC_CH_NTC_TEMP);
return u8NtcRes;
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
g_stBL.curFactor = 100;
}
void Backlight_Init(BackLightExtPara *backlightInit)
void BackLight_Sleep_Init(void)
{
Backlight_Operate.SetPwmCbk = backlightInit->SetPwmCbk;
Backlight_Operate.SetPwmEnCbk = backlightInit->SetPwmEnCbk;
Backlight_Operate.SetPwmLevelCbk = backlightInit->SetPwmLevelCbk;
Backlight_Operate.NtcResCbk = backlightInit->NtcResCbk;
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
}
void Backlight_KL30_Wakeup_Init(void)
{
BackLightExtPara pFunc;
pFunc.SetPwmCbk = Backlight_SetPwm;
pFunc.SetPwmEnCbk = Backlight_SetPwmEn;
pFunc.SetPwmLevelCbk = Backlight_SetPwmLevel;
pFunc.NtcResCbk = Backlight_NtcRes;
Backlight_Init(&pFunc);
}
/**
* 根据给定的背光表和输入电阻值,获取对应的温度值。
* 这个函数通过线性插值方法在背光表中查找与输入电阻最接近的温度值。
* @param backlightTable 背光表,包含电阻和对应温度的数组。
* @param size 背光表的大小,即数组的元素个数。
* @param input 输入的电阻值。
* @return 返回对应的温度值。
*/
Light_uint16_t Get_Ntc_Temp(_st_Backlight *backlightTable, Light_uint8_t size, Light_uint16_t input)
void BackLight_Back_PWM_Init(void)
{
Light_uint16_t result = 0;
Light_uint32_t temp = 0;
Light_uint8_t i = 0;
if (input >= backlightTable[0].Resistance)
{
result = backlightTable[0].Temperature;
}
else if (input <= backlightTable[size - 1].Resistance)
{
result = backlightTable[size - 1].Temperature;
}
else
{
for (i = 0; i < size - 1; i++)
{
if ((input < backlightTable[i].Resistance) && (input >= backlightTable[i + 1].Resistance))
{
temp = backlightTable[i + 1].Temperature - backlightTable[i].Temperature;
temp *= (backlightTable[i].Resistance - input);
temp /= (backlightTable[i].Resistance - backlightTable[i + 1].Resistance);
temp += backlightTable[i].Temperature;
result = (Light_uint16_t)temp;
break;
}
}
}
return result;
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
}
Light_uint16_t Get_Pwm_Factor_Optimized(Light_uint16_t CurrentTemp)
uint16_t NTCDegreesBoard[] =
{
if (CurrentTemp >= 900)
{
return 10;
}
if (CurrentTemp >= 880 && CurrentTemp <= 890)
{
return 20;
}
if (CurrentTemp >= 850 && CurrentTemp <= 860)
{
return 70;
}
if (CurrentTemp >= 800 && CurrentTemp <= 830)
{
return 75;
}
if (CurrentTemp >= 750 && CurrentTemp <= 780)
{
return 80;
}
if (CurrentTemp >= 700 && CurrentTemp <= 730)
{
return 85;
}
if (CurrentTemp >= 650 && CurrentTemp <= 680)
{
return 90;
}
if (CurrentTemp >= 600 && CurrentTemp <= 630)
{
return 95;
}
if (CurrentTemp < 580)
{
return 100;
}
return 100;
}
550,
600,
650,
700,
750,
800,
850,
900,
950,
1000,
};
typedef struct
uint16_t NTCResBoard[] =
{
Light_uint8_t destFactor;
Light_uint8_t curFactor;
Light_uint16_t NtcDelayTimer;
Light_uint16_t u16DialcurDuty;
Light_uint16_t u16DialdestDuty;
Light_uint16_t u16DialDampingTimer;
} _st_BacklightFactor_Ctrl;
_st_BacklightFactor_Ctrl BacklightFactorCtrl;
27091,
22224,
18323,
15184,
12635,
10566,
8873,
7481,
6337,
5384,
};
/**
* @brief 实现数据的渐变效果
......@@ -443,136 +162,431 @@ void U16_Data_Gradient(Light_uint16_t *cur, Light_uint16_t dest, Light_uint16_t
}
}
void BackLight_Service(void)
uint16_t NTC_Get_Degrees(uint16_t *ResBoard, uint16_t *DegreesBoard, uint8_t size, uint16_t input)
{
uint8_t i = 0;
uint16_t ret = 0;
uint32_t temp = 0;
if(input >= ResBoard[0])
{
ret = DegreesBoard[0];
}
else if(input <= ResBoard[size-1])
{
ret = DegreesBoard[size-1];
}
else
{
for(i=0; i<size-1; i++)
{
if((input < ResBoard[i] )&&(input >= ResBoard[i+1]))
{
temp = DegreesBoard[i+1] - DegreesBoard[i];
temp *= (ResBoard[i] - input);
temp /= (ResBoard[i] - ResBoard[i+1]);
temp += DegreesBoard[i];
ret = (uint16_t)temp;
break;
}
}
}
return ret;
}
Light_uint16_t CurrentTemp = 0;
Light_uint16_t Factor = 0;
void BackLight_Get_curDuty(void)
{
uint16_t tftBL = 0;
uint16_t dialBL = 0;
uint16_t NTCDegrees = 0;
uint16_t NTCresistance = 0;
uint32_t wtemp = 0;
/* 获取NTC阻值 */
NTCresistance = ADC_Read_Signal(ADC_CH_NTC_TEMP);
/* 计算温度值 */
NTCDegrees = NTC_Get_Degrees(NTCResBoard ,NTCDegreesBoard, sizeof(NTCResBoard)/sizeof(uint16_t), NTCresistance);
if ( NTCDegrees < 650 )
{
g_stBL.destFactor = 100;
}
else if ( NTCDegrees <= 850 )
{
wtemp = (850 - NTCDegrees);
wtemp *= 3;
wtemp += 400;
wtemp /= 10;
g_stBL.destFactor = wtemp;
/* 85°为40%占空比,65°为100%占空比, 1°大概为3% */
}
else
{
g_stBL.destFactor = 40;
}
if ( (g_stBL.curFactor < g_stBL.destFactor) && (NTCDegrees < 750) )
{
if ( g_stBL.Ntc_Timer <= 400 )
g_stBL.Ntc_Timer++;
else
{
g_stBL.Ntc_Timer = 0;
g_stBL.curFactor++;
}
if (Backlight_Operate.NtcResCbk != Backlight_NULL)
if ( g_stBL.curFactor >= g_stBL.destFactor )
g_stBL.curFactor = g_stBL.destFactor;
}
else if ( g_stBL.curFactor > g_stBL.destFactor )
{
CurrentTemp = Get_Ntc_Temp(BacklightTable, sizeof(BacklightTable) / sizeof(Light_uint16_t), Backlight_Operate.NtcResCbk());
if ( g_stBL.Ntc_Timer <= 200 )
g_stBL.Ntc_Timer++;
else
{
g_stBL.Ntc_Timer = 0;
g_stBL.curFactor--;
}
if ( g_stBL.curFactor <= g_stBL.destFactor )
g_stBL.curFactor = g_stBL.destFactor;
}
/* 背光等级 */
switch (g_stBL.u8Lvl)
{
case Light_Lvl_0:
{
tftBL = 100;
break;
}
case Light_Lvl_1:
{
tftBL = 200;
break;
}
case Light_Lvl_2:
default:
{
tftBL = 400;
break;
}
case Light_Lvl_3:
{
tftBL = 600;
break;
}
case Light_Lvl_4:
{
tftBL = 800;
break;
}
}
/* 两路PWM的时候再启用 */
#if 0
g_stBL.u16DialdestDuty = ( uint32_t )(( uint32_t )dialBL * ( uint32_t )g_stBL.curFactor / ( uint32_t )100);
if(g_stBL.u16DialdestDuty < 100)
{
g_stBL.u16DialdestDuty = 100;
}
if(g_stBL.u16DialcurDuty < 100)
{
g_stBL.u16DialcurDuty = g_stBL.u16DialdestDuty;
}
else
{
CurrentTemp = 0XFFFF; /* 无效不执行NTC策略 */
U16_Data_Gradient((uint16_t *)&g_stBL.u16DialcurDuty, g_stBL.u16DialdestDuty, 1u, (uint16_t *)&g_stBL.u16DialDampingTimer, 1u);
}
/* 根据外部传入背光等级获取对应占空比 */
if (Backlight_Operate.SetPwmLevelCbk != Backlight_NULL)
#endif
/* 计算具体应该多少占空比 */
g_stBL.u16TftdestDuty = ( uint32_t )(( uint32_t )tftBL * ( uint32_t )g_stBL.curFactor / ( uint32_t )100);
/* 确保目标占空比不小于100 */
if(g_stBL.u16TftdestDuty < 100)
{
g_stBL.u16TftdestDuty = 100;
}
/* 如果当前占空比小于100,那还是按照上次结果显示 */
if(g_stBL.u16TftcurDuty < 100)
{
Backlight_Operate.BacklightPwm = GetBacklightDutyByLevel(Backlight_Operate.SetPwmLevelCbk());
g_stBL.u16TftcurDuty = g_stBL.u16TftdestDuty;
}
if (Backlight_Operate.SetPwmEnCbk != Backlight_NULL)
/* 逐步逼近目标占空比 */
else
{
Backlight_Operate.BacklightEn = Backlight_Operate.SetPwmEnCbk();
U16_Data_Gradient((uint16_t *)&g_stBL.u16TftcurDuty, g_stBL.u16TftdestDuty, 1u, (uint16_t *)&g_stBL.u16DialDampingTimer, 1u);
}
if (Backlight_Operate.BacklightEn == 1)
{
}
if (CurrentTemp != 0XFFFF)
{
#if 0
/* 此项目用不上 */
//10MS
void BackLight_Control(void)
{
uint16_t wtemp = 0;
BacklightFactorCtrl.destFactor = Get_Pwm_Factor_Optimized(CurrentTemp);
if(SYS_OPR_STAT_HALT)
{
PWM_Channel_Set_Duty(5, 0);
PWM_Channel_Set_Duty(3, 0);
return;
}
if ((BacklightFactorCtrl.curFactor < BacklightFactorCtrl.destFactor) && (CurrentTemp <= BacklightTable[0].Temperature))
{
if (BacklightFactorCtrl.NtcDelayTimer <= 400)
BacklightFactorCtrl.NtcDelayTimer++;
else
{
BacklightFactorCtrl.NtcDelayTimer = 0;
BacklightFactorCtrl.curFactor++;
}
if(Get_Core_StartStatus() == Soc_Startup)
{
PWM_Channel_Set_Duty(5, 0);
PWM_Channel_Set_Duty(3, 0);
return;
}
if (BacklightFactorCtrl.curFactor >= BacklightFactorCtrl.destFactor)
BacklightFactorCtrl.curFactor = BacklightFactorCtrl.destFactor;
}
else if (BacklightFactorCtrl.curFactor > BacklightFactorCtrl.destFactor)
{
if (BacklightFactorCtrl.NtcDelayTimer <= 200)
BacklightFactorCtrl.NtcDelayTimer++;
else
{
BacklightFactorCtrl.NtcDelayTimer = 0;
BacklightFactorCtrl.curFactor--;
}
if (BacklightFactorCtrl.curFactor <= BacklightFactorCtrl.destFactor)
BacklightFactorCtrl.curFactor = BacklightFactorCtrl.destFactor;
}
BackLight_Get_curDuty();
if(Common_Get_IG_Sts() == COMMON_POWER_ON)
{
PWM_Channel_Set_Duty(5, g_stBL.u16DialcurDuty);
PWM_Channel_Set_Duty(3, g_stBL.u16TftcurDuty);
}
else
{
PWM_Channel_Set_Duty(5, 0);
PWM_Channel_Set_Duty(3, 0);
}
}
#endif
/* 获取当前背光等级 */
uint8_t BackLight_Get_Lvl(void )
{
return g_stBL.u8Lvl;
}
/* 设置当前背光等级 */
void BackLight_Set_Lvl(Light_uint8_t lvl)
{
g_stBL.u8Lvl = lvl;
}
BacklightFactorCtrl.u16DialdestDuty = Backlight_Operate.BacklightPwm * BacklightFactorCtrl.curFactor / 100;
if (BacklightFactorCtrl.u16DialdestDuty < 50)
{
BacklightFactorCtrl.u16DialdestDuty = 50;
}
if (CurrentTemp <= BacklightTable[0].Temperature)
void Data_Light_Res_service(Light_uint8_t deltaTime)//获取光感阻值,并做平均
{
uint16_t LightRes = 0U;
uint8_t i, j;
uint32_t temp32;
static uint16_t timeCount = 0;
if (timeCount >= LIGHT_DATA_TIME)
{
timeCount = 0;
if (NtcDataCount < LIGHT_DATA_NUM)
{
/*获取光敏电阻*/
LightRes = ADC_Read_Signal(ADC_CH_LIGHT_SENSITIVE); // ADC_Read_Signal(ADC_CH_FUEL1);
/*四舍五入*/
if (LightRes < 32000)
{
BacklightFactorCtrl.u16DialcurDuty = BacklightFactorCtrl.u16DialdestDuty;
if (LightRes % 10 >= 5)
{
LightRes += 5;
}
}
else
{
if (BacklightFactorCtrl.u16DialcurDuty < 100)
{
BacklightFactorCtrl.u16DialcurDuty = BacklightFactorCtrl.u16DialdestDuty;
}
else
LightRes = 32000;
}
/*由小到大插入数据*/
for (i = 0; i < NtcDataCount; i++)
{
if (LightRes < NtcData[i])
{
U16_Data_Gradient((Light_uint16_t *)&BacklightFactorCtrl.u16DialcurDuty, BacklightFactorCtrl.u16DialdestDuty, 1u, (Light_uint16_t *)&BacklightFactorCtrl.u16DialDampingTimer, 1u);
break;
}
}
Backlight_Operate.BacklightPwm = BacklightFactorCtrl.u16DialcurDuty;
// Backlight_Operate.SetPwmCbk(Backlight_Operate.BacklightPwm);
for (j = NtcDataCount; j > i; j--)
{
NtcData[j] = NtcData[j - 1];
}
NtcData[i] = LightRes;
NtcDataCount++;
}
else
{
/* 无NTC策略 直接根据当前背光等级调整PWM */
Backlight_Operate.BacklightPwm = 100U;
// Backlight_Operate.SetPwmCbk(Backlight_Operate.BacklightPwm);
/*一组数据采集完毕,取中间部分计算平均值*/
temp32 = 0;
for (i = LIGHT_CAL_START; i < LIGHT_CAL_END; i++)
{
temp32 += NtcData[i];
}
LightR = (uint16_t) (temp32 / (LIGHT_CAL_END - LIGHT_CAL_START));
NtcDataCount = 0;
LightADCompleteFlg = 1;
}
}
else
timeCount += deltaTime;
}
/* 背光等级回调函数 */
Light_uint8_t Backlight_GetPwmLevel(void)
{
Light_uint8_t Backlight_PwmLevel;
if(LightR > 0 && LightR <= 400)
{
Backlight_Operate.BacklightPwm = 100U;
// Backlight_Operate.SetPwmCbk(0);
Backlight_PwmLevel = 1U;
}
else if(LightR > 400 && LightR <= 800)
{
Backlight_PwmLevel = 2U;
}
else if(LightR > 800 && LightR <= 1400)
{
Backlight_PwmLevel = 3U;
}
else if(LightR > 1400 && LightR <= 2000)
{
Backlight_PwmLevel = 4U;
}
else if(LightR > 2000 && LightR <= 2600)
{
Backlight_PwmLevel = 5U;
}
return Backlight_PwmLevel;
}
/* 背光服务,10ms调用 */
void BackLight_Process(void)
{
if(SYS_OPR_STAT_IGN_ON)
if(SYS_OPR_STAT_IGN_ON)
{
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_5) == 1)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, (BACK_LIGHT_Val_5));
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_4) == 1)
/* 自动模式,判断白天还是黑夜 */
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO))
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_4);
if(LightADCompleteFlg)
{
if(g_u8Display_Mode == ModeNIGHT)
{
LightR_Status = 0U;
}
else if(g_u8Display_Mode == ModeDAY)
{
LightR_Status = 1U;
}
if(LightR <= 200)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
{
LightR_Status_Count = 0;
LightR_Status = 0;
}
}
else if(LightR > 200)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
{
LightR_Status_Count = 0;
LightR_Status = 1;
}
}
/* 系统的意思是要当前背光等级基础上的80%和20%,不是直接设置背光 */
/*if(LightR_Status == 0)
{
BackLight_Set_Lvl(Light_Lvl_1);
}
else
{
BackLight_Set_Lvl(Light_Lvl_4);
}*/
if(LightR_Status == 0)
{
g_u8Display_Mode = ModeNIGHT;
}
else if(LightR_Status == 1)
{
g_u8Display_Mode = ModeDAY;
}
}
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_3) == 1)
/* 根据感光判断当前应该设置什么背光等级 */
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_3);
if(Backlight_GetPwmLevel() == 1U)
{
BackLight_Set_Lvl(Light_Lvl_0);
}
else if(Backlight_GetPwmLevel() == 2U)
{
BackLight_Set_Lvl(Light_Lvl_1);
}
else if(Backlight_GetPwmLevel() == 3U)
{
BackLight_Set_Lvl(Light_Lvl_2);
}
else if(Backlight_GetPwmLevel() == 4U)
{
BackLight_Set_Lvl(Light_Lvl_3);
}
else if(Backlight_GetPwmLevel() == 5U)
{
BackLight_Set_Lvl(Light_Lvl_4);
}
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_2) == 1)
/* 菜单设置 */
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_2);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_1) == 1)
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_5) == 1)
{
BackLight_Set_Lvl(Light_Lvl_4);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_4) == 1)
{
BackLight_Set_Lvl(Light_Lvl_3);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_3) == 1)
{
BackLight_Set_Lvl(Light_Lvl_2);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_2) == 1)
{
BackLight_Set_Lvl(Light_Lvl_1);
}
else if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_1) == 1)
{
BackLight_Set_Lvl(Light_Lvl_0);
}
else
{
BackLight_Set_Lvl(Light_Lvl_3);
}
}
/* 数据处理,包括NTC功能 */
BackLight_Get_curDuty();
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO))
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_1);
uint16_t u16TftPwmBackShow = g_stBL.u16TftcurDuty ;
if(LightR_Status == 0)
{
u16TftPwmBackShow *= 20U;
u16TftPwmBackShow /= 100U;
}
else
{
u16TftPwmBackShow *= 80U;
u16TftPwmBackShow /= 100U;
}
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, u16TftPwmBackShow);
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, BACK_LIGHT_Val_4);
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, g_stBL.u16TftcurDuty);
}
}
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
......
......@@ -22,10 +22,22 @@
#endif /* NULL */
extern Light_uint16_t LightR_Status ;
void Backlight_KL30_Wakeup_Init(void);
void BackLight_Process(void);
Light_uint8_t Backlight_SetPwmLevel(void);
extern void BackLight_Service(void);
extern void BackLight_30_Init(void);
extern void BackLight_15_Init(void);
extern void BackLight_WakeUp_Init(void);
extern void BackLight_Sleep_Init(void);
extern void BackLight_Back_PWM_Init(void);
extern void BackLight_Set_Lvl(Light_uint8_t lvl);
extern void BackLight_Process(void);
extern Light_uint8_t Backlight_GetPwmLevel(void);
......
......@@ -160,7 +160,7 @@ TEXT_STRUCT TextPara[TEXT_NUM_TOTAL] =
{TEXT_NUM_INFORMATION_HW, 0x4014, 0}, //23F 23E
{TEXT_NUM_INFORMATION_OS, 0x4015, 0},
{TEXT_NUM_INFORMATION_MCU, 0x4016, 0},
{TEXT_NUM_ROAD_NAME, 0x4022, 0},
{TEXT_NUM_FAUULT_CODE, 0x4022, 0},
};
......@@ -173,6 +173,7 @@ uint8_t LastBlueToothName[20];
uint8_t PhoneNumberTotal[20];
uint8_t InformationOSVersion[20];
uint8_t InformationMCUVersion[26];
uint8_t TextFaultCodeNum[10];
void TextService(void)
{
......@@ -215,6 +216,7 @@ void TextService(void)
memset(BlueToothName, 0, sizeof(BlueToothName));
memset(LastBlueToothName, 0, sizeof(LastBlueToothName));
memset(PhoneNumberTotal, 0, sizeof(PhoneNumberTotal));
memset(TextFaultCodeNum, 0, sizeof(TextFaultCodeNum));
for (uint8_t i = 0; i < sizeof(OSVersionASCLLList); i++)
{
......@@ -253,8 +255,8 @@ void TextService(void)
}
}
}
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BLUETOOTH_CONNECT)
{
// if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BLUETOOTH_CONNECT)
// {
if (memcmp(LastBlueToothName, BlueToothPhoneData.BlueToothName, sizeof(LastBlueToothName)) != 0)
{
for (uint8_t i = 0; i < sizeof(BlueToothPhoneData.BlueToothName); i++)
......@@ -265,7 +267,7 @@ void TextService(void)
memcpy(LastBlueToothName, BlueToothPhoneData.BlueToothName, sizeof(LastBlueToothName));
TextPara[TEXT_NUM_BLUETOOTH_NAME].Vaild = 0X01;
}
}
// }
if (LastPhoneBookTotalCount != BlueToothPhoneData.PhoneBookTotalCount)
{
uint8_t TempNumberCnts = 0;
......@@ -284,6 +286,63 @@ void TextService(void)
TextPara[TEXT_NUM_PHONE_NUMBER_TOTAL].Vaild = 0x01;
LastPhoneBookTotalCount = BlueToothPhoneData.PhoneBookTotalCount;
}
if(CAN_MSG_Status(&CAN_CH0_CanMsgOp, CAN_CH0_ID_CH0_402_Msg_Count) == CAN_SIG_LOST)
{
;
}
else
{
uint8_t FaultCodeNumCnts = 0;
uint8_t FaultCodeHighNum = 0;
uint8_t FaultCodeMidNum = 0;
FaultCodeHighNum = Get_Current_Hight_FaultCode();
FaultCodeMidNum = Get_Current_Mid_FaultCode();
TextFaultCodeNum[FaultCodeNumCnts++] = 0x50;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
if((((FaultCodeHighNum)&(0xF0)) >> 4)<10)
{
TextFaultCodeNum[FaultCodeNumCnts++] = (((FaultCodeHighNum)&(0xF0)) >> 4) + 0x30;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
else
{
TextFaultCodeNum[FaultCodeNumCnts++] = ((((FaultCodeHighNum)&(0xF0)) >> 4) % 10) + 0x41;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
if((((FaultCodeHighNum)&(0x0F)))<10)
{
TextFaultCodeNum[FaultCodeNumCnts++] = ((FaultCodeHighNum)&(0x0F)) + 0x30;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
else
{
TextFaultCodeNum[FaultCodeNumCnts++] = (((FaultCodeHighNum)&(0x0F)) % 10) + 0x41;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
if((((FaultCodeMidNum)&(0xF0)) >> 4)<10)
{
TextFaultCodeNum[FaultCodeNumCnts++] = (((FaultCodeMidNum)&(0xF0)) >> 4) + 0x30;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
else
{
TextFaultCodeNum[FaultCodeNumCnts++] = ((((FaultCodeMidNum)&(0xF0)) >> 4) % 10) + 0x41;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
if((((FaultCodeMidNum)&(0x0F)))<10)
{
TextFaultCodeNum[FaultCodeNumCnts++] = ((FaultCodeMidNum)&(0x0F)) + 0x30;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
else
{
TextFaultCodeNum[FaultCodeNumCnts++] = (((FaultCodeMidNum)&(0x0F)) % 10) + 0x41;
TextFaultCodeNum[FaultCodeNumCnts++] = 0x00;
}
TextPara[TEXT_NUM_FAUULT_CODE].Vaild = 0x01;
}
}
......@@ -13,7 +13,7 @@ typedef enum {
TEXT_NUM_INFORMATION_HW,
TEXT_NUM_INFORMATION_OS,
TEXT_NUM_INFORMATION_MCU,
TEXT_NUM_ROAD_NAME,
TEXT_NUM_FAUULT_CODE,
TEXT_NUM_TOTAL,
} TEXT_NUM_ENUM;
......@@ -47,6 +47,7 @@ extern uint8_t BlueToothName[40];
extern uint8_t PhoneNumberTotal[20];
extern uint8_t InformationOSVersion[20];
extern uint8_t InformationMCUVersion[26];
extern uint8_t TextFaultCodeNum[10];
extern TEXT_STRUCT TextPara[];
#endif
\ No newline at end of file
......@@ -118,7 +118,7 @@ void AMT630H_GUI_Fault_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0097_334_163);/*current fault*/
AMT630H_GUI_FaultCode(Get_FaultCode_Lost(),Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode());
}
/*蓝牙名称改为字库显示*/
/*os MCU版本*/
/* RGB 0 0 0 --- 黑*/
/* RGB 0XFF 0XFF 0XFF --- 白*/
PackedTransfer_LabelsList( 0x8022,(uint8_t *)InformationOSVersion, 20);
......@@ -162,7 +162,7 @@ void AMT630H_GUI_Fault_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0285_334_163);/*current fault*/
AMT630H_GUI_FaultCode(Get_FaultCode_Lost(),Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode());
}
/*蓝牙名称改为字库显示*/
/*os MCU版本*/
/* RGB 0 0 0 --- 黑*/
/* RGB 0XFF 0XFF 0XFF --- 白*/
PackedTransfer_LabelsList( 0x8022,(uint8_t *)InformationOSVersion, 20);
......@@ -170,7 +170,6 @@ void AMT630H_GUI_Fault_Information(void)
PackedTransfer_LabelsList( 0x9022,(uint8_t *)InformationMCUVersion, 26);
SetPageText(GRAPHICS_PAGE_0, 0x9022, 567 , 356 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
......@@ -203,160 +202,29 @@ uint8_t FaultCodevalid_monitor = 2;
/*故障码显示函数*/
static void AMT630H_GUI_FaultCode(uint8_t FaultCodeLost,uint8_t FaultCodevalid,uint8_t FaultCode_hight,uint8_t FaultCode_mid)
{
/*数字只有两组 历史故障和故障信息纵坐标不同*/
FaultCodevalid_monitor = FaultCodevalid;
if(FaultCodeLost == 1)
{
if(FaultCodevalid > 0)
{
DISPLAY_NUM_ST DisplayNumPara;
uint16_t frontnumber;
uint16_t midnumber;
frontnumber = FaultCode_hight;
midnumber = FaultCode_mid;
if(g_u8Display_Mode == ModeDAY)
{
SetPagePicFree(GRAPHICS_PAGE_0, Pic_0876_639_293, 610, 164);//当前故障码的P
SetPagePicFree(GRAPHICS_PAGE_0, Pic_0876_639_293, 610, 229);//历史故障码的P
/*当前故障码前两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 639;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 164;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, frontnumber);
/*当前故障码后两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 667;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 164;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, midnumber);
/*历史故障码前两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 639;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 229;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, frontnumber);
/*历史故障码后两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 667;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 229;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, midnumber);
}
else if(g_u8Display_Mode == ModeNIGHT)
{
SetPagePicFree(GRAPHICS_PAGE_0, Pic_0912_639_293, 610, 164);//当前故障码的P
SetPagePicFree(GRAPHICS_PAGE_0, Pic_0912_639_293, 610, 229);//历史故障码的P
/*当前故障码前两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_night;
DisplayNumPara.x = 639;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 164;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, frontnumber);
/*当前故障码后两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_night;
DisplayNumPara.x = 667;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 164;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, midnumber);
/*历史故障码前两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_night;
DisplayNumPara.x = 639;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 229;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, frontnumber);
/*历史故障码后两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_night;
DisplayNumPara.x = 667;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 229;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, midnumber);
}
}
else if(FaultCodevalid == 0)
if(FaultCodevalid == 1)
{
/*显示P0000*/
if(g_u8Display_Mode == ModeDAY)
{
SetPagePicFree(GRAPHICS_PAGE_0, Pic_0876_639_293, 610, 164);//当前故障码的P
SetPagePicFree(GRAPHICS_PAGE_0, Pic_0876_639_293, 610, 229);//历史故障码的P
DISPLAY_NUM_ST DisplayNumPara;
/*当前故障码前两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 639;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 164;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, 0);
/*当前故障码后两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 667;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 164;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, 0);
/*历史故障码前两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 639;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 229;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, 0);
/*历史故障码后两位显示*/
DisplayNumPara.NumList = NumbeList_FaultCode_day;
DisplayNumPara.x = 667;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = 229;
DisplayNumPara.DecimalNum = 0;
DisplayNumPara.MinDigits = 2;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, 0);
/*当前故障*/
PackedTransfer_LabelsList( 0x6009,(uint8_t *)TextFaultCodeNum, 10);
SetPageText(GRAPHICS_PAGE_0, 0x6009, 610 , 229 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
/*历史故障*/
PackedTransfer_LabelsList( 0x6009,(uint8_t *)TextFaultCodeNum, 10);
SetPageText(GRAPHICS_PAGE_0, 0x6009, 610 , 164 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
else if(g_u8Display_Mode == ModeNIGHT)
{
/*显示P0000(直接贴图方式)*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0900_610_164);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_625_164);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_639_164);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_653_164);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_667_164);
SetPagePic(GRAPHICS_PAGE_0, Pic_0900_610_229);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_625_229);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_639_229);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_653_229);
SetPagePic(GRAPHICS_PAGE_0, Pic_0901_667_229);
}
else
{
;
/*当前故障*/
PackedTransfer_LabelsList( 0x6009,(uint8_t *)TextFaultCodeNum, 10);
SetPageText(GRAPHICS_PAGE_0, 0x6009, 610 , 229 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
/*历史故障*/
PackedTransfer_LabelsList( 0x6009,(uint8_t *)TextFaultCodeNum, 10);
SetPageText(GRAPHICS_PAGE_0, 0x6009, 610 , 164 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
else
{
;
}
}
else if(FaultCodeLost == 0)
{
......@@ -671,7 +539,11 @@ static uint16_t Bluetooth_num_night[] = {
void AMT630H_GUI_Bluetooth_Information( uint8_t Connect_ON)
{
uint8_t Contect_totalnumber;
DISPLAY_NUM_ST DisplayNumPara;
uint16_t connect_personnumber;
connect_personnumber = BlueToothPhoneData.PhoneBookTotalCount;
Contect_totalnumber = 0;
if(g_u8Display_Mode == ModeDAY)
{
if(g_u8Language == CH)
......@@ -762,67 +634,74 @@ void AMT630H_GUI_Bluetooth_Information( uint8_t Connect_ON)
PackedTransfer_LabelsList( 0x5022,(uint8_t *)BlueToothName, 40);
SetPageText(GRAPHICS_PAGE_0, 0x5022, 570 , 165 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
/*遍历同步联系人数组*/
if(PhoneNumberTotal[0] == 0)
{
Contect_totalnumber = 1;
}
else
if(BlueToothPhoneData.BlueToothSignalSate == BlueTooth_Connection)
{
for(int i=0 ; i<20 ; i++ )
/*同步联系人数字显示*/
if(g_u8Display_Mode == ModeDAY)
{
if(PhoneNumberTotal[i] != 0)
if((connect_personnumber >= 0)&&(connect_personnumber < 10))
{
Contect_totalnumber++;
SetPagePic(GRAPHICS_PAGE_0, Pic_0038_590_287); /*【括号】 一位数 */
DisplayNumPara.x = 605;
DisplayNumPara.MinDigits = 1;
}
else if((connect_personnumber >= 10)&&(connect_personnumber < 100))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0039_583_287); /*【括号】 两位数 */
DisplayNumPara.x = 612;
DisplayNumPara.MinDigits = 2;
}
else
{
break;
;
}
// else if(Contect_totalnumber == 3)
// {
// SetPagePic(GRAPHICS_PAGE_0, ); /*【括号】 三位数 */
//
// }
DisplayNumPara.NumList = Bluetooth_num_day;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS;
DisplayNumPara.DecimalNum = 0;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, connect_personnumber);
}
}
/*同步联系人数字显示(字库版)*/
if(g_u8Display_Mode == ModeDAY)
{
if(Contect_totalnumber == 1)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0038_590_287); /*【括号】 一位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 605 , 289 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
else if(Contect_totalnumber == 2)
else if(g_u8Display_Mode == ModeNIGHT)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0039_583_287); /*【括号】 两位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 590 , 285 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
if((connect_personnumber >= 0)&&(connect_personnumber < 10))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0223_590_287); /*【括号】 一位数 */
DisplayNumPara.x = 605;
DisplayNumPara.MinDigits = 1;
}
else if((connect_personnumber >= 10)&&(connect_personnumber < 100))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0224_583_287); /*【括号】 两位数 */
DisplayNumPara.x = 612;
DisplayNumPara.MinDigits = 2;
}
else
{
;
}
// else if(Contect_totalnumber == 3)
// {
// SetPagePic(GRAPHICS_PAGE_0, ); /*【括号】 三位数 */ /* 同步联系人最大位数未确定*/
//
// }
DisplayNumPara.NumList = Bluetooth_num_night;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS;
DisplayNumPara.DecimalNum = 0;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, connect_personnumber);
}
// else if(Contect_totalnumber == 3)
// {
// SetPagePic(GRAPHICS_PAGE_0, ); /*【括号】 三位数 */
// PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumberTotal, 40);
// SetPageText(GRAPHICS_PAGE_0, 0x4022, 570 , 165 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
// }
}
else if(g_u8Display_Mode == ModeNIGHT)
else/*蓝牙未连接或蓝牙关闭时 同步联系人显示0*/
{
if(Contect_totalnumber == 1)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0223_590_287); /*【括号】 一位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 605 , 289 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
else if(Contect_totalnumber == 2)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0224_583_287); /*【括号】 两位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 590 , 285 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
// else if(Contect_totalnumber == 3)
// {
// SetPagePic(GRAPHICS_PAGE_0, ); /*【括号】 三位数 */
// PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumberTotal, 40);
// SetPageText(GRAPHICS_PAGE_0, 0x4022, 570 , 165 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
// }
SetPagePic(GRAPHICS_PAGE_0, Pic_0223_590_287);
SetPagePic(GRAPHICS_PAGE_0, Pic_0225_605_289);
}
}
......@@ -1729,14 +1608,14 @@ void AMT630H_GUI_Display_Mode_Setting(Menu_Item_en_t display_mode) /*图 显示
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO) == 1)
{
g_u8Display_Mode_select = ModeATUO;
if(LightR_Status == 0)
{
g_u8Display_Mode = ModeNIGHT;
}
else if(LightR_Status == 1)
{
g_u8Display_Mode = ModeDAY;
}
// if(LightR_Status == 0)
// {
// g_u8Display_Mode = ModeNIGHT;
// }
// else if(LightR_Status == 1)
// {
// g_u8Display_Mode = ModeDAY;
// }
}
else
{
......@@ -1887,23 +1766,23 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
g_u8Backlight_select = Backlight_ATUO ;
if(Backlight_SetPwmLevel() == 5)
if(Backlight_GetPwmLevel() == 5)
{
g_u8Backlight = Backlight_5;
}
else if(Backlight_SetPwmLevel() == 4)
else if(Backlight_GetPwmLevel() == 4)
{
g_u8Backlight = Backlight_4;
}
else if(Backlight_SetPwmLevel() == 3)
else if(Backlight_GetPwmLevel() == 3)
{
g_u8Backlight = Backlight_3;
}
else if(Backlight_SetPwmLevel() == 2)
else if(Backlight_GetPwmLevel() == 2)
{
g_u8Backlight = Backlight_2;
}
else if(Backlight_SetPwmLevel() == 1)
else if(Backlight_GetPwmLevel() == 1)
{
g_u8Backlight = Backlight_1;
}
......@@ -2048,23 +1927,23 @@ void AMT630H_GUI_Backlight_Setting(Menu_Item_en_t back_mode) /*图 背光*/
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
g_u8Backlight_select = Backlight_ATUO ;
if(Backlight_SetPwmLevel() == 5)
if(Backlight_GetPwmLevel() == 5)
{
g_u8Backlight = Backlight_5;
}
else if(Backlight_SetPwmLevel() == 4)
else if(Backlight_GetPwmLevel() == 4)
{
g_u8Backlight = Backlight_4;
}
else if(Backlight_SetPwmLevel() == 3)
else if(Backlight_GetPwmLevel() == 3)
{
g_u8Backlight = Backlight_3;
}
else if(Backlight_SetPwmLevel() == 2)
else if(Backlight_GetPwmLevel() == 2)
{
g_u8Backlight = Backlight_2;
}
else if(Backlight_SetPwmLevel() == 1)
else if(Backlight_GetPwmLevel() == 1)
{
g_u8Backlight = Backlight_1;
}
......@@ -2113,6 +1992,9 @@ static uint16_t Bluetooth_Connect_num_night[] = {
*/
void AMT630H_GUI_Bluetooth_Connect_Setting(Menu_Item_en_t select, uint8_t Connect_ON)
{
DISPLAY_NUM_ST DisplayNumPara;
uint16_t connect_personnumber;
connect_personnumber = BlueToothPhoneData.PhoneBookTotalCount;
uint8_t Contect_totalnumber;
Contect_totalnumber = 0;
if(g_u8Display_Mode == ModeDAY)
......@@ -2263,67 +2145,64 @@ void AMT630H_GUI_Bluetooth_Connect_Setting(Menu_Item_en_t select, uint8_t Connec
PackedTransfer_LabelsList( 0x5022,(uint8_t *)BlueToothName, 40);
SetPageText(GRAPHICS_PAGE_0, 0x5022, 570 , 165 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
/*遍历同步联系人数组*/
if(PhoneNumberTotal[0] == 0)
{
Contect_totalnumber = 1;
}
else
{
for(int i=0 ; i<20 ; i++ )
{
if(PhoneNumberTotal[i] != 0)
{
Contect_totalnumber++;
}
else
{
break;
}
}
}
/*同步联系人数字显示(字库版)*/
/*同步联系人数字显示*/
if(g_u8Display_Mode == ModeDAY)
{
if(Contect_totalnumber == 1)
if((connect_personnumber >= 0)&&(connect_personnumber < 10))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0038_590_287); /*【括号】 一位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 605 , 289 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
DisplayNumPara.x = 605;
DisplayNumPara.MinDigits = 1;
}
else if(Contect_totalnumber == 2)
else if((connect_personnumber >= 10)&&(connect_personnumber < 100))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0039_583_287); /*【括号】 两位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 590 , 285 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
DisplayNumPara.x = 612;
DisplayNumPara.MinDigits = 2;
}
// else if(Contect_totalnumber == 3)
// {
// SetPagePic(GRAPHICS_PAGE_0, ); /*【括号】 三位数 */
// PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumberTotal, 40);
// SetPageText(GRAPHICS_PAGE_0, 0x4022, 570 , 165 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
//
// }
DisplayNumPara.NumList = Bluetooth_num_day;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS;
DisplayNumPara.DecimalNum = 0;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, connect_personnumber);
}
else if(g_u8Display_Mode == ModeNIGHT)
{
if(Contect_totalnumber == 1)
if((connect_personnumber >= 0)&&(connect_personnumber < 10))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0223_590_287); /*【括号】 一位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 605 , 289 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
DisplayNumPara.x = 605;
DisplayNumPara.MinDigits = 1;
}
else if(Contect_totalnumber == 2)
else if((connect_personnumber >= 10)&&(connect_personnumber < 100))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0224_583_287); /*【括号】 两位数 */
PackedTransfer_LabelsList( 0x7000,(uint8_t *)PhoneNumberTotal, 20);
SetPageText(GRAPHICS_PAGE_0, 0x7000, 590 , 285 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
DisplayNumPara.x = 612;
DisplayNumPara.MinDigits = 2;
}
else
{
;
}
// else if(Contect_totalnumber == 3)
// {
// SetPagePic(GRAPHICS_PAGE_0, ); /*【括号】 三位数 */
// PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumberTotal, 40);
// SetPageText(GRAPHICS_PAGE_0, 0x4022, 570 , 165 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
//
// }
DisplayNumPara.NumList = Bluetooth_num_night;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 14;
DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS;
DisplayNumPara.DecimalNum = 0;
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, connect_personnumber);
}
}
......@@ -2852,7 +2731,7 @@ static const uint16_t NumbeList_PhoneConnect_ESpeed[] ={
Pic_0394_64_554,
};
static const uint16_t PICList_Fuel[] = {
Pic_0562_315_473,
Pic_0554_315_473,
Pic_0555_366_473,
Pic_0556_426_473,
Pic_0557_469_473,
......@@ -2862,7 +2741,7 @@ static const uint16_t PICList_Fuel[] = {
Pic_0561_623_473,
};
static const uint16_t PICList_PhoneConnect_Fuel[] = {
Pic_0414_76_536,
Pic_0415_76_536,
Pic_0416_105_536,
Pic_0417_134_536,
Pic_0418_163_536,
......@@ -3019,6 +2898,14 @@ static void AMT630H_GUI_PhoneConnect_Light()
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0468_819_486);
}
if(Get_TelltalesLedSts(em_LED_Coolant_Temperature))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0436_981_528);
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0435_981_528);
}
}
/*
*NAME : AMT630H_GUI_TIME()
......@@ -3144,8 +3031,8 @@ static void AMT630H_GUI_Telephone()
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 54, 499, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 54, 463, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
else if(g_u8Display_Mode == ModeNIGHT)
......@@ -3157,8 +3044,8 @@ static void AMT630H_GUI_Telephone()
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 54, 499, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 54, 463, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
......@@ -3175,8 +3062,8 @@ static void AMT630H_GUI_Telephone()
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 54, 499, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 54, 463, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
else if(g_u8Display_Mode == ModeNIGHT)
......@@ -3188,8 +3075,8 @@ static void AMT630H_GUI_Telephone()
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 54, 499, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 54, 463, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
......@@ -3206,8 +3093,8 @@ static void AMT630H_GUI_Telephone()
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 54, 499, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 54, 463, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
else if(g_u8Display_Mode == ModeNIGHT)
......@@ -3219,8 +3106,8 @@ static void AMT630H_GUI_Telephone()
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 54, 499, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 54, 463, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
}
......@@ -3247,28 +3134,43 @@ static void AMT630H_GUI_PhoneConnect_Telephone()
{ if(BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0451_751_555);
if(TextPara[TEXT_NUM_BLUETOOTH_PHONENAME].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4022,(uint8_t *)CurBlueToothPhoneName, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
else if(BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking)
{
//SetPagePic(GRAPHICS_PAGE_0, Pic_0943_751_555);
SetPagePic(GRAPHICS_PAGE_0, Pic_0943_751_555);
if(TextPara[TEXT_NUM_BLUETOOTH_PHONENAME].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4022,(uint8_t *)CurBlueToothPhoneName, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
else if(BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0450_751_555);
if(TextPara[TEXT_NUM_BLUETOOTH_PHONENAME].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4022,(uint8_t *)CurBlueToothPhoneName, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
if(TextPara[TEXT_NUM_PHONE_NUMBER].Vaild == 0X01)
{
PackedTransfer_LabelsList( 0x4009,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4009, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
PackedTransfer_LabelsList( 0x4022,(uint8_t *)PhoneNumber, 40);
SetPageText(GRAPHICS_PAGE_0, 0x4022, 786, 561, 200, ALIGN_LEFT, 0, TEXT_COLOR(0,0,0,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
}
......@@ -3277,6 +3179,30 @@ static void AMT630H_GUI_PhoneConnect_Telephone()
;
}
}
/*
*NAME : AMT630H_GUI_Fuel
*FUNCTION : 燃油显示函数
*PARAMETER : uint8_t Fuel- 燃油格数
*RETURN : NULL
*/
static void AMT630H_GUI_PhoneConnect_UPtele()
{
if(BlueToothPhoneData.BlueToothSignalSate == BlueTooth_Connection)
{ if((BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing)||(BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking)||(BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0519_648_5);
SetPagePic(GRAPHICS_PAGE_0, Pic_0520_760_50);
}
else
{
;
}
}
else
{
;
}
}
/*
*NAME : AMT630H_GUI_Fuel
......@@ -3296,7 +3222,7 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
FuelLevel = Fuel;
if(Fuel == 0)
{
FuelLevel = 1;
FuelLevel = 1; /*格数统一*/
}
else
{
......@@ -3366,6 +3292,11 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
}
}
else
{
;
}
/*燃油格数走格*/
if (FuelLevel > 0)
{
......@@ -3402,6 +3333,14 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel)
{
;
}
if (g_u16_GUI_PerFuelLevel == 1)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0562_315_473);
}
else
{
;
}
}
uint16_t g_u16PerFuel_SelfCheck = 1;
......@@ -3508,7 +3447,7 @@ static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel)
s_FuelLowTime++;
if (s_FuelLowTime <= 15)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0552_503_529); /*黄色燃油灯*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0423_26_529); /*黄色燃油灯*/
}
if (s_FuelLowTime > 20)
{
......@@ -3517,10 +3456,11 @@ static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel)
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0551_503_529); /*黑色燃油灯*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0424_26_529); /*黑色燃油灯*/
s_FuelLowTime = 0;
}
/*燃油格数走格*/
if (FuelLevel > 0)
{
......@@ -3555,7 +3495,15 @@ static void AMT630H_GUI_PhoneConnect_Fuel(uint8_t Fuel)
}
else
{
//SetPagePic(GRAPHICS_PAGE_0, Pic_0414_76_536); /*燃油红区*/
;
}
if(g_u16_GUI_PerFuelLevel == 1) /*当变化到1格时 显示为红区*/
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0414_76_536);
}
else
{
;
}
}
......@@ -4140,7 +4088,7 @@ static void AMT630H_GUI_VSpeed(uint16_t VSpeed)
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, VSpeedNumber);
}
else if ((10 <= VSpeedNumber))
else if ((10 <= VSpeedNumber) && ( VSpeedNumber < 100))
{
DisplayNumPara.x = 515;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 118;
......@@ -4150,7 +4098,7 @@ static void AMT630H_GUI_VSpeed(uint16_t VSpeed)
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, VSpeedNumber);
}
else if (0 <= VSpeedNumber)
else if ((0 <= VSpeedNumber) && ( VSpeedNumber < 10))
{
if (VSpeedNumber == 1)
{
......@@ -4278,7 +4226,7 @@ static void AMT630H_GUI_PhoneConnect_VSpeed(uint16_t VSpeed)
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, VSpeedNumber);
}
else if ((10 <= VSpeedNumber))
else if ((10 <= VSpeedNumber) && (VSpeedNumber < 100))
{
DisplayNumPara.x = 514;
DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 60;
......@@ -4288,7 +4236,7 @@ static void AMT630H_GUI_PhoneConnect_VSpeed(uint16_t VSpeed)
DisplayNum(GRAPHICS_PAGE_0, &DisplayNumPara, VSpeedNumber);
}
else if (0 <= VSpeedNumber)
else if ((0 <= VSpeedNumber) && ( VSpeedNumber < 10))
{
if (VSpeedNumber == 1)
{
......@@ -4937,11 +4885,22 @@ void AMT630H_GUI_ReadPosittion_Display(void)
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0941_0_470); /*下半屏*/
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
AMT630H_GUI_PhoneConnect_UPtele();
}
SetPagePic(GRAPHICS_PAGE_0, Pic_0479_242_313);
// SetPagePic(GRAPHICS_PAGE_0, Pic_0382_0_0);/*背景图*/
AMT630H_GUI_PhoneConnect_Light();
AMT630H_GUI_PhoneConnect_TIME(Get_Dis_Hour_Time(), Get_Dis_Minute_Time());
if(VechileSpeed_time < 4)
{
// VechileSpeed_time++;
}
else
{
VechileSpeed_time = 0;
VechileSpeed = Get_DispVechileSpeed() / 10;
}
AMT630H_GUI_PhoneConnect_VSpeed(VechileSpeed);
AMT630H_GUI_PhoneConnect_ESpeed(Get_DispEngineSpeed());
AMT630H_GUI_PhoneConnect_Fuel(Get_CurFuelSetp());
......
#ifndef PICBIN_H
#define PICBIN_H
/* Flash Bin Version:20240915 2024-09-15 09:22:36 Compression ratio:70.00% */
/* Flash Bin Version:20240924 2024-09-24 11:37:38 Compression ratio:70.00% */
#define Pic_0001 1
#define Pic_0002 2
#define Pic_0003 3
......@@ -2135,6 +2135,7 @@ enum {
Pic_0943_751_555,
};
#define PIC_INDEX_DATA_CRC 0x8509F1BE
extern void User_PicIndexDataInit(void);
......
......@@ -32,7 +32,7 @@ void Key_Operation_Left(Key_Event_en_t enKeyEvent)//选择
break;
case KEY_EVENT_LONG_PRESS_4: //10s
/* 进入630H升级MCU模式 */
Get_Into_630H_Update_MCU_Mode();
// Get_Into_630H_Update_MCU_Mode();
break;
case KEY_EVENT_OFF_TO_ON:
break;
......
......@@ -55,11 +55,9 @@ static void Power_KL30_Init(void)
Key_KL30_Init_EXample();
Data_User_Mileage_KL30Init();
Fuel_KL30_Init();
Backlight_KL30_Wakeup_Init();
BackLight_30_Init();
Amt630hInit();
Telltales_Init();
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
g_stRTCInformation.u8RTCSecond = 0;
g_stRTCInformation.u8RTCMinute = 0;
g_stRTCInformation.u8RTCHour = 0;
......@@ -71,7 +69,7 @@ static void Power_KL30_Init(void)
UDS_Startup_Init();
Can_Init();
Protocol_KL30_Wakeup_Init();
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 500);
RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising);
FaultCode_Init();
}
......@@ -92,7 +90,7 @@ static void Power_Wakeup_Init(void)
Key_Wakeup_Init_EXample();
Line_In_KL15_ON_Init();
Fuel_KL30_Init();
Backlight_KL30_Wakeup_Init();
BackLight_WakeUp_Init();
RTE_UART_Sleep_Init(UART_CH2);
loc_config.u32UARTChEn = 1U;
loc_config.u32UARTbps = 115200U;
......@@ -101,8 +99,6 @@ static void Power_Wakeup_Init(void)
UART_DeInit(UART2);
RTE_UART_Init(UART_CH2, &loc_config); /* 配置串口,630H上电发送0x0D,但是底板没回复 */
Amt630hInit();
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 64000000);
TimerM_PWM_CH_Output_init(TIMERM_COUNTER1, TIMERM_CHB, ActiveLevel_High);
Telltales_Init();
Key_KL30_Init_EXample();
Menu_User_WAKEUP();
......@@ -124,7 +120,7 @@ static void Power_OVP_Init(void)
static void Power_IG_OFF_Init(void)
{
Line_In_KL15_OFF_Init();
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
BackLight_15_Init();
}
static void Power_IG_ON_Init(void)
......@@ -144,6 +140,7 @@ static void Power_IG_ON_Init(void)
static void Power_Sleep_Init(void)
{
TimerM_PWM_counter_Output_Init(TIMERM_COUNTER1, 20000, 0);
Can_Tx_Apply_Buff();
rte_can_deinit(CAN_CH_0);
TMM0_Stop();
TMM1_Stop();
......@@ -187,7 +184,7 @@ static Power_Status_em Power_Stay_OFF(void)
}
else
{
if ((Common_GetIgnOffTime() < 20000))
if ((Common_GetIgnOffTime() < 3000))
{
u8PowerSts = EM_IGN_OFF;
}
......
......@@ -35,8 +35,8 @@ static const monitorlib_uint16_t SysFun_Range [ 26u ] = {
u16ENTER_HIGH_N_RANGE,
u16Top_Vol,
500,
50u,
500, /*进入异常电压时间1s*/
50u, /*KL15消抖时间 100ms*/
u16Base_Vol,
u16ENTER_LOW_N_RANGE,
......
......@@ -384,7 +384,7 @@ typedef struct
#define CAN_CCTRL_OPMODE_IDLE ((uint16_t)0x0007U)
#define CAN_CCTRL_OPMODE_NORMAL ((uint16_t)0x0106U)//0x0100U
#define CAN_CCTRL_OPMODE_NORMAL_ABT ((uint16_t)0x0205U)//0x0200U
#define CAN_CCTRL_OPMODE_NORMAL_ABT ((uint16_t)0x0205U)//0x0200U
#define CAN_CCTRL_OPMODE_ONLY_RX ((uint16_t)0x0304U)//0x0300U
#define CAN_CCTRL_OPMODE_SHOT ((uint16_t)0x0403U)//0x0400U
#define CAN_CCTRL_OPMODE_TEST ((uint16_t)0x0502U)//0x0500U
......
......@@ -2,7 +2,7 @@
******************************************************************************
* @file can.c
* @author MCD Application Team
* @version V1.0.2
* @version V1.0.1
* @date 2-April-2024
* @brief This file provides firmware functions to manage the following
* functionalities of the Controller area network (CAN) peripheral:
......
......@@ -3,10 +3,9 @@
#include "isr.h"
#include "rte_can.h"
CANBuffList_t CanBufList = {0};
CANMSG_Type* CANMSG;
CanTxRxMsg CAN_RecvMsg;
CANBuffList_t CanBufList = {0};
can_rx_callback can_rx_handler = NULL;
uint8_t Read_RingBuff(CanTxRxMsg *data)
......@@ -20,29 +19,34 @@ uint8_t Read_RingBuff(CanTxRxMsg *data)
CanBufList.length--;
return 1;
}
/**
* @brief CAN就收完成回调
*
* @param msg
*/
static void can_recv_handler(void *msg)
static void can_recv_handler(void)
{
INTC_ClearPendingIRQ(CAN0REC_IRQn);
if (CAN_GetFlagStatus(CAN0, CAN_FLAG_REC) != RESET)
{
CAN_ClearFlag(CAN0, CAN_FLAG_REC);
CAN_Receive_IT(CAN0, &CanBufList);
Read_RingBuff(&CAN_RecvMsg);
CAN_Receive(CAN0,&CAN_RecvMsg,100);
if (can_rx_handler != NULL)
{
can_rx_handler(&CAN_RecvMsg);
}
}
}
static void can_error_handler(void)
{
INTC_ClearPendingIRQ(CAN0ERR_IRQn);
CANErr_Recover(CAN0);
}
/**
* @brief CAN初始�?
*
......@@ -97,11 +101,13 @@ uint8_t rte_can_init(can_config_st_t *config)
CAN_OperatingModeRequest(CAN0, CAN_OpMode_Normal);
CAN_ITConfig(CAN0, CAN_IT_REC, ENABLE);
CAN_ITConfig(CAN0, CAN_IT_REC | CAN_IT_ERR_STATE | CAN_IT_ERR_PROTO, ENABLE); // |CAN_IT_TRX
ISR_Register(CAN0REC_IRQn, can_recv_handler);
INTC_EnableIRQ(CAN0REC_IRQn);
// ISR_Register(CAN0TRX_IRQn, can_tx_handler);
ISR_Register(CAN0ERR_IRQn, can_error_handler);
// ISR_DisRegister(CAN0REC_IRQn, can_recv_handler);
......
......@@ -31,7 +31,7 @@ typedef enum
} CAN_CH;
#pragma pack(4)
typedef struct
typedef struct __attribute__((aligned(4)))
{
CAN_CH ch;
CAN_freq freq;
......
......@@ -42,6 +42,7 @@ void Sys_10ms_Tasks(void)
Fuel_R_Cal(10u);
Coolant_R_Cal(10u);
Data_Light_Res_service(10);
BackLight_Process();
}
void Sys_20ms_Tasks(void)
......@@ -52,7 +53,6 @@ void Sys_20ms_Tasks(void)
void Sys_50ms_Tasks(void)
{
BackLight_Service();
Telltales_Management();
UDS_Read_Preconditions();
g_u8Cursor_Posittion = Menu_Get_Current_Cursor_Information();
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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