Commit af874ddf authored by 高士达's avatar 高士达

Merge branch 'lgh_from_dev' into 'dev'

Lgh from dev

See merge request !21
parents e5472f5d 1083e73f
......@@ -275,7 +275,7 @@
</OCR_RVCT3>
<OCR_RVCT4>
<Type>1</Type>
<StartAddress>0x8000</StartAddress>
<StartAddress>0x0</StartAddress>
<Size>0x40000</Size>
</OCR_RVCT4>
<OCR_RVCT5>
......@@ -361,7 +361,7 @@
</VariousControls>
</Aads>
<LDads>
<umfTarg>1</umfTarg>
<umfTarg>0</umfTarg>
<Ropi>0</Ropi>
<Rwpi>0</Rwpi>
<noStLib>0</noStLib>
......@@ -370,7 +370,7 @@
<TextAddressRange>0x00000000</TextAddressRange>
<DataAddressRange>0x20000000</DataAddressRange>
<pXoBase></pXoBase>
<ScatterFile></ScatterFile>
<ScatterFile>.\Objects\RMR42E.sct</ScatterFile>
<IncludeLibs></IncludeLibs>
<IncludeLibsPath></IncludeLibsPath>
<Misc></Misc>
......@@ -478,6 +478,86 @@
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\CAN_User\Can_RX_User.c</FilePath>
</File>
<File>
<FileName>Data_Soc.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_Soc\Data_Soc.c</FilePath>
</File>
<File>
<FileName>Data_Soc.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_Soc\Data_Soc.h</FilePath>
</File>
<File>
<FileName>Data_Fuel.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_Fuel\Data_Fuel.c</FilePath>
</File>
<File>
<FileName>Data_Fuel.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_Fuel\Data_Fuel.h</FilePath>
</File>
<File>
<FileName>Data_Time.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Driving_Information\Data_Time.c</FilePath>
</File>
<File>
<FileName>Data_Time.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Driving_Information\Data_Time.h</FilePath>
</File>
<File>
<FileName>Data_Gear.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Driving_Information\Data_Gear.c</FilePath>
</File>
<File>
<FileName>Data_Gear.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Driving_Information\Data_Gear.h</FilePath>
</File>
<File>
<FileName>BackLight_User.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BackLight\BackLight_User.c</FilePath>
</File>
<File>
<FileName>BackLight_User.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BackLight\BackLight_User.h</FilePath>
</File>
<File>
<FileName>Fault_Code.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Driving_Information\Fault_Code.c</FilePath>
</File>
<File>
<FileName>Fault_Code.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Driving_Information\Fault_Code.h</FilePath>
</File>
<File>
<FileName>Buzzer.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Buzzer\Buzzer.c</FilePath>
</File>
<File>
<FileName>Buzzer.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Buzzer\Buzzer.h</FilePath>
</File>
<File>
<FileName>BU98B10_User.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\BU98B10_User\BU98B10_User.c</FilePath>
</File>
<File>
<FileName>BU98B10_User.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\BU98B10_User\BU98B10_User.h</FilePath>
</File>
</Files>
</Group>
<Group>
......@@ -608,11 +688,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Component\Telltales\Telltales_Lib.h</FilePath>
</File>
<File>
<FileName>Telltales_Lib.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\Telltales\Telltales_Lib.lib</FilePath>
</File>
<File>
<FileName>Telltales_user.h</FileName>
<FileType>5</FileType>
......@@ -673,6 +748,11 @@
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\Eeprom\eepromManage_20240305.lib</FilePath>
</File>
<File>
<FileName>Telltales_Lib.lib</FileName>
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Component\Telltales\Telltales_Lib.lib</FilePath>
</File>
</Files>
</Group>
<Group>
......@@ -718,16 +798,6 @@
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Device\Cmsemicon\BAT32A239\RTE\GPIO\RTE_GPIO_BAT32A239.h</FilePath>
</File>
<File>
<FileName>UART.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Device\Cmsemicon\BAT32A239\RTE\UART\UART.c</FilePath>
</File>
<File>
<FileName>UART.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Device\Cmsemicon\BAT32A239\RTE\UART\UART.h</FilePath>
</File>
<File>
<FileName>DeepSleep.c</FileName>
<FileType>1</FileType>
......@@ -788,6 +858,16 @@
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Device\Cmsemicon\BAT32A239\RTE\CLOCK_Select\RTE_CLOCK_Select_BAT32A239.c</FilePath>
</File>
<File>
<FileName>UART_DEMO.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Device\Cmsemicon\BAT32A239\RTE\UART\UART_DEMO.c</FilePath>
</File>
<File>
<FileName>UART_DEMO.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Device\Cmsemicon\BAT32A239\RTE\UART\UART_DEMO.h</FilePath>
</File>
</Files>
</Group>
<Group>
......
......@@ -11,9 +11,13 @@
#include "Can_User/Can_User.h"
#include "Can_User/Can_App.h"
#include "Can_User/Can_RX_User.h"
#include "Data_Soc\Data_Soc.h"
#include "Data_Fuel\Data_Fuel.h"
#include "Driving_Information\Data_Time.h"
#include "Driving_Information\Data_Gear.h"
#include "BackLight\BackLight_User.h"
#include "Driving_Information\Fault_Code.h"
#include "Buzzer\Buzzer.h"
#include "BU98B10_User\BU98B10_User.h"
#endif
This diff is collapsed.
#ifndef _BU98B10_USER_H_
#define _BU98B10_USER_H_
#include "Components.h"
#define BU98B10SEGMAX 180 /* 段码段码最大值 */
// #define BU98B10NUMBERMAX 7 /* 数字段数最大值 */
typedef enum
{
BU98B10_NUMBER_SEG_7 = 0,
BU98B10_NUMBER_SEG_27,
BU98B10_NUMBER_SEG_25,
BU98B10_NUMBER_SEG_23,
BU98B10_NUMBER_SEG_16,
BU98B10_NUMBER_SEG_MAX,
} BU98B10_Number_SEG_en_t; /* 段码段 */
typedef enum
{
BU98B10_CHANNEL_0 = 0,
BU98B10_CHANNEL_1,
BU98B10_CHANNEL_MAX,
} BU98B10_Channel_en_t; /* 段码通道 */
typedef enum
{
BU98B10_OFF = 0,
BU98B10_GRAY_LEVEL1,
BU98B10_GRAY_LEVEL2,
BU98B10_GRAY_LEVEL3,
BU98B10_GRAY_LEVEL4,
BU98B10_GRAY_LEVEL5,
BU98B10_GRAY_LEVEL6,
BU98B10_ON,
} BU98B10_Color_en_t; /* 段码点亮等级 */
typedef enum
{
BU98B10_Disable = 0,
BU98B10_Enable,
} BU98B10_Enable_en_t; /* 段码点亮等级 */
typedef enum
{
BU98B10DIS_NUMBLE_0 = 0,
BU98B10DIS_NUMBLE_1,
BU98B10DIS_NUMBLE_2,
BU98B10DIS_NUMBLE_3,
BU98B10DIS_NUMBLE_4,
BU98B10DIS_NUMBLE_5,
BU98B10DIS_NUMBLE_6,
BU98B10DIS_NUMBLE_7,
BU98B10DIS_NUMBLE_8,
BU98B10DIS_NUMBLE_9,
BU98B10DIS_ALPHABET_A,
BU98B10DIS_ALPHABET_B,
BU98B10DIS_ALPHABET_C,
BU98B10DIS_ALPHABET_D,
BU98B10DIS_ALPHABET_E,
BU98B10DIS_ALPHABET_F,
BU98B10DIS_ALPHABET_U,
BU98B10DIS_ALPHABET_P,
BU98B10DIS_ALPHABET_L,
BU98B10DIS_ALPHABET_H,
BU98B10DIS_NUMBLE_LINE,
BU98B10DIS_NUMBLE_NULL,
BU98B10DIS_MAX_7,
} BU98B10_Numble7_Mask_en_t; /* 段码掩码(7段适用) */
typedef enum
{
BU98B10DIS16_NUMBLE_0 = 0,
BU98B10DIS16_NUMBLE_1,
BU98B10DIS16_NUMBLE_2,
BU98B10DIS16_NUMBLE_3,
BU98B10DIS16_NUMBLE_4,
BU98B10DIS16_NUMBLE_5,
BU98B10DIS16_NUMBLE_6,
BU98B10DIS16_NUMBLE_7,
BU98B10DIS16_NUMBLE_8,
BU98B10DIS16_NUMBLE_9,
BU98B10DIS16_ALPHABET_A,
BU98B10DIS16_ALPHABET_B,
BU98B10DIS16_ALPHABET_C,
BU98B10DIS16_ALPHABET_D,
BU98B10DIS16_ALPHABET_E,
BU98B10DIS16_ALPHABET_F,
BU98B10DIS16_ALPHABET_G,
BU98B10DIS16_ALPHABET_H,
BU98B10DIS16_ALPHABET_I,
BU98B10DIS16_ALPHABET_J,
BU98B10DIS16_ALPHABET_K,
BU98B10DIS16_ALPHABET_L,
BU98B10DIS16_ALPHABET_M,
BU98B10DIS16_ALPHABET_N,
BU98B10DIS16_ALPHABET_O,
BU98B10DIS16_ALPHABET_P,
BU98B10DIS16_ALPHABET_Q,
BU98B10DIS16_ALPHABET_R,
BU98B10DIS16_ALPHABET_S,
BU98B10DIS16_ALPHABET_T,
BU98B10DIS16_ALPHABET_U,
BU98B10DIS16_ALPHABET_V,
BU98B10DIS16_ALPHABET_W,
BU98B10DIS16_ALPHABET_X,
BU98B10DIS16_ALPHABET_Y,
BU98B10DIS16_ALPHABET_Z,
BU98B10DIS16_NUMBLE_mul,//乘 x
BU98B10DIS16_NUMBLE_add,//加 +
BU98B10DIS16_NUMBLE_sub,//减 -
BU98B10DIS16_NUMBLE_exc,//除 /
BU98B10DIS16_NUMBLE_LMPar,//左中括号 [
BU98B10DIS16_NUMBLE_RMPar,//右中括号 ]
BU98B10DIS16_NUMBLE_LSPar,//左小括号 (
BU98B10DIS16_NUMBLE_RSPar,//右小括号 )
BU98B10DIS16_NUMBLE_equal,//等于 =
BU98B10DIS16_NUMBLE_degrees,//度 °
BU98B10DIS16_NUMBLE_NULL,//空
BU98B10DIS16_MAX_16,
} BU98B10_Numble16_Mask_en_t; /* 段码掩码(16段适用) */
typedef enum
{
BU98B10DIS27_NUMBLE_ = 0,
BU98B10DIS27_NUMBLE_1,
BU98B10DIS27_NUMBLE_2,
BU98B10DIS27_NUMBLE_3,
BU98B10DIS27_NUMBLE_4,
BU98B10DIS27_NUMBLE_5,
BU98B10DIS27_NUMBLE_6,
BU98B10DIS27_NUMBLE_7,
BU98B10DIS27_NUMBLE_8,
BU98B10DIS27_NUMBLE_9,
BU98B10DIS27_NUMBLE_NULL,
BU98B10DIS27_MAX_27,
} BU98B10_Numble27_Mask_en_t; /* 段码掩码(27段适用) */
typedef enum
{
BU98B10DIS25_NUMBLE_0 = 0,
BU98B10DIS25_NUMBLE_1,
BU98B10DIS25_NUMBLE_2,
BU98B10DIS25_NUMBLE_3,
BU98B10DIS25_NUMBLE_4,
BU98B10DIS25_NUMBLE_5,
BU98B10DIS25_NUMBLE_6,
BU98B10DIS25_NUMBLE_7,
BU98B10DIS25_NUMBLE_8,
BU98B10DIS25_NUMBLE_9,
BU98B10DIS25_NUMBLE_NULL,
BU98B10DIS25_MAX_25,
} BU98B10_Numble25_Mask_en_t; /* 段码掩码(25段适用) */
typedef enum
{
BU98B10DIS23_NUMBLE_P = 0,
BU98B10DIS23_NUMBLE_R,
BU98B10DIS23_NUMBLE_N,
BU98B10DIS23_NUMBLE_H,
BU98B10DIS23_NUMBLE_L,
BU98B10DIS23_NUMBLE_NULL,
BU98B10DIS23_MAX_23,
} BU98B10_Numble23_Mask_en_t; /* 段码掩码(23段适用) */
typedef struct
{
BU98B10_Channel_en_t enBU98B10Channel; /* 选择第几片段码 */
uint8_t u8BU98B10_Seg; /* 需显示的SEG值 */
} BU98B10_USER_st_t;
/**
* @brief 设置段码显示数字或字母显示
* @param pBU98B10User 传入BU98B10_USER_st_t指针
* @param enBU98B10Value 需要显示的内容 数字或者字母详见BU98B10_Numble7_Mask_en_t BU98B10_Numble27_Mask_en_t BU98B10_Numble25_Mask_en_t BU98B10_Numble23_Mask_en_t
* @param enBU98B10SEGNum 需要显示的段码段数 详见 BU98B10_Number_SEG_en_t 以及示例图 若没有可以联系作者补上掩码
* @param Enable 是否点亮
* @return 0:正确 1 传入关闭等级错误 2 传入空指针 3 传入SEG错误或设置段码通道错误 或传入enBU98B10Value错误
*/
uint8_t BU98B10_Set_Numble(const BU98B10_USER_st_t* pBU98B10User, uint8_t enBU98B10Value, BU98B10_Number_SEG_en_t enBU98B10SEGNum, uint8_t Enable);
/**
* @brief 设置段码SEG等级
* @param enBU98B10Channel 传入要设置的段码通道
* @param u8Seg 传入要设置的段码
* @param enColor 传入要设置的等级
* @return 0:设置成功,1:传入的通道错误,2:传入的段码错误,3:传入的等级错误
*/
extern uint8_t BU98B10_Set_Seg_Level(BU98B10_Channel_en_t enBU98B10Channel, uint8_t u8Seg, BU98B10_Color_en_t enColor);
/**
* @brief 设置段码全开 默认等级 7
* @param enBU98B10Channel 选择第几片段码
*/
extern uint8_t BU98B10_ALL_OPEN(BU98B10_Channel_en_t enBU98B10Channel);
/**
* @brief 设置段码全关 默认等级 7
* @param enBU98B10Channel 选择第几片段码
*/
extern uint8_t BU98B10_ALL_CLOSE(BU98B10_Channel_en_t enBU98B10Channel);
#endif
#ifndef _BACKLIGHT_H_
#define _BACKLIGHT_H_
#include "common.h"
extern uint8_t interact_PWM_Low_Duty;
void BackLight_Process(void);
void Interact_Light_Process(void);
void BackLight_Clock_All_Process(void);
extern uint8_t Get_Interact_Light_State(void);
#ifdef Platform_16Bit
#define Light_uint8_t unsigned char
#define Light_uint16_t unsigned int
#define Light_uint32_t unsigned long
#else
#define Light_uint8_t unsigned char
#define Light_uint16_t unsigned short
#define Light_uint32_t unsigned int
#define Light_uint64_t unsigned long long
#endif
#define Backlight_NTC_Max 10 /* 背光NTC阻值表格元素最大值 */
#define BacklightLevel_Max 10 /* 背光等级表格元素最大值 */
#define BackLight_Up_Timer 400 /* 背光精度上升1%的时间 单位 10ms */
#define BackLight_Down_Timer 200 /* 背光精度下降1%的时间 单位 10ms */
typedef struct //__attribute__((aligned(4)))
{
Light_uint16_t Temperature; /* 温度 */
Light_uint16_t Resistance; /* 阻值 */
} _st_Backlight_NtcTable;
typedef struct //__attribute__((aligned(4)))
{
Light_uint16_t BacklightLevel; /* 背光等级 */
Light_uint16_t BacklightDuty; /* 背光占空比 */
} _st_BacklightLevel;
typedef void (*SetPwm)(Light_uint16_t Pwm);
typedef Light_uint8_t (*SetPwmEnable)(void);
typedef Light_uint8_t (*SetPwmLevel)(void);
typedef Light_uint16_t (*GetNtcRes)(void);
typedef struct //__attribute__((aligned(4)))
{
SetPwm SetPwmCbk; /* 设置PWM回调函数 */
SetPwmEnable SetPwmEnCbk; /* 设置PWM使能回调函数 */
SetPwmLevel SetPwmLevelCbk; /* 背光等级回调函数 */
GetNtcRes NtcResCbk; /* 获取NTC电阻值回调函数 如无NTC传入空 */
_st_Backlight_NtcTable *BacklightNTCTable; /* NTC 数据表 */
_st_BacklightLevel *BacklightLevelTable; /* 背光等级数据表 */
} _st_BackLight_Init;
/**
* @brief 初始化背光模块,KL30/唤醒初始化调用一次即可
* @param backlightInit 背光初始化配置结构体指针,包含所需的回调函数和数据表。
* @note 调用此初始化前需先初始化硬件相关
*/
extern void Backlight_KL30_WakeUp_Init(_st_BackLight_Init *backlightInit);
/**
* @brief 初始化背光模块,休眠初始化调用一次即可
* @note 调用此初始化前需先初始化硬件相关
*/
extern void BackLight_Sleep_Init(void);
/**
* @brief 背光服务函数 必须10ms调用
*/
extern void BackLight_Service(void);
#endif
#include "BackLight_User.h"
#include "BackLight.h"
#include "TrmerM\TrmerM.h"
#define BACK_LIGHT_DAY 200
#define openLED_flag ((Get_CAN_Power_State() != PKEY_ON) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != POWER_CHECK_NULL))
uint8_t interact_PWM_Low_Duty = 0;
Backlight_User_OPT3004_st_t opt3004;
uint8_t g_u8BacklightUserDayTimecount = 0;
uint16_t u16Backlightcount = 0U;
uint8_t u8BacklightLevel = 0U;
/* 填写NTC阻值温度对应表*/
_st_Backlight_NtcTable BacklightNTCTable[Backlight_NTC_Max] =
{
/*温度 阻值 */
{ 550, 2709},
{ 600, 2224},
{ 650, 1832},
{ 700, 1518},
{ 750, 1263},
{ 800, 1056},
{ 850, 887},
{ 900, 748},
{ 950, 633},
{1000, 538},
};
/* 填写背光等级及占空比对应表 */
_st_BacklightLevel BacklightLevelTable[BacklightLevel_Max] =
{
/*背光等级 背光占空比 */
{1, 50}, /*夜间背光1级*/
{2, 100}, /*夜间背光2级*/
{3, 150}, /*夜间背光3级*/
{4, 200}, /*夜间背光4级*/
{5, 250}, /*夜间背光5级*/
{6, 100}, /*白天背光1级*/
{7, 200}, /*白天背光2级*/
{8, 300}, /*白天背光3级*/
{9, 400}, /*白天背光4级*/
{10, 500}, /*白天背光5级*/
};
/**
* @brief 获取背光使能回调函数
* 用于控制背光开启关闭
*/
uint8_t Get_BackLight_En(void)
{
if ((Common_Get_IG_Sts() == COMMON_POWER_ON) && (openLED_flag))
{
return 1;
}
else
{
return 0;
}
}
/**
* @brief 设置PWM回调函数
*/
void Set_Pwm_Cbk(uint16_t PWM)
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, PWM);
}
/**
* @brief 获取当前背光等级回调函数
*/
uint8_t Get_BackLight_Level(void)
{
// uint16_t u8PositionStatus = 0U;
// // u8PositionStatus = (Line_In_Get_Status(LINE_IN_PositionLight));
// if (u8PositionStatus == 1U)
// {
// return u8BacklightLevel;
// }
// else
// {
// return u8BacklightLevel + 5U;
// }
return 5;
}
/**
* @brief 获取当前显示背光等级函数
*/
uint8_t Get_BackLight_Level_Display(void)
{
return u8BacklightLevel;
}
// /**
// * @brief 获取当前NTC阻值 ,本项目没有NTC热敏电阻采集
// */
// uint16_t Get_NTC_Rec(void)
// {
// // uint16_t u16NTCresistance = 0U;
// // u16NTCresistance = ADC_Read_Signal(ADC_CH_NTC_R);
// // return u16NTCresistance;
// }
void BackLight_User_Init(void)
{
_st_BackLight_Init BackLightInit;
BackLightInit.SetPwmCbk = Set_Pwm_Cbk;
BackLightInit.SetPwmEnCbk = Get_BackLight_En;
BackLightInit.SetPwmLevelCbk = Get_BackLight_Level;
BackLightInit.NtcResCbk = ((void *)0);
BackLightInit.BacklightNTCTable = &BacklightNTCTable[0];
BackLightInit.BacklightLevelTable = &BacklightLevelTable[0];
Backlight_KL30_WakeUp_Init(&BackLightInit);
// opt3004.u8DayandNightSts = DAY_SCREEN;
// opt3004.u32Result = 0;
u8BacklightLevel = 3U;
}
void BackLight_Process(void)
{
if (openLED_flag)
{
//电量
if ((Get_EleDial_AllSOC_lenth() == 2) || (checkself_seg_Flag == 1))
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT03_PIN00, RTE_GPIO_LEVEL_HIGH);//百位
RTE_GPIO_Set_Level(RTE_GPIO_PORT02_PIN04, RTE_GPIO_LEVEL_HIGH);
}
else if(Get_EleDial_AllSOC_lenth() == 1)
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT03_PIN00, RTE_GPIO_LEVEL_LOW);
RTE_GPIO_Set_Level(RTE_GPIO_PORT02_PIN04, RTE_GPIO_LEVEL_HIGH);
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT03_PIN00, RTE_GPIO_LEVEL_LOW);
RTE_GPIO_Set_Level(RTE_GPIO_PORT02_PIN04, RTE_GPIO_LEVEL_LOW);
}
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT03_PIN00, RTE_GPIO_LEVEL_LOW);
RTE_GPIO_Set_Level(RTE_GPIO_PORT02_PIN04, RTE_GPIO_LEVEL_LOW);
}
}
void BackLight_Clock_All_Process(void)
{
if (openLED_flag && (Charge_OFF_Flag == 0))
{
//总计时间
if ((Get_Clock_All_lenth() == 2)|| (checkself_seg_Flag == 1))
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN05, RTE_GPIO_LEVEL_HIGH); //总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN06, RTE_GPIO_LEVEL_HIGH); //总计工作时长统计百十位_MCU_OUT
}
else if(Get_Clock_All_lenth() == 1)
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN05, RTE_GPIO_LEVEL_LOW); //总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN06, RTE_GPIO_LEVEL_HIGH); //总计工作时长统计百十位_MCU_OUT
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN05, RTE_GPIO_LEVEL_LOW); //总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN06, RTE_GPIO_LEVEL_LOW); //总计工作时长统计百十位_MCU_OUT
}
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN05, RTE_GPIO_LEVEL_LOW); //总计工作时长统计千位_MCU_OUT
RTE_GPIO_Set_Level(RTE_GPIO_PORT01_PIN06, RTE_GPIO_LEVEL_LOW); //总计工作时长统计百十位_MCU_OUT
}
}
void Interact_Light_Process(void)
{
#if (PART_NUMBER == RMR42E_60)
if ((Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != POWER_CHECK_NULL) && (Charge_OFF_Flag == 0))
{
TimerM_PWM_set_duty(TIMERM_COUNTER0, TIMERM_CHD, interact_PWM_Low_Duty * 10);
}
else
{
TimerM_PWM_set_duty(TIMERM_COUNTER0, TIMERM_CHD, 1000);
}
#endif
}
uint8_t Get_Interact_Light_State(void)
{
uint8_t stata = 0x0;
if(interact_PWM_Low_Duty == 0)
{
stata = 0x1;
}
else if(interact_PWM_Low_Duty == 30)
{
stata = 0x2;
}
else if(interact_PWM_Low_Duty == 50)
{
stata = 0x3;
}
return stata;
}
#ifndef BACKLIGHT_USER_H__
#define BACKLIGHT_USER_H__
#include "Application.h"
#include "Components.h"
/*NTC 降背光策略采用BYD策略
L超过60℃需要有背光策略,背光策略优先依据BYD策略
L温度要设计≥2℃的温度回差
注:BYD策略,如下:
采集温度达到60度  输出背光=当前背光等级亮度*95%
采集温度达到65度  输出背光=当前背光等级亮度*90%
采集温度达到70度  输出背光=当前背光等级亮度*85%
采集温度达到75度  输出背光=当前背光等级亮度*80%
采集温度达到80度  输出背光=当前背光等级亮度*75%
采集温度达到85度  输出背光=当前背光等级亮度*70%
采集温度达到88度  输出背光=当前背光等级亮度*20%
采集温度达到90度  输出背光=当前背光等级亮度*10
温度上升
2S下降1%
温度下降
4S上升1%
*/
#define BACKLIGHT_DELAY_NUM 15U /*背光延迟点亮等待时长 = (BACKLIGHT_DELAY_NUM * 10ms) */
#define BLACK_TO_WHITE_LUMINOUS_VALUE 2000U /*从黑背景切换到白背景时的临界光感值*/
#define WHITE_TO_BLACK_LUMINOUS_VALUE 900U /*从白背景切换到黑背景时的临界光感值*/
#define SCREEN_SWITCHOVER_DELAY_NUM 15U /*白天夜间模式切换光感滤波时间 = SCREEN_SWITCHOVER_HOLD_NUM * 100ms) */
typedef enum{
DAY_SCREEN = 0, /*白天模式、白背景*/
NIGHT_SCREEN, /*夜间模式、黑背景*/
}BackLight_Screen_Status_en_t;
/*光感数据存储结构体*/
typedef struct __attribute__((aligned(4)))
{
uint32_t u32Result;
uint8_t u8DayandNightSts;
}Backlight_User_OPT3004_st_t;
extern Backlight_User_OPT3004_st_t opt3004;
extern uint16_t u16Backlightcount;
extern uint8_t u8BacklightLevel;
extern void BackLight_User_Init(void);
extern uint8_t Get_BackLight_Level_Display(void);
extern uint8_t interact_PWM_Low_Duty;
void BackLight_Process(void);
void Interact_Light_Process(void);
void BackLight_Clock_All_Process(void);
extern uint8_t Get_Interact_Light_State(void);
#endif
#include "Components.h"
#include "Buzzer\Buzzer.h"
uint8_t BUZZER_ON = 0;
uint16_t Buzzer_time = 0;
uint8_t BuzzerReadyCount = 0U;
void Buzzer_KL30_Init(void)
{
BUZZER_ON = 0;
Buzzer_time = 0;
BuzzerReadyCount = 0U;
}
void Buzzer_KL15_Init(void)
{
}
void BUZZER_Init(void)
{
#if (PART_NUMBER == RMR42E_60)
Buzzer_time = 0;
BUZZER_ON = 0;
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_LOW); // OUT_EN_1
#endif
}
void Buzzer_Service(void)
{
#if (PART_NUMBER == RMR42E_60)
if ((Get_CAN_Power_State() != PKEY_ON) && (Get_CAN_Power_State() != KEY_OFF) && (Get_CAN_Power_State() != POWER_CHECK_NULL))
{
if (g_u8TYWClearEepromFlag >= 1)
{
;
}
else
{
BUZZER_Init();
}
}
else if (Get_CAN_Power_State() == PKEY_ON)
{
if (Buzzer_time == 0)
{
;
}
if (FLASH_SYNC_05Hz)
{
if (Buzzer_time <= 6000)
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_HIGH); // OUT_EN_1
BUZZER_ON = 1;
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_LOW); // OUT_EN_1
BUZZER_ON = 0;
}
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_LOW); // OUT_EN_1
BUZZER_ON = 0;
}
if (Buzzer_time < 0xFFFF)
{
Buzzer_time++;
}
}
else
{
BUZZER_Init();
}
#else
if (Get_TelltalesLedSts(em_LED_Grass_Full_R) == 1U)
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_HIGH);
BUZZER_ON = 1U;
}
else if (Get_TelltalesLedSts(em_LED_READY_G) == 1U)
{
if (BuzzerReadyCount < 20U)
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_HIGH);
BUZZER_ON = 1U;
BuzzerReadyCount ++;
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_LOW);
BUZZER_ON = 0U;
}
}
else
{
RTE_GPIO_Set_Level(RTE_GPIO_PORT04_PIN01, RTE_GPIO_LEVEL_LOW);
BUZZER_ON = 0U;
BuzzerReadyCount = 0U;
}
#endif
}
/******************************************************************************
函数名:Get_Buzzer_Status
功 能:获取显示燃油格数函数
参 数:无
返回值:Fuel.FuelSeg 显示的电量值 x1
******************************************************************************
注 意:该函数必须每 ms被调用一次
******************************************************************************/
uint8_t Get_Buzzer_Status(void)
{
return BUZZER_ON;
}
#ifndef BUZZER_H__
#define BUZZER_H__
#include "Application.h"
#include "Components.h"
extern uint16_t Buzzer_time;
extern uint8_t BUZZER_ON;
extern void Buzzer_KL30_Init(void);
extern void Buzzer_KL15_Init(void);
extern void Buzzer_Service(void);
extern void BUZZER_Init(void);
extern uint8_t Get_Buzzer_Status(void);
#endif
......@@ -12,37 +12,57 @@ void Can_Set_Buff_3A2(canlib_uint8_t CopyData[])
p3A2 = (CANMsg3A2Union *)CopyData;
if (p3A2 != (void *)0)
{
p3A2->Sig.ICU_POWERStateFB = Get_CAN_Power_State();
p3A2->Sig.ICU_KL15State = (Get_CAN_Power_State() != KEY_OFF);
p3A2->Sig.ICU_LEDLightState = Get_LINE_IN_BigLED();
p3A2->Sig.ICU_BuzzerState = BUZZER_ON;//蜂鸣器
p3A2->Sig.Res0 = 0;
p3A2->Sig.ICU_IndicatorLightState = Get_Interact_Light_State();
p3A2->Sig.ICU_IndicatorLightPowerState = 1;
p3A2->Sig.ICU_GrassFullState = Get_LINE_IN_GrassFull();
p3A2->Sig.Res1 = 0x0;
p3A2->Sig.Res2 = 0x00;
p3A2->Sig.Res3 = 0x00;
p3A2->Sig.Res4 = 0x00;
p3A2->Sig.Res5 = 0x00;
p3A2->Sig.Res6 = 0x00;
p3A2->Sig.Res7 = 0x00;
// p3A2->Sig.ICU_MasterBMSCommunicatlost = 1;
// p3A2->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_VCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x125_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.Res0 = 0x0;
// p3A2->Sig.Res1 = 0x00;
// p3A2->Sig.Res2 = 0x00;
// p3A2->Sig.Res3 = 0x00;
// p3A2->Sig.Res4 = 0x00;
// p3A2->Sig.Res5 = 0x00;
// p3A2->Sig.Res6 = 0x00;
// p3A2->Sig.Res7 = 0x00;
#if (PART_NUMBER == RMR42E_60)
p3A2->Sig.ICU_POWERStateFB = Get_CAN_Power_State();
p3A2->Sig.ICU_KL15State = (Get_CAN_Power_State() != KEY_OFF);
p3A2->Sig.ICU_LEDLightState = Get_LINE_IN_BigLED();
p3A2->Sig.ICU_BuzzerState = BUZZER_ON;//蜂鸣器
p3A2->Sig.Res0 = 0;
p3A2->Sig.ICU_IndicatorLightState = Get_Interact_Light_State();
p3A2->Sig.ICU_IndicatorLightPowerState = 1;
p3A2->Sig.ICU_GrassFullState = Get_LINE_IN_GrassFull();
p3A2->Sig.Res1 = 0x0;
p3A2->Sig.Res2 = 0x00;
p3A2->Sig.Res3 = 0x00;
p3A2->Sig.Res4 = 0x00;
p3A2->Sig.Res5 = 0x00;
p3A2->Sig.Res6 = 0x00;
p3A2->Sig.Res7 = 0x00;
// p3A2->Sig.ICU_MasterBMSCommunicatlost = 1;
// p3A2->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.ICU_VCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x125_Msg)) == CAN_SIG_NORMAL);
// p3A2->Sig.Res0 = 0x0;
// p3A2->Sig.Res1 = 0x00;
// p3A2->Sig.Res2 = 0x00;
// p3A2->Sig.Res3 = 0x00;
// p3A2->Sig.Res4 = 0x00;
// p3A2->Sig.Res5 = 0x00;
// p3A2->Sig.Res6 = 0x00;
// p3A2->Sig.Res7 = 0x00;
#else
if (Get_CAN_Power_State() == KEY_ACC)
{
p3A2->Sig.ICU_PowerEnable = 0x1U;
}
else
{
p3A2->Sig.ICU_PowerEnable = 0x0U;
}
p3A2->Sig.ICU_LEDLightState = Get_TelltalesLedSts(em_LED_LED_Open_W);
p3A2->Sig.ICU_BuzzerState = Get_Buzzer_Status();
p3A2->Sig.ICU_GrassFullState = Get_TelltalesLedSts(em_LED_Grass_Full_R);
#endif
}
}
void Can_Set_Buff_3A7(canlib_uint8_t CopyData[])
{
#if (PART_NUMBER == RMR42E_60)
CANMsg3A7Union *p3A7;
uint8_t i = 0;
for (i = 0; i < 8; i++)
......@@ -52,23 +72,25 @@ void Can_Set_Buff_3A7(canlib_uint8_t CopyData[])
p3A7 = (CANMsg3A7Union *)CopyData;
if (p3A7 != (void *)0)
{
p3A7->Sig.ICU_MasterBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A20_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_VCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x125_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.Res0 = 0x0;
p3A7->Sig.Res1 = 0x00;
p3A7->Sig.Res2 = 0x00;
p3A7->Sig.Res3 = 0x00;
p3A7->Sig.Res4 = 0x00;
p3A7->Sig.Res5 = 0x00;
p3A7->Sig.Res6 = 0x00;
p3A7->Sig.Res7 = 0x00;
p3A7->Sig.ICU_MasterBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A20_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_SlaveBMSCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x18200A21_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_MCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x157_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.ICU_VCUCommunicatlost = (CAN_MSG_Status(&CAN_CH0_CanMsgOp, Co_Can_ConvertSubID_CAN_CH0(CAN_CH0_ID_CAN_0x125_Msg)) == CAN_SIG_NORMAL);
p3A7->Sig.Res0 = 0x0;
p3A7->Sig.Res1 = 0x00;
p3A7->Sig.Res2 = 0x00;
p3A7->Sig.Res3 = 0x00;
p3A7->Sig.Res4 = 0x00;
p3A7->Sig.Res5 = 0x00;
p3A7->Sig.Res6 = 0x00;
p3A7->Sig.Res7 = 0x00;
}
#endif
}
void Can_Set_Buff_393(canlib_uint8_t CopyData[])
{
#if (PART_NUMBER == RMR42E_60)
CANMsg393Union *p393;
uint8_t i = 0;
for (i = 0; i < 8; i++)
......@@ -88,4 +110,33 @@ void Can_Set_Buff_393(canlib_uint8_t CopyData[])
p393->Sig.ICU_ProtoSubVer = 7;
p393->Sig.Res1 = 0x00;
}
#endif
}
void Can_Set_Buff_3D4(canlib_uint8_t CopyData[])
{
#if (PART_NUMBER == G54_A01)
CANMsg3D4Union *p3D4;
uint8_t i = 0;
for (i = 0; i < 8; i++)
{
CopyData[i] = 0xFFU;
}
p3D4 = (CANMsg3D4Union *)CopyData;
if (p3D4 != (void *)0)
{
p3D4->Sig.ICU_MasterBMSCommunicatlost = 0;
p3D4->Sig.ICU_SlaveBMSCommunicatlost = 0;
p3D4->Sig.ICU_MCUCommunicatlost = 0;
p3D4->Sig.ICU_VCUCommunicatlost = 0;
p3D4->Sig.Res0 = 0x0;
p3D4->Sig.Res1 = 0x00;
p3D4->Sig.Res2 = 0x00;
p3D4->Sig.Res3 = 0x00;
p3D4->Sig.Res4 = 0x00;
p3D4->Sig.Res5 = 0x00;
p3D4->Sig.Res6 = 0x00;
p3D4->Sig.Res7 = 0x00;
}
#endif
}
......@@ -8,41 +8,67 @@
void Can_Set_Buff_3A2(canlib_uint8_t CopyData[]);
void Can_Set_Buff_3A7(canlib_uint8_t CopyData[]);
void Can_Set_Buff_393(canlib_uint8_t CopyData[]);
void Can_Set_Buff_3D4(canlib_uint8_t CopyData[]);
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t ICU_POWERStateFB : 4;
uint8_t ICU_KL15State : 1;
uint8_t ICU_LEDLightState : 1;
uint8_t ICU_BuzzerState : 1;
uint8_t Res0: 1;
uint8_t ICU_IndicatorLightState : 3;
uint8_t ICU_IndicatorLightPowerState : 1;
uint8_t ICU_GrassFullState : 1;
uint8_t Res1: 3;
uint8_t Res2: 8;
uint8_t Res3: 8;
#if (PART_NUMBER == RMR42E_60)
uint8_t ICU_POWERStateFB : 4;
uint8_t ICU_KL15State : 1;
uint8_t ICU_LEDLightState : 1;
uint8_t ICU_BuzzerState : 1;
uint8_t Res0: 1;
uint8_t ICU_IndicatorLightState : 3;
uint8_t ICU_IndicatorLightPowerState : 1;
uint8_t ICU_GrassFullState : 1;
uint8_t Res1: 3;
uint8_t Res2: 8;
uint8_t Res3: 8;
uint8_t Res4: 8;
uint8_t Res5: 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
// uint8_t ICU_MasterBMSCommunicatlost : 1;
// uint8_t ICU_SlaveBMSCommunicatlost : 1;
// uint8_t ICU_MCUCommunicatlost : 1;
// uint8_t ICU_VCUCommunicatlost : 1;
// uint8_t Res0: 4;
// uint8_t Res1: 8;
// uint8_t Res2: 8;
// uint8_t Res3: 8;
// uint8_t Res4: 8;
// uint8_t Res5: 8;
// uint8_t Res6 : 8;
// uint8_t Res7 : 8;
uint8_t Res4: 8;
uint8_t Res5: 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
// uint8_t ICU_MasterBMSCommunicatlost : 1;
// uint8_t ICU_SlaveBMSCommunicatlost : 1;
// uint8_t ICU_MCUCommunicatlost : 1;
// uint8_t ICU_VCUCommunicatlost : 1;
// uint8_t Res0: 4;
// uint8_t Res1: 8;
// uint8_t Res2: 8;
// uint8_t Res3: 8;
// uint8_t Res4: 8;
// uint8_t Res5: 8;
// uint8_t Res6 : 8;
// uint8_t Res7 : 8;
#else
uint8_t Res0 : 4;
uint8_t ICU_PowerEnable : 1;
uint8_t ICU_LEDLightState : 1;
uint8_t ICU_BuzzerState : 1;
uint8_t Res1 : 1;
uint8_t Res2 : 4;
uint8_t ICU_GrassFullState : 1;
uint8_t Res3 : 3;
uint8_t Res4 : 8;
uint8_t Res5 : 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
uint8_t Res8 : 8;
uint8_t Res9 : 8;
#endif
} Sig;
} CANMsg3A2Union;
......@@ -84,5 +110,27 @@ typedef union
} Sig;
} CANMsg393Union;
typedef union
{
uint8_t Msg [ 8 ];
struct
{
uint8_t ICU_MasterBMSCommunicatlost : 1;
uint8_t ICU_SlaveBMSCommunicatlost : 1;
uint8_t ICU_MCUCommunicatlost : 1;
uint8_t ICU_VCUCommunicatlost : 1;
uint8_t Res0: 4;
uint8_t Res1: 8;
uint8_t Res2: 8;
uint8_t Res3: 8;
uint8_t Res4: 8;
uint8_t Res5: 8;
uint8_t Res6 : 8;
uint8_t Res7 : 8;
} Sig;
} CANMsg3D4Union;
#endif
......@@ -37,6 +37,13 @@ extern uint8_t Get_CAN_Num_SBMS_Soc(void);
extern uint8_t Get_CAN_Num_SMCU_ErrorGrage(void);
extern uint8_t Get_CAN_Power_State(void);
extern void Set_CAN_ALL_Signal(void);
extern void CAN_0x18E_Receive(uint8_t CopyData []);
extern void CAN_0x225_Receive(uint8_t CopyData []);
extern void CAN_0x234_Receive(uint8_t CopyData []);
extern void CAN_0x38E_Receive(uint8_t CopyData []);
extern void CAN_0x220_Receive(uint8_t CopyData []);
extern void CAN_0x16B_Receive(uint8_t CopyData []);
extern void CAN_0x22F_Receive(uint8_t CopyData []);
extern void CAN_0x170_Receive(uint8_t CopyData []);
#endif
......@@ -27,18 +27,18 @@ typedef struct
uint8_t Status;
uint8_t Timer;
uint8_t Cnt;
uint8_t ReportDTCCnt;
uint8_t RecoverTimer;
} RSCAN0BusoffMonitorStruct;
extern void CAN_TX_Init(void);
extern void Can_Tx_Apply_Buff(void);
extern void Can_RX_Apply_Buff(void);
extern void Can_BusOff_Recover(uint8_t deltaTime);
extern void COM_CAN_Init(void);
extern void Can_Init(void);
extern void Can_Rx_Cak(CanTxRxMsg *Msg);
extern void Busoff(void);
extern uint8_t COM_APP_Process(st_CAN_Msg *Msg);
extern void Can_Write(st_CAN_Msg *Msg);
......
......@@ -4,6 +4,11 @@
#include "Components.h"
#define RMR42E_60 (0U) /*纯电动零件号*/
#define G54_A01 (1U) /*混动零件号*/
#define PART_NUMBER G54_A01 /*当前程序零件号*/
/*COMMON INTERFACE*/
typedef enum
......@@ -12,11 +17,6 @@ typedef enum
CAN_SIG_LOST = 0x55U,
} CAN_MSG_Status_t;
typedef enum
{
EX_OK = 0u,
EX_ERR,
} _Fun_Res;
typedef enum
{
......
This diff is collapsed.
#ifndef DATA_FUEL_H__
#define DATA_FUEL_H__
#include "Application.h"
#include "Components.h"
typedef struct //__attribute__((aligned(4)))
{
uint8_t FuelSeg; //燃油格数
uint8_t FuelSegDis; //燃油显示格数
uint8_t FuelValid; //燃油有效状态
uint8_t FuelStatusCount; /*燃油状态计数*/
}FuelStruct_st_t;
extern FuelStruct_st_t Fuel;
extern void Data_Fuel_KL30_Init(void);
extern void Data_Fuel_KL15_Init(void);
extern void Data_Fuel_Service(void);
extern uint8_t Get_FuelSeg_Display(void);
extern uint8_t Get_FuelStatus_Valid(void);
extern uint8_t Get_FuelPilotLamp_Status(void);
#endif
This diff is collapsed.
#ifndef DATA_SOC_H__
#define DATA_SOC_H__
#include "Application.h"
#include "Components.h"
#define SocUpdateTime 10
typedef enum
{
Soc_Blue,
Soc_Red,
Soc_Yellow,
Soc_Max,
}_Soc_Color;
typedef struct //__attribute__((aligned(4)))
{
uint8_t Value1; //电量1实际值
uint8_t Value2; //电量2实际值
uint8_t Valid1; //电量1状态
uint8_t Valid2; //电量2状态
uint8_t Act_Seg1; /*电量1实际格数*/
uint8_t Act_Seg2; /*电量2实际格数*/
uint8_t Dis_Seg1; /*电量1显示格数*/
uint8_t Dis_Seg2; /*电量2显示格数*/
uint8_t Battery1Icon; /*电池1小图标状态*/
uint8_t Battery2Icon; /*电池2小图标状态*/
uint8_t AllSocValue; /*总SOC值*/
uint8_t AllSocValid; /*总SOC状态*/
}SocStruct_st_t;
extern void Data_Soc_KL30_Init(void);
extern void Data_Soc_KL15_Init(void);
extern void Data_Soc_Service(void);
extern uint8_t Get_Soc1Num_Display(void);
extern uint8_t Get_Soc2Num_Display(void);
extern uint8_t Get_Soc1_Valid(void);
extern uint8_t Get_Soc2_Valid(void);
extern uint8_t Get_CAN_Num_MBMS_Soc_1_Grid(void);
extern uint8_t Get_CAN_Num_SBMS_Soc_2_Grid(void);
extern uint8_t Get_Soc1_Battery_Icon(void);
extern uint8_t Get_Soc2_Battery_Icon(void);
extern uint8_t Get_AllSocValue(void);
extern uint8_t Get_AllSocValid(void);
extern uint8_t Get_EleDial_AllSOC_lenth(void);
#endif
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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