diff --git a/Firmware/Project/Cmsemicon/BAT32A279/MDK_ARM/HaoJin750TFT.uvprojx b/Firmware/Project/Cmsemicon/BAT32A279/MDK_ARM/HaoJin750TFT.uvprojx index da5b4b72a8a08d34de0ebc1780bba3868f10f064..aae8238ffa09e3755ef2461a2be6ad228ff6d9f6 100644 --- a/Firmware/Project/Cmsemicon/BAT32A279/MDK_ARM/HaoJin750TFT.uvprojx +++ b/Firmware/Project/Cmsemicon/BAT32A279/MDK_ARM/HaoJin750TFT.uvprojx @@ -718,6 +718,16 @@ <FileType>1</FileType> <FilePath>..\..\..\..\Source\Application\Can_User.c</FilePath> </File> + <File> + <FileName>FaultCode.c</FileName> + <FileType>1</FileType> + <FilePath>..\..\..\..\Source\Application\FaultCode.c</FilePath> + </File> + <File> + <FileName>FaultCode.h</FileName> + <FileType>5</FileType> + <FilePath>..\..\..\..\Source\Application\FaultCode.h</FilePath> + </File> </Files> </Group> <Group> diff --git a/Firmware/Source/Application/FaultCode.c b/Firmware/Source/Application/FaultCode.c new file mode 100644 index 0000000000000000000000000000000000000000..a898650c29e82bb6465d34154930df2af5f7a3ec --- /dev/null +++ b/Firmware/Source/Application/FaultCode.c @@ -0,0 +1,397 @@ + +#include "FaultCode.h" +static _st_Init FaultCodeInit; +static uint16_t u16FaultCodeDtcCount = 0; +static uint16_t u16FaultCodeDtcCountBack = 0; +static uint16_t u16FaultCodeDtcCounttemp = 0; +static _st_FaultCode stFaultCode[MaxFaultCode] = {0}; +static _st_FaultCode stFaultCodeBack[MaxFaultCode] = {0}; +static _st_FaultCode stFaultCodetemp[MaxFaultCode] = {0}; +static uint8_t u8FaultCodeValid = 0; +uint32_t Get_FaultCodeDtc1(void) +{ + uint32_t u16FaultCode = 0x0000; + uint8_t DTCH1 = 0; + uint8_t DTCM1 = 0; + + uint32_t DTC1 = 0; + + DTCH1 = Get_CAN_CH0_ID_402_Sig_ECU_DTCH1(); + DTCM1 = Get_CAN_CH0_ID_402_Sig_ECU_DTCM1(); + + if(DTCH1 > 0) + { + DTC1 |= (DTCH1 & 0xFF); + } + else + { + ; + } + DTC1 <<= 8; + if(DTCM1 > 0) + { + DTC1 |= (DTCM1 & 0xFF); + } + else + { + ; + } + + // if (((DTCH1 & 0xF0) >> 4) >= 0xA) + // { + // DTC1 |= ((DTCH1 & 0xF0) >> 4); + // } + // else + // { + // DTC1 |= (DTCH1 & 0xF0) >> 4; + // } + // DTC1 <<= 8; + // if ((DTCH1 & 0xF) >= 0xA) + // { + // DTC1 |= (DTCH1 & 0xF); + // } + // else + // { + // DTC1 |= DTCH1 & 0xF; + // } + // DTC1 <<= 8; + + // if (((DTCM1 & 0xF0) >> 4) >= 0xA) + // { + // DTC1 |= ((DTCM1 & 0xF0) >> 4) + 3; + // } + // else + // { + // DTC1 |= (DTCM1 & 0xF0) >> 4; + // } + // DTC1 <<= 8; + // if ((DTCM1 & 0xF) >= 0xA) + // { + // DTC1 |= (DTCM1 & 0xF) ; + // } + // else + // { + // DTC1 |= DTCM1 & 0xF; + // } + + if (DTC1 == 0) + { + return 0XFFFF; + } + + u16FaultCode = DTC1; + + return u16FaultCode; +} + +uint32_t Get_FaultCodeDtc2(void) +{ + uint32_t u16FaultCode = 0x0000; + uint8_t DTCH2 = 0; + uint8_t DTCM2 = 0; + uint32_t DTC2 = 0; + + DTCH2 = Get_CAN_CH0_ID_402_Sig_ECU_DTCH2(); + DTCM2 = Get_CAN_CH0_ID_402_Sig_ECU_DTCM2(); + if(DTCH2 > 0) + { + DTC2 |= (DTCH2 & 0xFF); + } + else + { + ; + } + DTC2 <<= 8; + if(DTCM2 > 0) + { + DTC2 |= (DTCM2 & 0xFF); + } + else + { + ; + } + // if (((DTCH2 & 0xF0) >> 4) >= 0xA) + // { + // DTC2 |= ((DTCH2 & 0xF0) >> 4) + 3; + // } + // else + // { + // DTC2 |= (DTCH2 & 0xF0) >> 4; + // } + // DTC2 <<= 8; + // if ((DTCH2 & 0xF) >= 0xA) + // { + // DTC2 |= (DTCH2 & 0xF) + 3; + // } + // else + // { + // DTC2 |= DTCH2 & 0xF; + // } + // DTC2 <<= 8; + + // if (((DTCM2 & 0xF0) >> 4) >= 0xA) + // { + // DTC2 |= ((DTCM2 & 0xF0) >> 4) + 3; + // } + // else + // { + // DTC2 |= (DTCM2 & 0xF0) >> 4; + // } + // DTC2 <<= 8; + // if ((DTCM2 & 0xF) >= 0xA) + // { + // DTC2 |= (DTCM2 & 0xF) + 3; + // } + // else + // { + // DTC2 |= DTCM2 & 0xF; + // } + + if (DTC2 == 0) + { + return 0XFFFF; + } + + u16FaultCode = DTC2; + + return u16FaultCode; +} + +uint16_t Get_FaultCodeNum(void) +{ + uint16_t u16FaultCode = 0x0000; + + u16FaultCode = Get_CAN_CH0_ID_402_Sig_ECU_DTC1Amnt(); + return u16FaultCode; +} + +uint16_t Get_FaultCodeValid(void) +{ + return 1; +} + +/** + * @brief æ•…éšœç åˆå§‹åŒ–函数 + */ +void FaultCode_Init(void) +{ + uint16_t i = 0; + for (i = 0; i < MaxFaultCode; i++) + { + stFaultCode[i].u16FaultCode = 0; + stFaultCode[i].u16FaultCodeCount = 0; + stFaultCodeBack[i].u16FaultCode = 0; + stFaultCodeBack[i].u16FaultCodeCount = 0; + stFaultCodetemp[i].u16FaultCode = 0; + stFaultCodetemp[i].u16FaultCodeCount = 0; + } + + FaultCodeInit.callbacks[DTC1] = Get_FaultCodeDtc1; + FaultCodeInit.callbacks[DTC2] = Get_FaultCodeDtc2; + FaultCodeInit.callbacks[DTC3] = NULL; + FaultCodeInit.FaultCodeVaildCbk = Get_FaultCodeValid; + FaultCodeInit.FaultCodeNumCbk = Get_FaultCodeNum; + + u16FaultCodeDtcCountBack = 0; + u8FaultCodeValid = 0; +} + +/** + * @brief æŸ¥è¯¢å½“å‰æ•…éšœç æ˜¯å¦å˜åœ¨ + * @param u32FaultCode æ•…éšœç + * @param FaultCodeGrpup æ•…éšœç 组 + * @param len æ•…éšœç 组长度 + * @return 0:å˜åœ¨ 1:ä¸å˜åœ¨ 2:æ— æ•ˆæ•…éšœç ä¸å˜å‚¨ + */ +uint8_t FaultCode_Check(const uint32_t u32FaultCode, const _st_FaultCode *FaultCodeGrpup, const uint16_t len) +{ + uint16_t i = 0; + uint8_t Result = 1; + + if ((u32FaultCode == 0XFFFF) || (u32FaultCode == 0)) + { + return 2; + } + + if (len == 1) + { + return 1; + } + + for (i = 0; i < len; i++) + { + if (u32FaultCode == FaultCodeGrpup[i].u16FaultCode) + { + Result = 0; + return Result; + } + } + + return Result; +} + +/** + * æ·»åŠ æ–°çš„æ•…éšœç åˆ°æ•…éšœç æ•°ç»„ä¸ã€‚ + * @param faultCodes æŒ‡å‘æ•…éšœç æ•°ç»„的指针。 + * @param count 指å‘当å‰å·²æ·»åŠ æ•…éšœç æ•°é‡çš„æŒ‡é’ˆã€‚ + * @param faultCode è¦æ·»åŠ çš„æ•…éšœç 。 + * @param len å®žé™…æ•…éšœç æ•°é‡ï¼Œç”¨äºŽæ£€æµ‹æ•°ç»„䏿˜¯å¦å˜åœ¨å½“剿•…éšœç + * @note å¦‚æžœæ•…éšœç æ•°ç»„已满或者新的故障ç å·²å˜åœ¨ï¼Œåˆ™ä¸æ·»åŠ ã€‚ + */ +void AddNewFaultCode(_st_FaultCode *faultCodes, uint16_t *count, uint32_t faultCode, uint16_t len) +{ + if (*count >= MaxFaultCode || FaultCode_Check(faultCode, faultCodes, len) != 1) + { + return; // 数组已满或故障ç å·²å˜åœ¨ï¼Œä¸è¿›è¡Œæ·»åŠ + } + faultCodes[*count].u16FaultCode = faultCode; + (*count)++; +} + +/** + * @brief æ•…éšœç æœåŠ¡å‡½æ•° + * @param Cycle 建议10ms调用 é˜²æ¢æ•…éšœç æ•°é‡è¿‡å¤š 接收缓慢 + */ +void FaultCode_Service(uint16_t Cycle) +{ + uint32_t Dtc1 = 0XFFFF; + uint32_t Dtc2 = 0XFFFF; + uint32_t Dtc3 = 0XFFFF; + uint16_t FaultCodeSum = 0; + uint16_t i = 0; + uint32_t tempFaultCode = 0; + uint16_t Vaild = 0; + + if (FaultCodeInit.callbacks[DTC1] != NULL) + { + Dtc1 = FaultCodeInit.callbacks[DTC1](); + } + + if (FaultCodeInit.callbacks[DTC2] != NULL) + { + Dtc2 = FaultCodeInit.callbacks[DTC2](); + } + + if (FaultCodeInit.callbacks[DTC3] != NULL) + { + Dtc3 = FaultCodeInit.callbacks[DTC3](); + } + + if (FaultCodeInit.FaultCodeVaildCbk != NULL) + { + Vaild = FaultCodeInit.FaultCodeVaildCbk(); + } + + if (FaultCodeInit.FaultCodeNumCbk != NULL) + { + FaultCodeSum = FaultCodeInit.FaultCodeNumCbk(); + } + + if (FaultCodeSum > MaxFaultCode) + { + FaultCodeSum = MaxFaultCode; + } + + if ((Vaild) && (FaultCodeSum > 0)) + { + if (u16FaultCodeDtcCountBack < FaultCodeSum) /* 当å‰å˜å‚¨æ•…éšœç æ˜¯å¦å°äºŽå®žé™…æ•…éšœç æ•°é‡ */ + { + /* å˜å‚¨æ•…éšœç å¹¶æ£€æŸ¥æ•°ç»„ä¸æ˜¯å¦å˜åœ¨ */ + AddNewFaultCode(stFaultCodeBack, &u16FaultCodeDtcCountBack, Dtc1, FaultCodeSum); + AddNewFaultCode(stFaultCodeBack, &u16FaultCodeDtcCountBack, Dtc2, FaultCodeSum); + } + + /* 接收故障ç 大于0åŽè¿›è¡Œæ˜¾ç¤º */ + if (u16FaultCodeDtcCountBack > 0) + { + /* 当å‰å˜å‚¨æ•…éšœç ç‰äºŽå®žé™…æ•…éšœç æ•°é‡ 用于实时更新故障ç */ + if (u16FaultCodeDtcCountBack == FaultCodeSum) + { + u16FaultCodeDtcCountBack = 0; + } + /* æ›´æ–°æ•…éšœç æ˜¾ç¤º */ + for (i = 0; i < FaultCodeSum; i++) + { + if (stFaultCodetemp[i].u16FaultCode != stFaultCodeBack[i].u16FaultCode) + { + stFaultCodetemp[i].u16FaultCode = stFaultCodeBack[i].u16FaultCode; + stFaultCode[i].u16FaultCode = stFaultCodetemp[i].u16FaultCode; + } + } + u8FaultCodeValid = 1; + + /* å¤§äºŽæ•…éšœç æ•°é‡çš„æ•°ç»„进行清0å¤„ç† */ + for (i = FaultCodeSum; i < MaxFaultCode; i++) + { + stFaultCode[i].u16FaultCode = 0; + stFaultCodetemp[i].u16FaultCode = 0; + stFaultCodeBack[i].u16FaultCode = 0; + } + } + + if (stFaultCode[0].u16FaultCode != 0XFFFF) + { + /* æ•…éšœç 计时 */ + if (stFaultCode[0].u16FaultCodeCount < FaultCodeCount) + { + stFaultCode[0].u16FaultCodeCount += Cycle; + } + else + { + /* è®¡æ—¶ç»“æŸ æ›´æ–°ä½ç½® */ + stFaultCode[0].u16FaultCodeCount = 0; + tempFaultCode = stFaultCode[0].u16FaultCode; + + if (FaultCodeSum > 1) + { + for (i = 0; i < FaultCodeSum - 1; i++) + { + stFaultCode[i].u16FaultCode = stFaultCode[i + 1].u16FaultCode; + } + stFaultCode[FaultCodeSum - 1].u16FaultCode = tempFaultCode; + } + } + } + } + else + { + u8FaultCodeValid = 0; + for (i = 0; i < MaxFaultCode; i++) + { + stFaultCode[i].u16FaultCode = 0; + stFaultCode[i].u16FaultCodeCount = 0; + stFaultCodeBack[i].u16FaultCode = 0; + stFaultCodeBack[i].u16FaultCodeCount = 0; + stFaultCodetemp[i].u16FaultCode = 0; + stFaultCodetemp[i].u16FaultCodeCount = 0; + } + u16FaultCodeDtcCountBack = 0; + } +} + +/** + * @brief 获å–当剿•…éšœç + */ +uint32_t Get_Current_FaultCode(void) +{ + return stFaultCode[0].u16FaultCode; +} + +uint8_t Get_Current_Hight_FaultCode(void) +{ + uint8_t u8FaultHight = 0; + u8FaultHight = ((stFaultCode[0].u16FaultCode)&(0xFF00))>>8; + return u8FaultHight; +} + +uint8_t Get_Current_Mid_FaultCode(void) +{ + uint8_t u8FaultMid = 0; + u8FaultMid = ((stFaultCode[0].u16FaultCode)&(0x00FF)); + return u8FaultMid; +} + +uint8_t Get_FaultCode_Valid(void) +{ + return u8FaultCodeValid; +} diff --git a/Firmware/Source/Application/FaultCode.h b/Firmware/Source/Application/FaultCode.h new file mode 100644 index 0000000000000000000000000000000000000000..765176a23b152515be39ff95d2972a50fd1a527d --- /dev/null +++ b/Firmware/Source/Application/FaultCode.h @@ -0,0 +1,60 @@ +#ifndef FAULTCODE_H +#define FAULTCODE_H +#include <stdint.h> +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + + +/*æ•…éšœç 类型A can报文轮询å‘逿–¹å¼*/ +#define FaultCodeType_A 1 + + +#define FaultCodeType FaultCodeType_A + +#define MaxFaultCode 40 +#define FaultCodeCount 5000 + +typedef enum +{ + DTC1, + DTC2, + DTC3, + NUM_FAULT_TYPES, +} FaultCodeType_Num; + +typedef uint32_t (*FaultCodeCallback)(void); /* æ•…éšœç 回调函数 */ +typedef uint16_t (*FaultCodeNumback)(void); /* æ•…éšœç 个数回调函数 */ +typedef uint16_t (*FaultCodeValidback)(void); /* æ•…éšœç æœ‰æ•ˆå›žè°ƒå‡½æ•° */ + +typedef struct +{ + uint32_t u16FaultCode; /* æ•…éšœç */ + uint16_t u16FaultCodeCount; /* æ•…éšœç æ€»æ•° */ +} _st_FaultCode; + + + +typedef struct +{ + FaultCodeCallback callbacks[NUM_FAULT_TYPES]; + FaultCodeNumback FaultCodeNumCbk; + FaultCodeValidback FaultCodeVaildCbk; + +} _st_Init; + + + + +extern void FaultCode_Service(uint16_t Cycle); + +extern void FaultCode_Init(void); + + + +extern uint32_t Get_Current_FaultCode(void); +extern uint8_t Get_Current_Hight_FaultCode(void); +extern uint8_t Get_Current_Hight_FaultCode(void); +extern uint8_t Get_FaultCode_Valid(void); + +#endif \ No newline at end of file diff --git a/Firmware/Source/Application/GpioUser.c b/Firmware/Source/Application/GpioUser.c index b1e80f8b3173b96c63037bbb6b9b59dd4e24a4d5..427137d4f961b043ff27470f7fec961e21d8cfcd 100644 --- a/Firmware/Source/Application/GpioUser.c +++ b/Firmware/Source/Application/GpioUser.c @@ -50,7 +50,7 @@ void Gpio_Init(_GpioUser_Enum InitMode) RTE_GPIO_Config(RTE_GPIO_PORT05_PIN01, GpioOut_Low); //切电控制-MCU-OUT-1 RTE_GPIO_Config(RTE_GPIO_PORT05_PIN02, GpioOut_High); RTE_GPIO_Config(RTE_GPIO_PORT05_PIN03, RTE_GPIO_DIR_IN); - RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High); + RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High); RTE_GPIO_Config(RTE_GPIO_PORT05_PIN05, RTE_GPIO_DIR_IN); RTE_GPIO_Config(RTE_GPIO_PORT06_PIN00, GpioOut_Low); //å˜å‚¨SCL diff --git a/Firmware/Source/Component/AMT630H/AMT630H_Datas.c b/Firmware/Source/Component/AMT630H/AMT630H_Datas.c index 74f10471f0745cd91674c36228957c0105eecbce..f11d3fb2f06e7989756ea475c49cc21e90470180 100644 --- a/Firmware/Source/Component/AMT630H/AMT630H_Datas.c +++ b/Firmware/Source/Component/AMT630H/AMT630H_Datas.c @@ -6,6 +6,16 @@ uint8_t g_u8Display_Mode = ModeDAY; uint8_t g_u8Language = CH; uint8_t g_u8Backlight = Backlight_5 ; uint8_t g_u8UnitSetting = Metric ; + +uint8_t g_u8SelfCheck = 0;/*自检*/ +uint16_t g_u16fuelnumberup = 0; +uint16_t g_u16vspeednumberup = 0; +uint16_t g_u16vspeednumberdown = 600; +uint16_t g_u16espeednumberup = 0; +uint16_t g_u16espeednumberdown = 600; + +//自检函数 +void AMT630H_GUI_BACKGRAND_SelfCheck(void); // èœå•背景,èœå•å‰å¿…带 void AMT630H_GUI_BACKGRAND(void); // èœå•调用函数 @@ -33,11 +43,19 @@ void AMT630H_GUI_Background() { if (SYS_OPR_STAT_IGN_ON) { - AMT630H_GUI_ReadPosittion_Display(); + if(g_u8SelfCheck == 1) + { + AMT630H_GUI_ReadPosittion_Display(); + } + else + { + AMT630H_GUI_BACKGRAND_SelfCheck(); + } + } else { - + ; } } @@ -62,10 +80,9 @@ void AMT630H_GUI_Fault_Information(void) SetPagePic(GRAPHICS_PAGE_0, Pic_0167_341_354); SetPagePic(GRAPHICS_PAGE_0, Pic_0093_574_292); SetPagePic(GRAPHICS_PAGE_0, Pic_0168_350_290); - SetPagePic(GRAPHICS_PAGE_0, Pic_0095_633_240); - SetPagePic(GRAPHICS_PAGE_0, Pic_0169_353_227); - SetPagePic(GRAPHICS_PAGE_0, Pic_0095_633_175); - SetPagePic(GRAPHICS_PAGE_0, Pic_0170_354_162); + SetPagePic(GRAPHICS_PAGE_0, Pic_0169_353_227);/*åŽ†å²æ•…éšœ*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0170_354_162);/*当剿•…éšœ*/ + //AMT630H_GUI_FaultCode(Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode()); } else if(g_u8Language == EN) { @@ -79,10 +96,10 @@ void AMT630H_GUI_Fault_Information(void) SetPagePic(GRAPHICS_PAGE_0, Pic_0092_368_356); SetPagePic(GRAPHICS_PAGE_0, Pic_0093_574_292); SetPagePic(GRAPHICS_PAGE_0, Pic_0094_375_292); - SetPagePic(GRAPHICS_PAGE_0, Pic_0095_633_240); - SetPagePic(GRAPHICS_PAGE_0, Pic_0096_338_228); - SetPagePic(GRAPHICS_PAGE_0, Pic_0095_633_175); - SetPagePic(GRAPHICS_PAGE_0, Pic_0097_334_163); + + SetPagePic(GRAPHICS_PAGE_0, Pic_0096_338_228);/*Fault history*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0097_334_163);/*current fault*/ + //AMT630H_GUI_FaultCode(Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode()); } } else if(g_u8Display_Mode == ModeNIGHT) @@ -99,10 +116,10 @@ void AMT630H_GUI_Fault_Information(void) SetPagePic(GRAPHICS_PAGE_0, Pic_0354_341_354); SetPagePic(GRAPHICS_PAGE_0, Pic_0281_574_292); SetPagePic(GRAPHICS_PAGE_0, Pic_0355_350_290); - SetPagePic(GRAPHICS_PAGE_0, Pic_0283_633_240); - SetPagePic(GRAPHICS_PAGE_0, Pic_0356_353_227); - SetPagePic(GRAPHICS_PAGE_0, Pic_0283_633_175); - SetPagePic(GRAPHICS_PAGE_0, Pic_0357_354_162); + + SetPagePic(GRAPHICS_PAGE_0, Pic_0356_353_227);/*åŽ†å²æ•…éšœ*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0357_354_162);/*当剿•…éšœ*/ + //AMT630H_GUI_FaultCode(Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode()); } else if(g_u8Language == EN) { @@ -111,16 +128,136 @@ void AMT630H_GUI_Fault_Information(void) SetPagePic(GRAPHICS_PAGE_0, Pic_0276_193_488); SetPagePic(GRAPHICS_PAGE_0, Pic_0277_728_486); SetPagePic(GRAPHICS_PAGE_0, Pic_0278_435_519); + SetPagePic(GRAPHICS_PAGE_0, Pic_0279_567_356); SetPagePic(GRAPHICS_PAGE_0, Pic_0280_368_356); SetPagePic(GRAPHICS_PAGE_0, Pic_0281_574_292); SetPagePic(GRAPHICS_PAGE_0, Pic_0282_375_292); - SetPagePic(GRAPHICS_PAGE_0, Pic_0283_633_240); + SetPagePic(GRAPHICS_PAGE_0, Pic_0284_338_228); - SetPagePic(GRAPHICS_PAGE_0, Pic_0283_633_175); SetPagePic(GRAPHICS_PAGE_0, Pic_0285_334_163); + //AMT630H_GUI_FaultCode(Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode()); + } + } +} + + +static uint16_t NumbeList_FaultCode_day[]={ + Pic_0040_605_289, + Pic_0041_606_290, + Pic_0042_604_289, + Pic_0043_604_289, + Pic_0044_604_290, + Pic_0045_604_290, + Pic_0046_605_289, + Pic_0047_605_290, + Pic_0048_605_289, + Pic_0049_605_289, +}; +static uint16_t NumbeList_FaultCode_night[]={ + Pic_0225_605_289, + Pic_0226_606_290, + Pic_0227_604_289, + Pic_0228_604_289, + Pic_0229_604_290, + Pic_0230_604_290, + Pic_0231_605_289, + Pic_0232_605_290, + Pic_0233_605_289, + Pic_0234_605_289, +}; + + +/*æ•…éšœç æ˜¾ç¤ºå‡½æ•°*/ +static void AMT630H_GUI_FaultCode(uint8_t FaultCodevalid,uint8_t FaultCode_hight,uint8_t FaultCode_mid) +{ + /*æ•°å—åªæœ‰ä¸¤ç»„ åŽ†å²æ•…障和故障信æ¯çºµåæ ‡ä¸åŒ*/ + DISPLAY_NUM_ST DisplayNumPara; + uint16_t frontnumber; + uint16_t midnumber; + frontnumber = FaultCode_hight; + midnumber = FaultCode_mid; + if(FaultCodevalid == 1) + { + 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, frontnumber); + } + else if(g_u8Display_Mode == ModeNIGHT) + { + //SetPagePicFree(GRAPHICS_PAGE_0, Pic_0912_639_293, 610, 175);//当剿•…éšœç çš„P + //SetPagePicFree(GRAPHICS_PAGE_0, Pic_0912_639_293, 610, 240);//åŽ†å²æ•…éšœç çš„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 + { + /*显示-----*/; + } } /** * @brief 显示模å¼ä¿¡æ¯ 一级èœå• @@ -923,19 +1060,55 @@ static void AMT630H_GUI_Clock_Setting(uint8_t Clock_Hour, uint8_t Clock_Min, uin break; case MENU_ITEM_CLOCK_HOUR_TENB_SET: /*Cursor blinking*/ - /*Digital changes*/ //Sava picked data and + if(FLASH_SYNC_1Hz) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0020_408_209); + } + else + { + ; + } + /*Digital changes*/ + //Menu_Logic_Operation_Clock_Hour_Tenb_Set(Menu_Key_en_t enKeyType); break; case MENU_ITEM_CLOCK_HOUR_BIT_SET: /*Cursor blinking*/ + if(FLASH_SYNC_1Hz) + { + SetPagePic(GRAPHICS_PAGE_0,Pic_0020_455_209); + } + else + { + ; + } /*Digital changes*/ + //Menu_Logic_Operation_Clock_Hour_Bit_Set(Menu_Key_en_t enKeyType); break; case MENU_ITEM_CLOCK_MIN_TENB_SET: /*Cursor blinking*/ + if(FLASH_SYNC_1Hz) + { + SetPagePic(GRAPHICS_PAGE_0,Pic_0020_525_209); + } + else + { + ; + } /*Digital changes*/ + //Menu_Logic_Operation_Clock_Min_Tenb_Set(Menu_Key_en_t enKeyType); break; case MENU_ITEM_CLOCK_MIN_BIT_SET: /*Cursor blinking*/ + if(FLASH_SYNC_1Hz) + { + SetPagePic(GRAPHICS_PAGE_0,Pic_0020_572_209); + } + else + { + ; + } /*Digital changes*/ + //Menu_Logic_Operation_Clock_Min_Bit_Set(Menu_Key_en_t enKeyType); break; default: break; @@ -2536,6 +2709,16 @@ static const uint16_t PICList_Fuel[] = { Pic_0560_586_473, Pic_0561_623_473, }; +static const uint16_t PICList_Fuel_SelfCheck[] ={ + Pic_0554_315_473, + Pic_0555_366_473, + Pic_0556_426_473, + Pic_0557_469_473, + Pic_0558_514_473, + Pic_0559_550_473, + Pic_0560_586_473, + Pic_0561_623_473, +}; /*指示ç¯*/ static void AMT630H_GUI_Light() @@ -2554,7 +2737,7 @@ static void AMT630H_GUI_Light() } if(Get_TelltalesLedSts(em_LED_Efi_Fault)) { - ; + SetPagePic(GRAPHICS_PAGE_0, Pic_0742_544_22); } if(Get_TelltalesLedSts(em_LED_ABS)) { @@ -2562,21 +2745,25 @@ static void AMT630H_GUI_Light() } if(Get_TelltalesLedSts(em_LED_Auto_Start_Stop)) { - + SetPagePic(GRAPHICS_PAGE_0, Pic_0745_341_21); } if(Get_TelltalesLedSts(em_LED_Oil_Pressure_Alert)) { SetPagePic(GRAPHICS_PAGE_0, Pic_0738_792_25); } - if(Get_TelltalesLedSts(em_LED_TCS)) + if(Get_TelltalesLedSts(em_LED_TCS) == 1) { SetPagePic(GRAPHICS_PAGE_0, Pic_0750_106_26); } - else + else if(Get_TelltalesLedSts(em_LED_TCS) == 2) { SetPagePic(GRAPHICS_PAGE_0, Pic_0750_106_26); SetPagePic(GRAPHICS_PAGE_0, Pic_0751_111_30); } + else + { + ; + } if(Get_TelltalesLedSts(em_LED_HEV)) { SetPagePic(GRAPHICS_PAGE_0, Pic_0747_244_26); @@ -2758,10 +2945,12 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel) } else if (FuelLevel == g_u16_GUI_PerFuelLevel) { + ; } } else if (FuelLevel == g_u16_GUI_PerFuelLevel) { + } for (uint8_t i = 0; i < g_u16_GUI_PerFuelLevel; i++) @@ -2775,6 +2964,50 @@ static void AMT630H_GUI_Fuel(uint8_t Fuel) } } + +/*燃油自检函数*/ +static void AMT630H_GUI_Fuel_SelfCheck(uint8_t Fuel) +{ + uint8_t FuelLevel; + FuelLevel = Fuel; + if (g_u8Display_Mode == ModeDAY) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0553_315_473); /*ç‡ƒæ²¹æ ¼*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0549_299_533); /*E*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0550_715_533); /*F*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0551_503_529); /*黑色燃油ç¯*/ + + } + else if (g_u8Display_Mode == ModeNIGHT) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0662_315_473); /*ç‡ƒæ²¹æ ¼*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0549_299_533); /*E*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0660_715_533); /*F*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0661_503_529); /*白色燃油ç¯*/ + } + + /*ç‡ƒæ²¹æ ¼æ•°èµ°æ ¼*/ + if (FuelLevel > g_u16_GUI_PerFuelLevel) + { + g_u16_GUI_PerFuelLevel++; + } + else if ((FuelLevel < g_u16_GUI_PerFuelLevel) && (g_u16_GUI_PerFuelLevel != 0)) + { + g_u16_GUI_PerFuelLevel--; + } + else + { + ; + } + for (uint8_t i = 0; i < g_u16_GUI_PerFuelLevel; i++) + { + SetPagePic(GRAPHICS_PAGE_0, PICList_Fuel_SelfCheck[i]); + } +} + + + + /*电压显示函数*/ static void AMT630H_GUI_Voltage(uint16_t Voltage) { @@ -2902,7 +3135,7 @@ static void AMT630H_GUI_Voltage(uint16_t Voltage) } /*大计里程显示函数*/ -static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t mode) +static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t Uint) { if (g_u8Display_Mode == ModeDAY) { @@ -2920,37 +3153,79 @@ static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t mode) { DisplayNumPara.x = 173; DisplayNumPara.MinDigits = 6; - SetPagePic(GRAPHICS_PAGE_0, Pic_0580_211_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_211_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_211_324);/*mile*/ + } } else if((ODONumber<100000)&&(ODONumber>=10000)) { DisplayNumPara.x = 149; DisplayNumPara.MinDigits = 5; - SetPagePic(GRAPHICS_PAGE_0, Pic_0580_187_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_187_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_187_324);/*mile*/ + } } else if((ODONumber<10000)&&(ODONumber>=1000)) { DisplayNumPara.x = 125; DisplayNumPara.MinDigits = 4; - SetPagePic(GRAPHICS_PAGE_0, Pic_0580_163_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_163_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_163_324);/*mile*/ + } } else if((ODONumber<1000)&&(ODONumber>=100)) { DisplayNumPara.x = 101; DisplayNumPara.MinDigits = 3; - SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_139_324);/*mile*/ + } } else if((ODONumber<100)&&(ODONumber>=10)) { DisplayNumPara.x = 77; DisplayNumPara.MinDigits = 2; - SetPagePic(GRAPHICS_PAGE_0, Pic_0580_115_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_115_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_115_324);/*mile*/ + } } else if((ODONumber<10)&&(ODONumber>=0)) { DisplayNumPara.x = 53; DisplayNumPara.MinDigits = 1; - SetPagePic(GRAPHICS_PAGE_0, Pic_0580_91_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_91_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_91_324);/*mile*/ + } } else { @@ -2967,39 +3242,86 @@ static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t mode) uint16_t ODONumber; ODONumber = ODO; DisplayNumPara.NumList = NumbeList_ODO_NIGHT; - DisplayNumPara.x = 173; DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 24; DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS; DisplayNumPara.DecimalNum = 0; if((ODONumber<1000000)&&(ODONumber>=100000)) { + DisplayNumPara.x = 173; DisplayNumPara.MinDigits = 6; - SetPagePic(GRAPHICS_PAGE_0, Pic_0688_211_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_211_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_211_324);/*å•ä½mile*/ + } } else if((ODONumber<100000)&&(ODONumber>=10000)) { + DisplayNumPara.x = 149; DisplayNumPara.MinDigits = 5; - SetPagePic(GRAPHICS_PAGE_0, Pic_0688_187_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_187_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_187_324);/*å•ä½mile*/ + } } else if((ODONumber<10000)&&(ODONumber>=1000)) { + DisplayNumPara.x = 125; DisplayNumPara.MinDigits = 4; - SetPagePic(GRAPHICS_PAGE_0, Pic_0688_163_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_163_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_163_324);/*å•ä½mile*/ + } } else if((ODONumber<1000)&&(ODONumber>=100)) { + DisplayNumPara.x = 101; DisplayNumPara.MinDigits = 3; - SetPagePic(GRAPHICS_PAGE_0, Pic_0688_139_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_139_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_139_324);/*å•ä½mile*/ + } } else if((ODONumber<100)&&(ODONumber>=10)) { + DisplayNumPara.x = 77; DisplayNumPara.MinDigits = 2; - SetPagePic(GRAPHICS_PAGE_0, Pic_0688_115_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_115_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_115_324);/*å•ä½mile*/ + } } else if((ODONumber<10)&&(ODONumber>=0)) { + DisplayNumPara.x = 53; DisplayNumPara.MinDigits = 1; - SetPagePic(GRAPHICS_PAGE_0, Pic_0688_91_324);/*KM*/ + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_91_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_91_324);/*å•ä½mile*/ + } } else { @@ -3013,6 +3335,131 @@ static void AMT630H_GUI_ODO(uint32_t ODO, uint8_t mode) } } +/*å°è®¡é‡Œç¨‹æ˜¾ç¤ºå‡½æ•°*/ +static void AMT630H_GUI_Trip(uint32_t Trip, uint8_t Uint) +{ + DISPLAY_NUM_ST DisplayNumPara; + uint32_t Tripnumber; + Tripnumber = Trip; + if (g_u8Display_Mode == ModeDAY) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0577_48_272); + SetPagePic(GRAPHICS_PAGE_0, Pic_0862_54_297);/*TRIPå›¾æ ‡*/ + + DisplayNumPara.NumList = NumbeList_ODO_DAY; + DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 24; + DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS; + DisplayNumPara.DecimalNum = 1;/*å°æ•°ç‚¹åŽä¸€ä½*/ + if((Tripnumber<10000)&&(Tripnumber>=1000)) + { + DisplayNumPara.x = 125; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_163_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_163_324);/*å•ä½mile*/ + } + } + else if((Tripnumber<1000)&&(Tripnumber>=100)) + { + DisplayNumPara.x = 101; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_139_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_139_324);/*å•ä½mile*/ + } + } + else if((Tripnumber<100)&&(Tripnumber>=10)) + { + DisplayNumPara.x = 77; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_115_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_115_324);/*å•ä½mile*/ + } + } + else if((Tripnumber<10)&&(Tripnumber>=0)) + { + DisplayNumPara.x = 53; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0580_91_324);/*å•ä½KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0861_91_324);/*å•ä½mile*/ + } + } + } + else if(g_u8Display_Mode == ModeDAY) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0685_48_272); + SetPagePic(GRAPHICS_PAGE_0, Pic_0864_54_297);/*TRIPå›¾æ ‡*/ + DisplayNumPara.NumList = NumbeList_ODO_NIGHT; + DisplayNumPara.NumInterval = GROUP_PIC_DIR_LEFT | 24; + DisplayNumPara.y = GROUP_PIC_USE_PSD_Y_POS; + DisplayNumPara.DecimalNum = 1;/*å°æ•°ç‚¹åŽä¸€ä½*/ + if((Tripnumber<10000)&&(Tripnumber>=1000)) + { + DisplayNumPara.x = 125; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_163_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_163_324);/*å•ä½mile*/ + } + } + else if((Tripnumber<1000)&&(Tripnumber>=100)) + { + DisplayNumPara.x = 101; + DisplayNumPara.MinDigits = 4; + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_139_324);/*KM*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_139_324);/*å•ä½mile*/ + } + else if((Tripnumber<100)&&(Tripnumber>=10)) + { + DisplayNumPara.x = 77; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_115_324);/*KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_115_324);/*å•ä½mile*/ + } + } + else if((Tripnumber<10)&&(Tripnumber>=0)) + { + DisplayNumPara.x = 53; + DisplayNumPara.MinDigits = 4; + if(Uint == 0) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0688_91_324);/*å•ä½KM*/ + } + else + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0863_91_324);/*å•ä½mile*/ + } + } + } +} + /*车速显示函数*/ static void AMT630H_GUI_VSpeed(uint16_t VSpeed) { @@ -3248,7 +3695,9 @@ void AMT630H_GUI_BACKGRAND() /*主界é¢å‡½æ•°*/ AMT630H_GUI_Light(); AMT630H_GUI_TIME(Get_Dis_Hour_Time(), Get_Dis_Minute_Time()); - /* AMT630H_GUI_Telephone(Telephone); */ + AMT630H_GUI_Voltage((ADC_Read_Signal(ADC_CH_KL30_VOLTAGE)) / 10); + // AMT630H_GUI_Telephone(Telephone); + /*燃油*/ if (Get_Fuel_Sensor_State() == FuelSensorNormal) { AMT630H_GUI_Fuel(Get_CurFuelSetp()); @@ -3257,8 +3706,16 @@ void AMT630H_GUI_BACKGRAND() { AMT630H_GUI_Fuel(0); } - AMT630H_GUI_Voltage((ADC_Read_Signal(ADC_CH_KL30_VOLTAGE)) / 10); - AMT630H_GUI_ODO(Get_ODO_Value() / 10, 0); + /*里程*/ + if(Get_Dis_OdoAndTrip() == 0) + { + AMT630H_GUI_ODO(Get_ODO_Value() / 10, Get_Dis_Unit()); + } + else + { + AMT630H_GUI_Trip(Get_Trip_Value(), Get_Dis_Unit()); + } + /*车速*/ if (Get_VechileSpeedValid() == 1) { AMT630H_GUI_VSpeed(Get_DispVechileSpeed() / 10); @@ -3267,6 +3724,7 @@ void AMT630H_GUI_BACKGRAND() { AMT630H_GUI_VSpeed(0); } + /*转速*/ if (Get_EngineValid() == 1) { AMT630H_GUI_ESpeed(Get_DispEngineSpeed()); @@ -3277,9 +3735,139 @@ void AMT630H_GUI_BACKGRAND() } } -void AMT630H_GUI_SETTING() + +/*自检*/ +void AMT630H_GUI_BACKGRAND_SelfCheck() { + /*背景图*/ + if(g_u8Display_Mode == ModeDAY) + { + if(g_u8Language == CH) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0382_0_0); + SetPagePic(GRAPHICS_PAGE_0, Pic_0753_109_331); + } + else if(g_u8Language == EN) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0382_0_0); + SetPagePic(GRAPHICS_PAGE_0, Pic_0753_109_331); + } + } + if(g_u8Display_Mode == ModeNIGHT) + { + if(g_u8Language == CH) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0); + SetPagePic(GRAPHICS_PAGE_0, Pic_0754_109_347); + } + else if(g_u8Language == EN) + { + SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0); + SetPagePic(GRAPHICS_PAGE_0, Pic_0754_109_347); + } + } + + + /*æŒ‡ç¤ºç¯æ˜¾ç¤º*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0752_28_13);/*左转å‘*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0736_941_13);/*å³è½¬å‘*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0744_402_21);/*远光ç¯*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0742_544_22);/*电喷故障指示ç¯*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0743_476_20);/*ABS*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0745_341_21);/*自动å¯åœç¯*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0738_792_25);/*机油压力ç¯*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0750_106_26);/*TCS*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0751_111_30);/* / */ + SetPagePic(GRAPHICS_PAGE_0, Pic_0747_244_26);/*HEV*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0741_616_20);/*水温ç¯*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0737_875_23);/*WIFI*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0740_682_21);/*è“牙*/ + SetPagePic(GRAPHICS_PAGE_0, Pic_0748_194_26);/*E*/ + //SetPagePic(GRAPHICS_PAGE_0, Pic_0749_192_26);/*S*/ + + AMT630H_GUI_TIME(Get_Dis_Hour_Time(), Get_Dis_Minute_Time()); + AMT630H_GUI_Voltage((ADC_Read_Signal(ADC_CH_KL30_VOLTAGE)) / 10); + // AMT630H_GUI_Telephone(Telephone); + + /*里程 æ— è‡ªæ£€*/ + if(Get_Dis_OdoAndTrip() == 0) + { + AMT630H_GUI_ODO(Get_ODO_Value() / 10, Get_Dis_Unit()); + } + else + { + AMT630H_GUI_Trip(Get_Trip_Value(), Get_Dis_Unit()); + } + /*燃油自检*/ + if(g_u16fuelnumberup < 1200) + { + g_u16fuelnumberup+=6; + AMT630H_GUI_Fuel_SelfCheck(g_u16fuelnumberup/150);/*åˆå§‹åŒ–g_u16fuelnumberup = 0*/ + } + else + { + ; + } + /*车速自检*/ + if(g_u16vspeednumberup < 600) + { + AMT630H_GUI_VSpeed(g_u16vspeednumberup/3);/*åˆå§‹åŒ–g_u16vspeednumberup = 0*/ + g_u16vspeednumberup+=6; + } + else + { + if(g_u16vspeednumberdown >0) + { + g_u16vspeednumberdown-=6;/*åˆå§‹åŒ–g_u16vspeednumberup=1200*/ + AMT630H_GUI_VSpeed(g_u16vspeednumberdown/3);/*if g_u16vspeednumberup=0 车速自检结æŸ*/ + } + else + { + ; + } + } + /*转速自检*/ + if(g_u16espeednumberup <= 600) + { + AMT630H_GUI_ESpeed(g_u16espeednumberup*20);/*åˆå§‹åŒ–g_u16espeednumberup = 0*/ + g_u16espeednumberup+=6; + } + else + { + if(g_u16espeednumberdown > 0) + { + AMT630H_GUI_ESpeed(g_u16espeednumberdown*20);/*åˆå§‹åŒ–g_u16espeednumberdown = 600*/ + g_u16espeednumberdown-=6;/*g_u16espeednumberdown = 0 转速自检结æŸ*/ + } + } + /*结æŸçжæ€*/ + if(g_u16fuelnumberup == 1200) + { + AMT630H_GUI_Fuel_SelfCheck(8); + } + if(g_u16vspeednumberdown == 0) + { + AMT630H_GUI_VSpeed(g_u16vspeednumberdown); + } + if(g_u16espeednumberdown == 0) + { + AMT630H_GUI_ESpeed(g_u16espeednumberdown); + } + /*结æŸè‡ªæ£€*/ + if((g_u16fuelnumberup == 1200)&&(g_u16vspeednumberdown == 0)&&(g_u16espeednumberdown == 0)) + { + g_u8SelfCheck = 1;/*è‡ªæ£€ç»“æŸæ ‡å¿—*/ + } + else + { + ; + } +} + + +void AMT630H_GUI_SETTING() +{ if (g_u8Display_Mode == ModeDAY) { if(g_u8Language == CH) @@ -3317,7 +3905,7 @@ void AMT630H_GUI_DisplayProc(void) SetPageGuid(GRAPHICS_PAGE_0, 1, 0, 0); AMT630H_GUI_Background(); - + PackedTransfer_Page(); } diff --git a/Firmware/Source/Component/Line_In/Line_In_user.c b/Firmware/Source/Component/Line_In/Line_In_user.c index f7d6be763b407e74531fe3fd9e5f9b8001a8dd9c..a93373bdf743ee14080fc0607155a1e1ff625857 100644 --- a/Firmware/Source/Component/Line_In/Line_In_user.c +++ b/Firmware/Source/Component/Line_In/Line_In_user.c @@ -5,16 +5,16 @@ const Line_In_Attribute_st g_stLineInAttribute[LINE_IN_MAX] = { - {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Left, }, - {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, }, - {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 60U, 20U, Get_LINE_IN_High_Beam, }, - {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 100U, 20U, Get_LINE_IN_Efi_Fault, }, - {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_ABS, }, - {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Auto_Start_Stop, }, - {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Oil_Pressure_Alert, }, - {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Voltage, }, - {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Fuel_Level_Low, }, - {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Coolant_Temperature }, + {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Left, },/*P10*/ + {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, },/*P9*/ + {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 60U, 20U, Get_LINE_IN_High_Beam, },/*P18*/ + {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 100U, 20U, Get_LINE_IN_Efi_Fault, },/*P15*/ + {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_ABS, },/*P7*/ + {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Auto_Start_Stop, },/*P12*/ + {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Oil_Pressure_Alert, },/*P21*/ + {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Voltage, },/*P19*/ + {LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Fuel_Level_Low, },/*P14*/ + {LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Coolant_Temperature }, /*P11*/ }; Linelib_uint8_t Get_LINE_IN_Turn_Left(void) { diff --git a/Firmware/Source/Component/PowerManagement/PowerManag_user.c b/Firmware/Source/Component/PowerManagement/PowerManag_user.c index 13a8e545797ab427b5dddd6d34023f2202449453..61f270fb692630525998c7c84a3b260d6667fb83 100644 --- a/Firmware/Source/Component/PowerManagement/PowerManag_user.c +++ b/Firmware/Source/Component/PowerManagement/PowerManag_user.c @@ -1,5 +1,6 @@ #include "PowerManagement.h" #include "Components.h" +#include "FaultCode.h" RTC_Information_st_t g_stRTCInformation; @@ -68,6 +69,7 @@ static void Power_KL30_Init(void) Can_Init(); Protocol_KL30_Wakeup_Init(); RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising); + FaultCode_Init(); } static void Power_Wakeup_Init(void) @@ -93,6 +95,7 @@ static void Power_Wakeup_Init(void) Can_Init(); Protocol_KL30_Wakeup_Init(); RTE_DEEPSLEEP_GPIO_Interrupt_Enable(KL15_AD_IN, Trigger_Rising); + FaultCode_Init(); } static void Power_LVP_Init(void) @@ -117,6 +120,7 @@ static void Power_IG_ON_Init(void) Telltales_KL15_Init(); Fuel_KL15_Init(); RTE_GPIO_Set_Level(Blacklight_PWM, 1); + FaultCode_Init(); } static void Power_Sleep_Init(void) diff --git a/Firmware/Source/Component/Telltales/Telltales_user.c b/Firmware/Source/Component/Telltales/Telltales_user.c index 65874a779146670204d2d5e01d2eab49874f80f7..c9dfaf5e9205417651e38e5ce71be00f6baf61f1 100644 --- a/Firmware/Source/Component/Telltales/Telltales_user.c +++ b/Firmware/Source/Component/Telltales/Telltales_user.c @@ -134,18 +134,21 @@ static void LED_High_Beam_Execution(Tellib_uint16_t led_status) } +uint8_t test =0; /*硬线-P15 低电平点亮*/ static Tellib_uint16_t LED_Efi_Fault_Judgement(void) { Tellib_uint16_t LED_STATE = 0u; - if (Line_In_Get_Status(LINE_IN_Efi_Fault) == 0u) + if (Line_In_Get_Status(LINE_IN_Efi_Fault)) { LED_STATE = 1u; + test =1; } else { LED_STATE = 0u; } + return LED_STATE; } static void LED_Efi_Fault_Execution(Tellib_uint16_t led_status) @@ -177,13 +180,13 @@ static void LED_ABS_Execution(Tellib_uint16_t led_status) static Tellib_uint16_t LED_Auto_Start_Stop_Judgement(void) { Tellib_uint16_t LED_STATE = 0u; - if (Line_In_Get_Status(LINE_IN_Auto_Start_Stop) == 0) + if (Line_In_Get_Status(LINE_IN_Auto_Start_Stop)) { - LED_STATE = 1; + LED_STATE = 1u; } else { - LED_STATE = 0; + LED_STATE = 0u; } return LED_STATE; } @@ -197,7 +200,7 @@ static void LED_Auto_Start_Stop_Execution(Tellib_uint16_t led_status) static Tellib_uint16_t LED_Oil_Pressure_Alert_Judgement(void) { Tellib_uint16_t LED_STATE = 0u; - if (Line_In_Get_Status(LINE_IN_Oil_Pressure_Alert) == 0) + if (Line_In_Get_Status(LINE_IN_Oil_Pressure_Alert)) { LED_STATE = 1; } diff --git a/Firmware/Source/System/Sys_Task_List.c b/Firmware/Source/System/Sys_Task_List.c index 79c2d20b24ce13d3d7468630faede1708a25b206..f6845ed2b9ba6fdb6f79d26f6f2c47c368ba6495 100644 --- a/Firmware/Source/System/Sys_Task_List.c +++ b/Firmware/Source/System/Sys_Task_List.c @@ -4,6 +4,7 @@ //#include "CommonInterface.h" #include "RTE.h" #include "UDS_ISO14229_Server.h" +#include "FaultCode.h" void Sys_Pseudo_Real_Time_Tasks(void) { @@ -30,6 +31,7 @@ void Sys_5ms_Tasks(void) void Sys_10ms_Tasks(void) { + FaultCode_Service(10u); Line_In_Debounce_Service(10u); Key_Service(); Data_Mileage_Write_EEPROM();