Commit ee3a95ec authored by 张金硕's avatar 张金硕

Merge branch 'jinshuo' into 'dev'

Jinshuo

See merge request !103
parents c4794fb2 944e9564
......@@ -748,6 +748,16 @@
<FileType>4</FileType>
<FilePath>..\..\..\..\Source\Application\Hysteresis_V10_239.lib</FilePath>
</File>
<File>
<FileName>Data_OilPressure.c</FileName>
<FileType>1</FileType>
<FilePath>..\..\..\..\Source\Application\Data_OilPressure.c</FilePath>
</File>
<File>
<FileName>Data_OilPressure.h</FileName>
<FileType>5</FileType>
<FilePath>..\..\..\..\Source\Application\Data_OilPressure.h</FilePath>
</File>
</Files>
</Group>
<Group>
......
......@@ -64,11 +64,8 @@ typedef enum {
following is an example for different system frequencies */
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
#if (HAS_BOOTLOADER == 1U)
#if (HAS_BOOTLOADER != 1U)
const uint8_t user_opt_data[4] __attribute__((used)) __attribute__((section(".ARM.__AT_0x0000C4C0"))) =
#else
const uint8_t user_opt_data[4] __attribute__((used)) __attribute__((section(".ARM.__AT_0x000000C0"))) =
#endif
{
/**
......@@ -132,7 +129,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>
0x72,
0x73,
/**
* @brief HOCO Control BYTE (FRQSEL)
......@@ -170,7 +167,7 @@ const uint8_t user_opt_data[4] __attribute__((used)) __attribute__((section(".AR
0xFF
};
#endif
//-------- <<< end of configuration section >>> ------------------
/** @} */ /* End of group Configuration_of_User_Option_Byte */
......
......@@ -7,7 +7,8 @@
Light_uint8_t LightADCompleteFlg = 0u;
Light_uint16_t LightR = 0u;
Light_uint16_t LightR_Status = 0;
Light_uint16_t LightR_Status_Count = 0u;
Light_uint16_t LightR_Status_NCount = 0u;
Light_uint16_t LightR_Status_DCount = 0u;
Light_uint16_t NtcDataCount;
Light_uint16_t NtcData[LIGHT_DATA_NUM] = {0};
typedef struct
......@@ -206,22 +207,40 @@ void BackLight_Get_curDuty(void)
NTCresistance = ADC_Read_Signal(ADC_CH_NTC_TEMP);
/* 计算温度值 */
NTCDegrees = NTC_Get_Degrees(NTCResBoard ,NTCDegreesBoard, sizeof(NTCResBoard)/sizeof(uint16_t), NTCresistance);
if ( NTCDegrees < 650 )
if ( NTCDegrees < 600 )
{
g_stBL.destFactor = 100;
}
else if ( NTCDegrees <= 850 )
{
wtemp = (850 - NTCDegrees);
wtemp *= 3;
wtemp += 400;
wtemp *= 1;
wtemp += 700;
wtemp /= 10;
g_stBL.destFactor = wtemp;
/* 85°为40%占空比,65°为100%占空比, 1°大概为3% */
/* 85°为70%占空比,60°为95%占空比, 1°大概为1% */
}
else if(NTCDegrees <= 880 )
{
wtemp = (880 - NTCDegrees);
wtemp *= 16;
wtemp += 200;
wtemp /= 10;
g_stBL.destFactor = wtemp;
/* 88°为20%占空比,85°为70%占空比, 1°大概为16.6% */
}
else if(NTCDegrees <= 900 )
{
wtemp = (900 - NTCDegrees);
wtemp *= 5;
wtemp += 100;
wtemp /= 10;
g_stBL.destFactor = wtemp;
/* 90°为10%占空比,88°为20%占空比, 1°大概为5% */
}
else
{
g_stBL.destFactor = 40;
g_stBL.destFactor = 10;
}
if ( (g_stBL.curFactor < g_stBL.destFactor) && (NTCDegrees < 750) )
......@@ -309,17 +328,17 @@ void BackLight_Get_curDuty(void)
g_stBL.u16TftdestDuty = 100;
}
/* 如果当前占空比小于100,那还是按照上次结果显示 */
if(g_stBL.u16TftcurDuty < 100)
{
// /* 如果当前占空比小于100,那还是按照上次结果显示 */
// if(g_stBL.u16TftcurDuty < 100)
// {
// g_stBL.u16TftcurDuty = g_stBL.u16TftdestDuty;
// }
// /* 逐步逼近目标占空比 */
// else
// {
// U16_Data_Gradient((uint16_t *)&g_stBL.u16TftcurDuty, g_stBL.u16TftdestDuty, 1u, (uint16_t *)&g_stBL.u16DialDampingTimer, 1u);
// }
g_stBL.u16TftcurDuty = g_stBL.u16TftdestDuty;
}
/* 逐步逼近目标占空比 */
else
{
U16_Data_Gradient((uint16_t *)&g_stBL.u16TftcurDuty, g_stBL.u16TftdestDuty, 1u, (uint16_t *)&g_stBL.u16DialDampingTimer, 1u);
}
}
#if 0
......@@ -477,20 +496,24 @@ void BackLight_Process(void)
if(LightR <= 200)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
LightR_Status_NCount++;
if(LightR_Status_NCount>=150)
{
LightR_Status_Count = 0;
LightR_Status_NCount = 150;
LightR_Status_DCount = 0;
LightR_Status = 0;
g_u8Display_Mode = ModeNIGHT;
}
}
else if(LightR > 200)
{
LightR_Status_Count++;
if(LightR_Status_Count>=150)
LightR_Status_DCount++;
if(LightR_Status_DCount>=150)
{
LightR_Status_Count = 0;
LightR_Status_DCount = 150;
LightR_Status_NCount = 0;
LightR_Status = 1;
g_u8Display_Mode = ModeDAY;
}
}
/* 系统的意思是要当前背光等级基础上的80%和20%,不是直接设置背光 */
......@@ -502,18 +525,18 @@ void BackLight_Process(void)
{
BackLight_Set_Lvl(Light_Lvl_4);
}*/
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 if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
if(Menu_Item_Select_Get(MENU_ITEM_BACKLIGHT_AUTO))
{
if(Backlight_GetPwmLevel() == 1U)
{
......@@ -566,26 +589,26 @@ void BackLight_Process(void)
}
/* 数据处理,包括NTC功能 */
BackLight_Get_curDuty();
if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO))
{
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, g_stBL.u16TftcurDuty);
}
// if(Menu_Item_Select_Get(MENU_ITEM_SELECT_AUTO))
// {
// 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, g_stBL.u16TftcurDuty);
// }
}
else
{
......
......@@ -8,6 +8,8 @@ uint8_t GetPhoneBookVaild = 0;
uint8_t TextInit = 0;
uint8_t SetUUIDTimes = 0;
uint16_t LastPhoneBookTotalCount = 0;
uint8_t LastCurIgnSt = POWER_STATE_IGN_OFF;
uint8_t IOState = 0;
_PICID_Struct PicObj;
_QRCODE_RECT QRCode_Rect;
const uint8_t HJBlueToothName[9]= {"HJ750"};
......@@ -47,6 +49,14 @@ uint8_t MCUVersionASCLLList[26] =
void TextService(void);
void BlueTooth_IGOFF_INIT(void)
{
GetBlueToothVaild =0;
OTA_Update_Flag = 0;
SetBluetoothCloseCount = 0;
SetBluetoothTurnXX(0);
SetUpdateCtrl(0,QRCode_Rect);
}
void BlueToothService(void)
{
if(SYS_OPR_STAT_IGN_ON)
......@@ -61,18 +71,30 @@ void BlueToothService(void)
}
else
{
SetBluetoothCloseCount++;
if(GetBlueToothVaild == 1)
{
if(SetBluetoothCloseCount < 30)
{
// if(SetBluetoothCloseCount < 30)
// {
// SetBluetoothTurnXX(0);
// }
// else
// {
// GetBlueToothVaild = 0;
// SetBluetoothCloseCount = 0;
// }
// SetBluetoothCloseCount++;
SetBluetoothTurnXX(0);
GetBlueToothVaild = 0;
}
else
if(SetBluetoothCloseCount >= 5)
{
GetBlueToothVaild = 0;
SetBluetoothTurnXX(0);
SetBluetoothCloseCount = 0;
}
SetBluetoothCloseCount++;
else
{
;
}
}
......@@ -146,10 +168,22 @@ void BlueToothService(void)
}
else
{
GetBlueToothVaild =0;
OTA_Update_Flag = 0;
SetBluetoothTurnXX(0);
SetUpdateCtrl(0,QRCode_Rect);
;
}
if (LastCurIgnSt != System_FUN_KL15_Status_Get())
{
if (SYS_OPR_STAT_IGN_ON)
{
IOState = IOState & 0x02;
PackedTransfer_EasyNavigation(IOState);
}
else
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);
IOState = IOState | 0x01;
PackedTransfer_EasyNavigation(IOState);
}
LastCurIgnSt = System_FUN_KL15_Status_Get();
}
}
......
......@@ -25,6 +25,8 @@ typedef struct {
#define INFORMATION_VERSION_DATE "20241015"
#define SW_EXTERNAL_VERSION "100"
#define POWER_STATE_IGN_OFF 0u
#define POWER_STATE_IGN_ON 1u
static const uint8_t DATA_Version[8] = {INFORMATION_VERSION_DATE};
static const uint8_t SW_Version[3] = {SW_EXTERNAL_VERSION};
......@@ -41,6 +43,7 @@ static const uint8_t SW_Version[3] = {SW_EXTERNAL_VERSION};
extern void BlueToothService(void);
extern uint8_t Get_Talking_PhoneBookValid(void);
extern uint8_t Get_UUID_UDSStatus(void);
extern void BlueTooth_IGOFF_INIT(void);
extern _PICID_Struct PicObj;
extern _QRCODE_RECT QRCode_Rect;
extern uint8_t PhoneNumber[40];
......@@ -53,5 +56,6 @@ extern uint8_t TextFaultCodeNum[10];
extern uint8_t UUIDDisplay[42];
extern TEXT_STRUCT TextPara[];
extern uint8_t UUIDConfigBuf[21];
extern uint8_t IOState;
#endif
\ No newline at end of file
......@@ -3,7 +3,7 @@
#include "Hysteresis.h"
#define FAST_TIME 15 //20*20 400ms变化一格
#define NORMAL_TIME 500 //500*20 10s变化一格
#define Disconnected_TIME 25 //掉线时间
#define Disconnected_TIME 1 //掉线时间
#pragma ghs section bss = ".myNonInitArea"
//_Data_Cng Data_Cng_Percent;
//_Data_Cng Data_Cng_Pressure;
......@@ -19,6 +19,8 @@ DataCoolantTempSamplerStruct DataResCoolantTempSampler ;
uint8_t u8SelfCheckTime_Finish;
#define SelfCheckTime 60
uint16_t TEMP_SPEED;
uint8_t Lost_Flag;
uint16_t Lost_Time;
uint16_t time_temp;
uint16_t time_power_on = 0;
uint16_t time_lost = 0;
......@@ -114,6 +116,7 @@ void TEMP_KL30_Init ( void )
DataCoolantTemp_Dis.u8_CurSeg = 0;
DataCoolantTemp.TEMPSetp = 0;
DataCoolantTemp.u8_ResStatus = 0;
DataCoolantTemp.u8_Last_ResStatus = 0;
TEMP_SPEED = 0;
time_power_on = 0;
time_lost = 0;
......@@ -133,6 +136,7 @@ void TEMP_KL15_Init ( void )
DataCoolantTemp.u16Res_ADValue = 0;
DataCoolantTemp.u8Res_ADValid = 0;
DataCoolantTemp.u8_ResStatus = 0;
DataCoolantTemp.u8_Last_ResStatus = 0;
DataCoolantTemp_Dis.u8_CurSeg = 0;
DataResCoolantTempSampler.Cnt = 0;
DataCoolantTemp.TEMPMode = 0;
......@@ -175,7 +179,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
else if(Coolant_Temperature <= 2430)
{
Coolant_Temperature =0;
DataCoolantTemp.u8Can_Valid = 0;
DataCoolantTemp.u8Can_Valid = 1;
}
else
{
......@@ -249,7 +253,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
}
else
{
DataCoolantTemp.u8_ResStatus = 3;//当前状态为开路
DataCoolantTemp.u8_Last_ResStatus = 3;//当前状态为开路
DataCoolantTemp.u8Res_Valid = 0 ;
DataCoolantTemp.u16Res_Actual = 0 ;
DataResCoolantTempSampler.ResOpen_InActTimer = 0;
......@@ -274,7 +278,7 @@ void Data_Coolant_Temp_Processing_Service ( void )
}
if(DataCoolantTemp.u8Can_Valid || DataCoolantTemp.u8Res_Valid )
{
DataCoolantTemp.u8_ResStatus = 1;//当前状态正常
DataCoolantTemp.u8_Last_ResStatus = 1;//当前状态正常
}
if (DataCoolantTemp.u8Can_Valid == 1)
{
......@@ -285,20 +289,21 @@ void Data_Coolant_Temp_Processing_Service ( void )
DataCoolantTemp.Temp_Value = DataCoolantTemp.u16Res_Actual;
if(DataCoolantTemp.u16Res_ADValue < 40)
{
DataCoolantTemp.u8_ResStatus = 2;//当前状态为短路
DataCoolantTemp.u8_Last_ResStatus = 2;//当前状态为短路
DataCoolantTemp.TEMPMode = 2;
}
}
else
{
if(DataCoolantTemp.u8_ResStatus != 3)
if(DataCoolantTemp.u8_Last_ResStatus != 3)
{
DataCoolantTemp.u8_ResStatus = 0;
DataCoolantTemp.u8_Last_ResStatus = 0;
}
DataCoolantTemp.Temp_Value = 0;
}
TEMP_Gauges_Cal();
time_power_on++;
TEMP_SPEED = NORMAL_TIME;
if(time_power_on >= 100)//上电延时获取数据
{
time_power_on = 100;
......@@ -306,18 +311,28 @@ void Data_Coolant_Temp_Processing_Service ( void )
if(DataCoolantTemp.u8Can_Valid||DataCoolantTemp.u8Res_Valid)
{
time_lost = 0;
if(DataCoolantTemp.TEMPMode == 3)//掉线
if(DataCoolantTemp.TEMPMode ==3)//掉线
{
if(DataCoolantTemp.u8_ResStatus != 3)
{
TEMP_SPEED = FAST_TIME;
Lost_Flag = 1;
time_temp = 0;
}
else if(DataCoolantTemp.TEMPMode == 0)//自检
}
else if (DataCoolantTemp.TEMPMode == 2)
{
DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
if(DataCoolantTemp.u8_ResStatus != 2)
{
Lost_Flag = 1;
time_temp = 0;
}
if(DataCoolantTemp.TEMPMode == 3)
}
else if(DataCoolantTemp.TEMPMode == 0)//自检
{
DataCoolantTemp.TEMP_Fastime = 100;
DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
}
DataCoolantTemp.TEMPMode = 1;
}
else
......@@ -329,28 +344,42 @@ void Data_Coolant_Temp_Processing_Service ( void )
if(DataCoolantTemp.TEMPMode != 3)
{
DataCoolantTemp.TEMPMode = 3;
TEMP_SPEED = NORMAL_TIME;
time_temp = 0;
Lost_Flag = 1;
}
DataCoolantTemp.TEMPSetp = 0;
}
}
}
time_temp ++;
if(DataCoolantTemp.TEMP_Fastime>0)
{
DataCoolantTemp.TEMP_Fastime--;
}
if(DataCoolantTemp.TEMP_Fastime==0)
// if(DataCoolantTemp.u8_ResStatus==0)
// {
// DataCoolantTemp.u8_ResStatus = DataCoolantTemp.u8_Last_ResStatus;
// }
if(DataCoolantTemp.u8_ResStatus != DataCoolantTemp.u8_Last_ResStatus)
{
if(DataCoolantTemp.TEMPSetp == DataCoolantTemp_Dis.u8_CurSeg)
Lost_Time++;
if(Lost_Time > 150)
{
TEMP_SPEED = NORMAL_TIME;
time_temp = 0;
DataCoolantTemp.u8_ResStatus = DataCoolantTemp.u8_Last_ResStatus;
Lost_Time = 0;
Lost_Flag = 0;
DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
}
}
// if(Lost_Flag)
// {
// Lost_Time++;
// if(Lost_Time > 150)
// {
// DataCoolantTemp.u8_ResStatus = DataCoolantTemp.u8_Last_ResStatus;
// Lost_Time = 0;
// Lost_Flag = 0;
// DataCoolantTemp_Dis.u8_CurSeg = DataCoolantTemp.TEMPSetp;
// }
// }
time_temp ++;
if(time_temp>=TEMP_SPEED)
{
......
......@@ -31,7 +31,8 @@ typedef struct
uint8_t TEMPSetp;
uint8_t TEMPMode;
uint16_t TEMP_Fastime ;
uint8_t u8_ResStatus //
uint8_t u8_ResStatus;
uint8_t u8_Last_ResStatus;
}DataCoolantTempStruct; //水温数据结构
......
#include "Data_OilPressure.h"
#include "Components.h"
#define OIL_DATA_TIME 25u /*这里填写多长时间采集一个数据,单位ms*/
#define OIL_DATA_NUM 20u /*机油压力电阻采集数据总数 最大255*/
#define OIL_CAL_START 5u /*数据排序后取中间部分计算平均:起始*/
#define OIL_CAL_END 15u /*数据排序后取中间部分计算平均:结束*/
uint16_t g_u16OilData[OIL_DATA_NUM];
uint8_t g_u8OilDataCount = 0u;
// uint8_t g_u8OILStateInitFlag = 0u;
uint16_t OilPressureR = 0u; /*滤波后的机油压力电阻,精度0.1*/
uint8_t g_u8OilADCompleteFlg = 0u;
void Oil_Pressure_KL30_Init(void)
{
// g_u8OILStateInitFlag = 1u;
g_u8OilADCompleteFlg = 0u;
}
void Oil_Pressure_KL15_Init(void)
{
// g_u8OILStateInitFlag = 1u;
g_u8OilADCompleteFlg = 0u;
}
void Oil_R_Cal(uint8_t deltaTime)
{
uint16_t OilPressureRes = 0;
uint8_t i, j;
uint32_t temp32;
static uint16_t timeCount = 0;
// if(g_u8OILStateInitFlag)
// {
// OilPressureR = ADC_Read_Signal(ADC_CH_OIL_PRESSURE_R);
// }
if (timeCount >= OIL_DATA_TIME)
{
timeCount = 0;
if (g_u8OilDataCount < OIL_DATA_NUM)
{
/*获取机油压力电阻*/
OilPressureRes = ADC_Read_Signal(ADC_CH_OIL_PRESSURE_R);
/*四舍五入*/
if (OilPressureRes < 60000) //针对此项目机油压力采集电路补偿后的阻值
{
if (OilPressureRes % 10 >= 5)
{
OilPressureRes += 5;
}
}
else
{
OilPressureRes = 0xFFFF;
}
/*由小到大插入数据*/
for (i = 0; i < g_u8OilDataCount; i++)
{
if (OilPressureRes < g_u16OilData[i])
{
break;
}
}
for (j = g_u8OilDataCount; j > i; j--)
{
g_u16OilData[j] = g_u16OilData[j - 1];
}
g_u16OilData[i] = OilPressureRes;
g_u8OilDataCount++;
}
else
{
/*一组数据采集完毕,取中间部分计算平均值*/
temp32 = 0;
for (i = OIL_CAL_START; i < OIL_CAL_END; i++)
{
temp32 += g_u16OilData[i];
}
OilPressureR = temp32 / (OIL_CAL_END - OIL_CAL_START);
g_u8OilDataCount = 0;
g_u8OilADCompleteFlg = 1;
}
}
timeCount += deltaTime;
}
uint8_t Get_OilPressureStauts(void)
{
if(OilPressureR < 59500)
{
return 1U;
}
else
{
return 0u;
}
}
\ No newline at end of file
#ifndef DATA_OILPRESSURE_H
#define DATA_OILPRESSURE_H
#include "stdint.h"
void Oil_Pressure_KL30_Init(void);
void Oil_Pressure_KL15_Init(void);
void Oil_R_Cal(uint8_t deltaTime);
uint8_t Get_OilPressureStauts(void);
#endif
\ No newline at end of file
#include "FaultCode.h"
#include "CAN_CH0_CAN_Communication_Matrix.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};
FaultCodeList_t FaultCode_t;
uint32_t FaultCodeList [MaxFaultCode];
static uint8_t u8FaultCodeValid = 0;
uint32_t Get_FaultCodeDtc1(void)
{
......@@ -75,10 +70,10 @@ uint32_t Get_FaultCodeDtc1(void)
// DTC1 |= DTCM1 & 0xF;
// }
if (DTC1 == 0)
{
return 0XFFFF;
}
// if (DTC1 == 0)
// {
// return 0XFFFF;
// }
u16FaultCode = DTC1;
......@@ -148,226 +143,163 @@ uint32_t Get_FaultCodeDtc2(void)
// DTC2 |= DTCM2 & 0xF;
// }
if (DTC2 == 0)
{
return 0XFFFF;
}
// if (DTC2 == 0)
// {
// return 0XFFFF;
// }
u16FaultCode = DTC2;
return u16FaultCode;
}
uint16_t Get_FaultCodeNum(void)
/**
* @brief 故障码初始化函数
*/
void FaultCode_Init(void)
{
uint16_t u16FaultCode = 0x0000;
u16FaultCode = Get_CAN_CH0_ID_402_Sig_ECU_DTC1Amnt();
return u16FaultCode;
FaultCode_t.Get_FaultCode1_cbk = Get_FaultCodeDtc1;
FaultCode_t.Get_FaultCode2_cbk = Get_FaultCodeDtc2;
FaultCode_t.Get_FaultCodeNum_cbk = Get_CAN_CH0_ID_402_Sig_ECU_DTC1Amnt;
FaultCode_t.disp_timer = DISP_TIMER;
List_Init(&FaultCode_t, FaultCodeList, (uint8_t)MaxFaultCode);
}
uint16_t Get_FaultCodeValid(void)
uint8_t List_GetNum(FaultCodeList_t *CodeList)
{
return 1;
if(CodeList == NULL)
{
return 0;
}
return CodeList->tail - CodeList->hade;
}
/**
* @brief 故障码初始化函数
*/
void FaultCode_Init(void)
uint8_t List_Init(FaultCodeList_t *CodeList, uint32_t Arr[], uint8_t Len)
{
uint16_t i = 0;
for (i = 0; i < MaxFaultCode; i++)
if((CodeList == NULL) || (Arr == NULL))
{
stFaultCode[i].u16FaultCode = 0;
stFaultCode[i].u16FaultCodeCount = 0;
stFaultCodeBack[i].u16FaultCode = 0;
stFaultCodeBack[i].u16FaultCodeCount = 0;
stFaultCodetemp[i].u16FaultCode = 0;
stFaultCodetemp[i].u16FaultCodeCount = 0;
return 2;//空指针,初始化失败
}
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;
if(Len < 1)
{
return 1;//列表空
}
CodeList->code_list = Arr;
CodeList->len = Len;
CodeList->hade = 0;
CodeList->code_num = 0;
CodeList->tail = 0;
CodeList->disp = 0;
CodeList->TimeCount = 0;
return 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)
uint8_t List_Find(FaultCodeList_t *CodeList, uint32_t FaultCode)
{
uint16_t i = 0;
uint8_t Result = 1;
if ((u32FaultCode == 0XFFFF) || (u32FaultCode == 0))
if(CodeList == NULL)
{
return 2;
}
if (len == 1)
if(List_GetNum(CodeList) == 0)
{
return 1;
return 0;
}
for (i = 0; i < len; i++)
for(int i=CodeList->hade; i<CodeList->tail; i++)
{
if (u32FaultCode == FaultCodeGrpup[i].u16FaultCode)
if(CodeList->code_list[i] == FaultCode)
{
Result = 0;
return Result;
return 1;
}
}
return Result;
return 0;
}
/**
* 添加新的故障码到故障码数组中。
* @param faultCodes 指向故障码数组的指针。
* @param count 指向当前已添加故障码数量的指针。
* @param faultCode 要添加的故障码。
* @param len 实际故障码数量,用于检测数组中是否存在当前故障码
* @note 如果故障码数组已满或者新的故障码已存在,则不添加。
*/
void AddNewFaultCode(_st_FaultCode *faultCodes, uint16_t *count, uint32_t faultCode, uint16_t len)
uint8_t List_add(FaultCodeList_t *CodeList, uint32_t FaultCode)
{
if (*count >= MaxFaultCode || FaultCode_Check(faultCode, faultCodes, len) != 1)
if(CodeList == NULL)
{
return; // 数组已满或故障码已存在,不进行添加
return 3;
}
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)
if(FaultCode == 0)
{
Dtc1 = FaultCodeInit.callbacks[DTC1]();
return 4;//无效值:0
}
if (FaultCodeInit.callbacks[DTC2] != NULL)
if((CodeList->tail+1) >= CodeList->len)
{
Dtc2 = FaultCodeInit.callbacks[DTC2]();
return 1;//列表满
}
if (FaultCodeInit.callbacks[DTC3] != NULL)
if(List_Find(CodeList, FaultCode) != 0)
{
Dtc3 = FaultCodeInit.callbacks[DTC3]();
return 2;//已存在
}
CodeList->code_list[CodeList->tail] = FaultCode;
CodeList->tail++;
return 0;
}
if (FaultCodeInit.FaultCodeVaildCbk != NULL)
uint8_t List_Clear(FaultCodeList_t *CodeList)
{
if(CodeList == NULL)
{
Vaild = FaultCodeInit.FaultCodeVaildCbk();
return 2;
}
CodeList->hade = 0;
CodeList->tail = 0;
//CodeList->disp = 0;
//CodeList->code_num = 0;
return 0;
}
if (FaultCodeInit.FaultCodeNumCbk != NULL)
{
FaultCodeSum = FaultCodeInit.FaultCodeNumCbk();
}
if (FaultCodeSum > MaxFaultCode)
{
FaultCodeSum = MaxFaultCode;
}
if ((Vaild) && (FaultCodeSum > 0))
{
if (u16FaultCodeDtcCountBack < FaultCodeSum) /* 当前存储故障码是否小于实际故障码数量 */
//10ms
void FaultCode_Servers(void)
{
if(FaultCode_t.TimeCount < 2*FaultCode_t.disp_timer)
{
/* 存储故障码并检查数组中是否存在 */
AddNewFaultCode(stFaultCodeBack, &u16FaultCodeDtcCountBack, Dtc1, FaultCodeSum);
AddNewFaultCode(stFaultCodeBack, &u16FaultCodeDtcCountBack, Dtc2, FaultCodeSum);
FaultCode_t.TimeCount++;
}
/* 接收故障码大于0后进行显示 */
if (u16FaultCodeDtcCountBack > 0)
uint16_t FaultCodeNum = FaultCode_t.Get_FaultCodeNum_cbk();
if(FaultCode_t.code_num != FaultCodeNum)//故障码数量变化,清空
{
/* 当前存储故障码等于实际故障码数量 用于实时更新故障码*/
if (u16FaultCodeDtcCountBack == FaultCodeSum)
{
u16FaultCodeDtcCountBack = 0;
FaultCode_t.code_num = FaultCodeNum;
List_Clear(&FaultCode_t);
}
/* 更新故障码显示 */
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++)
if((List_GetNum(&FaultCode_t) > FaultCodeNum) )//故障码变化,清空
{
stFaultCode[i].u16FaultCode = 0;
stFaultCodetemp[i].u16FaultCode = 0;
stFaultCodeBack[i].u16FaultCode = 0;
}
List_Clear(&FaultCode_t);
}
if (stFaultCode[0].u16FaultCode != 0XFFFF)
if(FaultCodeNum != 0)
{
/* 故障码计时 */
if (stFaultCode[0].u16FaultCodeCount < FaultCodeCount)
List_add(&FaultCode_t, FaultCode_t.Get_FaultCode1_cbk());
if(FaultCodeNum > 1)
{
stFaultCode[0].u16FaultCodeCount += Cycle;
List_add(&FaultCode_t, FaultCode_t.Get_FaultCode2_cbk());
}
}
else
{
/* 计时结束 更新位置 */
stFaultCode[0].u16FaultCodeCount = 0;
tempFaultCode = stFaultCode[0].u16FaultCode;
if (FaultCodeSum > 1)
{
for (i = 0; i < FaultCodeSum - 1; i++)
}
uint32_t List_Display(FaultCodeList_t *CodeList)
{
if((CodeList == NULL) || (List_GetNum(CodeList) == 0))
{
stFaultCode[i].u16FaultCode = stFaultCode[i + 1].u16FaultCode;
}
stFaultCode[FaultCodeSum - 1].u16FaultCode = tempFaultCode;
}
}
return 0;
}
}
else
if(CodeList->TimeCount >= CodeList->disp_timer)
{
u8FaultCodeValid = 0;
for (i = 0; i < MaxFaultCode; i++)
CodeList->TimeCount = 0;
if(++(CodeList->disp) >= (CodeList->tail))
{
stFaultCode[i].u16FaultCode = 0;
stFaultCode[i].u16FaultCodeCount = 0;
stFaultCodeBack[i].u16FaultCode = 0;
stFaultCodeBack[i].u16FaultCodeCount = 0;
stFaultCodetemp[i].u16FaultCode = 0;
stFaultCodetemp[i].u16FaultCodeCount = 0;
CodeList->disp = CodeList->hade;
}
u16FaultCodeDtcCountBack = 0;
}
return CodeList->code_list[CodeList->disp];
}
/**
......@@ -375,27 +307,27 @@ void FaultCode_Service(uint16_t Cycle)
*/
uint32_t Get_Current_FaultCode(void)
{
return stFaultCode[0].u16FaultCode;
return List_Display(&FaultCode_t);
}
uint8_t Get_Current_Hight_FaultCode(void)
{
uint8_t u8FaultHight = 0;
u8FaultHight = ((stFaultCode[0].u16FaultCode)&(0xFF00))>>8;
u8FaultHight = ((List_Display(&FaultCode_t))&(0xFF00))>>8;
return u8FaultHight;
}
uint8_t Get_Current_Mid_FaultCode(void)
{
uint8_t u8FaultMid = 0;
u8FaultMid = ((stFaultCode[0].u16FaultCode)&(0x00FF));
u8FaultMid = ((List_Display(&FaultCode_t))&(0x00FF));
return u8FaultMid;
}
uint8_t Get_FaultCode_Valid(void)
{
return u8FaultCodeValid;
}
// uint8_t Get_FaultCode_Valid(void)
// {
// return u8FaultCodeValid;
// }
/*
*NAME : Get_FaultCode_Lost()
*FUNCTION : 获取发送故障码的CAN是否掉线
......
......@@ -6,55 +6,40 @@
#include <string.h>
/*故障码类型A can报文轮询发送方式*/
#define FaultCodeType_A 1
#define FaultCodeType FaultCodeType_A
#define MaxFaultCode 40
#define MaxFaultCode 72
#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;
#define DISP_TIMER 500
typedef struct
typedef uint32_t(*Get_FaultCode)(void);
typedef uint8_t(*Get_FaultCodeNum)(void);
typedef struct __attribute__((aligned(4)))
{
FaultCodeCallback callbacks[NUM_FAULT_TYPES];
FaultCodeNumback FaultCodeNumCbk;
FaultCodeValidback FaultCodeVaildCbk;
} _st_Init;
uint32_t *code_list; //故障码列表
uint8_t hade; //列表头
uint8_t tail; //列表尾
uint8_t code_num; //获取的故障码数量
uint8_t len; //故障码列表最大长度
uint8_t disp; //故障码显示下标
uint16_t TimeCount; //故障码循环显示用的定时器
uint16_t disp_timer; //故障码显示的超时时间,超时显示下一个
Get_FaultCode Get_FaultCode1_cbk; //获取故障码的回调函数1
Get_FaultCode Get_FaultCode2_cbk; //获取故障码的回调函数2
Get_FaultCodeNum Get_FaultCodeNum_cbk; //获取故障码数量的回调函数
}FaultCodeList_t;
uint8_t List_Init(FaultCodeList_t *CodeList, uint32_t Arr[], uint8_t Len);
extern void FaultCode_Service(uint16_t Cycle);
extern void FaultCode_Init(void);
void FaultCode_Init(void);
void FaultCode_Servers(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);
extern uint8_t Get_Current_Mid_FaultCode(void);
// extern uint8_t Get_FaultCode_Valid(void);
#endif
\ No newline at end of file
......@@ -48,76 +48,6 @@ static uint16_t AMT630H_Animation_DispPic = 0;
static uint16_t AMT630H_Animation_RefreshTime = 0;
static uint32_t AMT630H_Animation_RefreshTime_default = 0;
static const uint16_t BootAnimationList[AMT630H_ANIMATION_PIC_NUM] = {
Pic_1055_0_0,
Pic_1056_0_0,
Pic_1057_0_0,
Pic_1058_0_0,
Pic_1059_0_0,
Pic_1060_0_0,
Pic_1061_0_0,
Pic_1062_0_0,
Pic_1063_0_0,
Pic_1064_0_0,
Pic_1065_0_0,
Pic_1066_0_0,
Pic_1067_0_0,
Pic_1068_0_0,
Pic_1069_0_0,
Pic_1070_0_0,
Pic_1071_0_0,
Pic_1072_0_0,
Pic_1073_0_0,
Pic_1074_0_0,
Pic_1075_0_0,
Pic_1076_0_0,
Pic_1077_0_0,
Pic_1078_0_0,
Pic_1079_0_0,
Pic_1080_0_0,
Pic_1081_0_0,
Pic_1082_0_0,
Pic_1083_0_0,
Pic_1084_0_0,
Pic_1085_0_0,
Pic_1086_0_0,
Pic_1087_0_0,
Pic_1088_0_0,
Pic_1089_0_0,
Pic_1090_0_0,
Pic_1091_0_0,
Pic_1092_0_0,
Pic_1093_0_0,
Pic_1094_0_0,
Pic_1095_0_0,
Pic_1096_0_0,
Pic_1097_0_0,
Pic_1098_0_0,
Pic_1099_0_0,
Pic_1100_0_0,
Pic_1101_0_0,
Pic_1102_0_0,
Pic_1103_0_0,
Pic_1104_0_0,
Pic_1105_0_0,
Pic_1106_0_0,
Pic_1107_0_0,
Pic_1108_0_0,
Pic_1109_0_0,
Pic_1110_0_0,
Pic_1111_0_0,
Pic_1112_0_0,
Pic_1113_0_0,
Pic_1114_0_0,
Pic_1115_0_0,
Pic_1116_0_0,
Pic_1117_0_0,
Pic_1118_0_0,
Pic_1119_0_0,
Pic_1120_0_0,
Pic_1121_0_0,
Pic_1122_0_0,
Pic_1123_0_0,
Pic_1124_0_0,
Pic_1125_0_0,
Pic_1125_0_0,
Pic_1125_0_0,
......@@ -125,7 +55,76 @@ static const uint16_t BootAnimationList[AMT630H_ANIMATION_PIC_NUM] = {
Pic_1125_0_0,
Pic_1125_0_0,
Pic_1125_0_0,
Pic_1124_0_0,
Pic_1123_0_0,
Pic_1122_0_0,
Pic_1121_0_0,
Pic_1120_0_0,
Pic_1119_0_0,
Pic_1118_0_0,
Pic_1117_0_0,
Pic_1116_0_0,
Pic_1115_0_0,
Pic_1114_0_0,
Pic_1113_0_0,
Pic_1112_0_0,
Pic_1111_0_0,
Pic_1110_0_0,
Pic_1109_0_0,
Pic_1108_0_0,
Pic_1107_0_0,
Pic_1106_0_0,
Pic_1105_0_0,
Pic_1104_0_0,
Pic_1103_0_0,
Pic_1102_0_0,
Pic_1101_0_0,
Pic_1100_0_0,
Pic_1099_0_0,
Pic_1098_0_0,
Pic_1097_0_0,
Pic_1096_0_0,
Pic_1095_0_0,
Pic_1094_0_0,
Pic_1093_0_0,
Pic_1092_0_0,
Pic_1091_0_0,
Pic_1090_0_0,
Pic_1089_0_0,
Pic_1088_0_0,
Pic_1087_0_0,
Pic_1086_0_0,
Pic_1085_0_0,
Pic_1084_0_0,
Pic_1083_0_0,
Pic_1082_0_0,
Pic_1081_0_0,
Pic_1080_0_0,
Pic_1079_0_0,
Pic_1078_0_0,
Pic_1077_0_0,
Pic_1076_0_0,
Pic_1075_0_0,
Pic_1074_0_0,
Pic_1073_0_0,
Pic_1072_0_0,
Pic_1071_0_0,
Pic_1070_0_0,
Pic_1069_0_0,
Pic_1068_0_0,
Pic_1067_0_0,
Pic_1066_0_0,
Pic_1065_0_0,
Pic_1064_0_0,
Pic_1063_0_0,
Pic_1062_0_0,
Pic_1061_0_0,
Pic_1060_0_0,
Pic_1059_0_0,
Pic_1058_0_0,
Pic_1057_0_0,
Pic_1056_0_0,
Pic_1055_0_0,
};
void AMT630H_Animation_PlayProc(uint16_t PicIndex)
{
......@@ -133,6 +132,16 @@ void AMT630H_Animation_PlayProc(uint16_t PicIndex)
uint32_t tmpLen = 0;
SetPageGuid(GRAPHICS_PAGE_0, 1, 0, 0);
SetPageBackground(GRAPHICS_PAGE_0, PicIndex);
// if (AMT630H_Animation_DispPic == (AMT630H_ANIMATION_PIC_NUM - 30))
// {
// IOState = IOState | 0x02;
// PackedTransfer_EasyNavigation(IOState);
// }
// else
// {
// IOState = IOState & 0x01;
// PackedTransfer_EasyNavigation(IOState);
// }
PackedTransfer_Page();
// PackedTransfer_GetSwVer();
......@@ -413,7 +422,7 @@ void AMT630H_Main(void)
{
AMT630H_Animation_RefreshTime = 0;
AMT630H_Animation_PlayProc(BootAnimationList[AMT630H_Animation_DispPic]);
AMT630H_Animation_DispPic--;
AMT630H_Animation_DispPic++;
if(AMT630H_Animation_DispPic >= AMT630H_ANIMATION_PIC_NUM)
{
AMT630H_Animation_Finish = 1;
......@@ -425,12 +434,25 @@ void AMT630H_Main(void)
}
else
{
AMT630H_Animation_RefreshTime = 0;
PicObj.qr_logo_id = 0;//Pic_0234 小数字9 EA
PicObj.main_pic_id = Pic_0001; //转速红12
PicObj.update_pic_id = Pic_0233;//小数字8 E9
PicObj.second_menu = 0;
PicObj.navigation_task_id = Pic_0411;//红色小e 19B
if(g_u8Display_Mode == ModeDAY)
{
PicObj.qr_pic_id = Pic_0494;//请使用猎变APP扫码连接
}
else
{
PicObj.qr_pic_id = Pic_1031;//请使用猎变APP扫码连接
}
if(AMT630H_RefreshTime >= AMT630H_REFRESH_TIME)
{
AMT630H_RefreshTime = 0;
//AMT630H_GUI_DisplayProc();
SetPageGuid(GRAPHICS_PAGE_0, 1, 0, 0);
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);
PackedTransfer_Page();
}
......@@ -452,7 +474,7 @@ unsigned char AMT630H_isInitFinish(void)
void AMT630H_Animation_IGON(void)
{
AMT630H_Animation_Finish = 0;
AMT630H_Animation_DispPic = 76;
AMT630H_Animation_DispPic = 0;
}
unsigned char AMT630H_Animation_Finish_Flage(void)
{
......
......@@ -33,7 +33,7 @@ void AMT630H_GUI_SETTING(void);
void AMT630H_GUI_Quit(void);
void AMT630H_GUI_Phone_Connect(void);
void AMT630H_GUI_Fault_Information(void);
void AMT630H_GUI_FaultCode(uint8_t FaultCodeLost,uint8_t FaultCodevalid,uint8_t FaultCode_hight,uint8_t FaultCode_mid);
void AMT630H_GUI_FaultCode(uint8_t FaultCodeLost);
void AMT630H_GUI_Language_Information(void);
void AMT630H_GUI_Unit_Information(void);
void AMT630H_GUI_Display_Mode_Information(void);
......@@ -142,7 +142,7 @@ void AMT630H_GUI_Fault_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0168_350_290);
SetPagePic(GRAPHICS_PAGE_0, Pic_0169_353_227);/*历史故障*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0170_354_162);/*当前故障*/
AMT630H_GUI_FaultCode(Get_FaultCode_Lost(),Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode());
AMT630H_GUI_FaultCode(Get_FaultCode_Lost());
}
else if(g_u8Language == EN)
{
......@@ -159,7 +159,7 @@ void AMT630H_GUI_Fault_Information(void)
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_Lost(),Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode());
AMT630H_GUI_FaultCode(Get_FaultCode_Lost());
}
/*os MCU版本*/
/* RGB 0 0 0 --- 黑*/
......@@ -186,7 +186,7 @@ void AMT630H_GUI_Fault_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0356_353_227);/*历史故障*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0357_354_162);/*当前故障*/
AMT630H_GUI_FaultCode(Get_FaultCode_Lost(),Get_FaultCode_Valid(),Get_Current_Hight_FaultCode(),Get_Current_Mid_FaultCode());
AMT630H_GUI_FaultCode(Get_FaultCode_Lost());
}
else if(g_u8Language == EN)
{
......@@ -203,7 +203,7 @@ void AMT630H_GUI_Fault_Information(void)
SetPagePic(GRAPHICS_PAGE_0, Pic_0284_338_228);
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());
AMT630H_GUI_FaultCode(Get_FaultCode_Lost());
}
/*os MCU版本*/
/* RGB 0 0 0 --- 黑*/
......@@ -243,11 +243,9 @@ static uint16_t NumbeList_FaultCode_night[]={
uint8_t FaultCodevalid_monitor = 2;
/*故障码显示函数*/
static void AMT630H_GUI_FaultCode(uint8_t FaultCodeLost,uint8_t FaultCodevalid,uint8_t FaultCode_hight,uint8_t FaultCode_mid)
static void AMT630H_GUI_FaultCode(uint8_t FaultCodeLost)
{
if(FaultCodeLost == 1)
{
if(FaultCodevalid == 1)
{
if(g_u8Display_Mode == ModeDAY)
{
......@@ -268,7 +266,6 @@ static void AMT630H_GUI_FaultCode(uint8_t FaultCodeLost,uint8_t FaultCodevalid,u
SetPageText(GRAPHICS_PAGE_0, 0x6009, 610 , 164 , 200, ALIGN_LEFT, 0, TEXT_COLOR(0XFF,0XFF,0XFF,0XFF),TEXT_LINE_OFFSET(1,1));
}
}
}
else if(FaultCodeLost == 0)
{
if(g_u8Display_Mode == ModeDAY)
......@@ -3059,11 +3056,11 @@ static void AMT630H_GUI_PhoneConnect_Light()
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0472_251_485);
}
if(Get_TelltalesLedSts(em_LED_Oil_Pressure_Alert))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0466_874_488);
}
if(Get_TelltalesLedSts(em_LED_TCS) == 1)
// if(Get_TelltalesLedSts(em_LED_Oil_Pressure_Alert))
// {
// SetPagePic(GRAPHICS_PAGE_0, Pic_0466_874_488);
// }
if(Get_TelltalesLedSts(em_LED_TCS))
{
SetPagePic(GRAPHICS_PAGE_0, Pic_0473_172_490);
}
......@@ -4924,6 +4921,20 @@ uint8_t VechileSpeed = 0;
uint16_t KL30_VOLTAGE_Value = 0;
void AMT630H_GUI_BACKGRAND()
{
PicObj.qr_logo_id = 0;//Pic_0234 小数字9 EA
PicObj.main_pic_id = Pic_0632; //转速红12
PicObj.update_pic_id = Pic_0233;//小数字8 E9
PicObj.second_menu = 0;
PicObj.navigation_task_id = Pic_0411;//红色小e 19B
if(g_u8Display_Mode == ModeDAY)
{
PicObj.qr_pic_id = Pic_0494;//请使用猎变APP扫码连接
}
else
{
PicObj.qr_pic_id = Pic_1031;//请使用猎变APP扫码连接
}
PackedTransfer_DisplayPhoneMirrorQRcode(0, PicObj);
/*背景图*/
if(g_u8Display_Mode == ModeDAY)
{
......@@ -5216,12 +5227,19 @@ void AMT630H_GUI_SETTING()
/*进入OTA界面执行刷图和发送图片id*/
void AMT630H_GUI_Display_OTA_Page_Information(void)
{
PicObj.qr_logo_id = 0;
PicObj.main_pic_id = Pic_0382;
PicObj.qr_pic_id = Pic_0316;
PicObj.update_pic_id = Pic_0233;
PicObj.qr_logo_id = 0;//Pic_0234 小数字9 EA
PicObj.main_pic_id = Pic_0632; //转速红12
PicObj.update_pic_id = Pic_0233;//小数字8 E9
PicObj.second_menu = 0;
PicObj.navigation_task_id = 0;
PicObj.navigation_task_id = Pic_0411;//红色小e 19B
if(g_u8Display_Mode == ModeDAY)
{
PicObj.qr_pic_id = Pic_0494;//请使用猎变APP扫码连接
}
else
{
PicObj.qr_pic_id = Pic_1031;//请使用猎变APP扫码连接
}
SetPagePic(GRAPHICS_PAGE_0, Pic_0001_0_0);/*图层*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0932_124_85);/*\豪进750TFT(371000 - 7500 - 02TY0000)OTA升级*/
SetPagePic(GRAPHICS_PAGE_0, Pic_0933_101_210);/*\SSID: TYW_DASHBOARD*/
......@@ -5237,10 +5255,17 @@ void AMT630H_GUI_Display_Navigation_Area(void)
DISPLAY_NUM_ST DisplayNumPara;
PicObj.qr_logo_id = 0;//Pic_0234 小数字9 EA
PicObj.main_pic_id = Pic_0632; //转速红12
PicObj.qr_pic_id = Pic_0411;//红色小e 19B
PicObj.update_pic_id = Pic_0233;//小数字8 E9
PicObj.second_menu = 0;
PicObj.navigation_task_id = Pic_0411;//红色小e 19B
if(g_u8Display_Mode == ModeDAY)
{
PicObj.qr_pic_id = Pic_0494;//请使用猎变APP扫码连接
}
else
{
PicObj.qr_pic_id = Pic_1031;//请使用猎变APP扫码连接
}
if (GetPhoneMirrorst() == 0)
{
//DISPLAY_NUM_ST DisplayNumPara;
......@@ -5266,7 +5291,7 @@ void AMT630H_GUI_Display_Navigation_Area(void)
for (uint8_t i = 0; i < 21; i++)
{
DisplayNumPara.x= 786 - i*15;//x坐标
DisplayNum(GRAPHICS_PAGE_0,&DisplayNumPara, UUIDConfigBuf[20-i]);
DisplayNum(GRAPHICS_PAGE_0,&DisplayNumPara, (UUIDConfigBuf[20-i]- 0x30));
}
}
else
......@@ -5292,7 +5317,7 @@ void AMT630H_GUI_Display_Navigation_Area(void)
for (uint8_t i = 0; i < 21; i++)
{
DisplayNumPara.x= 786 - i*15;//x坐标
DisplayNum(GRAPHICS_PAGE_0,&DisplayNumPara, UUIDConfigBuf[20-i]);
DisplayNum(GRAPHICS_PAGE_0,&DisplayNumPara, (UUIDConfigBuf[20-i]- 0x30));
}
}
else
......
......@@ -4,7 +4,7 @@
* \attention
*
* This file is automatically generated by analog signals configuration tool.
* Date : 2024/6/18 22:46:57
* Date : 2024/11/6 19:09:16
* Cfg Tool Ver : 1.1.0
* Engineer : ShiHao
* (c) Heilongjiang TYW electronics co., LTD
......@@ -74,7 +74,7 @@ ADC_Data_st_t stADCData[ADC_SIGNAL_CH_NUMBER];
const uint8_t __attribute__((aligned(4))) u8ADCChList[ADC_CONV_CH_NUMBER] =
{
2U, 3U, 7U, 5U, 6U, 4U, 12U,
2U, 3U, 7U, 5U, 6U, 12U, 11U, 4U,
};
const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBER] =
......@@ -84,9 +84,9 @@ const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBE
{ 2U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
{ 3U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 4U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 5U, 3U, 0U, 5000U, 0U, 10U, ADC_Res_Calc_Circuit201,},
{ 6U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
{ 5U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
{ 6U, 3U, 0U, 5000U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 7U, 3U, 0U, 5000U, 0U, 10U, ADC_Res_Calc_Circuit201,},
};
const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_NUMBER] =
......@@ -96,8 +96,9 @@ const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_N
{ 0U, 0U, 0U, 0U,},
{ 0U, 0U, 500U, 300U,},
{ 0U, 0U, 500U, 0U,},
{ 47000U, 0U, 100000U, 0U,},
{ 0U, 100000U, 0U, 0U,},
{ 47000U, 0U, 47000U, 0U,},
{ 47000U, 0U, 100000U, 0U,},
};
/* Private function prototypes ----------------------------------------------*/
......
......@@ -4,7 +4,7 @@
* \attention
*
* This file is automatically generated by analog signals configuration tool.
* Date : 2024/6/18 22:46:57
* Date : 2024/11/6 19:09:16
* Cfg Tool Ver : 1.1.0
* Engineer : ShiHao
* (c) Heilongjiang TYW electronics co., LTD
......@@ -33,13 +33,14 @@ enum ADCChName
ADC_CH_FUEL_VREF,
ADC_CH_FUEL1,
ADC_CH_COOLANT_TEMP1_R,
ADC_CH_NTC_TEMP,
ADC_CH_LIGHT_SENSITIVE,
ADC_CH_OIL_PRESSURE_R,
ADC_CH_NTC_TEMP,
};
/* Exported macro ------------------------------------------------------------*/
#define ADC_TOTAL_CH_NUMBER (7U)
#define ADC_SIGNAL_CH_NUMBER (7U)
#define ADC_TOTAL_CH_NUMBER (8U)
#define ADC_SIGNAL_CH_NUMBER (8U)
#define ADC_REF_VOLTAGE u16ADCRefVoltage
/* Exported variables --------------------------------------------------------*/
......
......@@ -28,6 +28,7 @@
#include "Data_VSpeed.h"
#include "Data_Coolant.h"
#include "Data_Fuel.h"
#include "Data_OilPressure.h"
#include "Hysteresis.h"
#include "Mileage\Services_Mileage_User.h"
#include "BackLight.h"
......
......@@ -21,7 +21,7 @@ void Key_Operation_Left(Key_Event_en_t enKeyEvent)//选择
case KEY_EVENT_SHORT_PRESS_2:
break;
case KEY_EVENT_LONG_PRESS_1: //2
if(Get_Dis_OdoAndTrip() == 1)
if((Get_Dis_OdoAndTrip() == 1) && (Get_ActualVechileSpeed() == 0))
{
Data_Clear_Trip(1);
}
......@@ -51,10 +51,10 @@ void Key_Operation_Right(Key_Event_en_t enKeyEvent)//确认
{
case KEY_EVENT_SHORT_PRESS_1:
/* 在数字闪烁界面的时候,按确认键保存时间 */
if ((Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_HOUR_TENB_SET) ||
if (((Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_HOUR_TENB_SET) ||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_HOUR_BIT_SET ) ||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_MIN_TENB_SET ) ||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_MIN_BIT_SET ) )
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_MIN_BIT_SET ) ) && (Get_ActualVechileSpeed() == 0))
{
// Menu_Logic_Operation_Clock_Hour_Tenb_Set(MENU_KEY_CONFIRM_SHORT);
counter_val.time.RTC_Hours = (MenuData.Dis_Hour_Tenb*10 + MenuData.Dis_Hour_Bit);
......@@ -67,6 +67,7 @@ void Key_Operation_Right(Key_Event_en_t enKeyEvent)//确认
case KEY_EVENT_SHORT_PRESS_2:
break;
case KEY_EVENT_LONG_PRESS_1: //2s
Key_Event_SHORT_PRESS_2_Right();
break;
case KEY_EVENT_LONG_PRESS_2: //3s
break;
......@@ -144,8 +145,8 @@ void Key_KL30_Init_EXample(void)
stKeyInitTem.enKeyIGNRealStatus = KEY_IG_OFF;
Key_KL30_Init(&u8KeyRamData[0], stKeyAttribute, &stKeyInitTem);
Key_Parameter_Set_Short_Press_2_Time(2100U,5000U);
Key_Parameter_Set_Short_Press_1_Time(50U,2000U);
Key_Parameter_Set_Short_Press_2_Time(3000U,6000U);
Key_Parameter_Set_Long_Press_1_Time(2000U);
Key_Parameter_Set_Long_Press_2_Time(8000U);
......@@ -160,8 +161,8 @@ void Key_Wakeup_Init_EXample(void)
stKeyInitTem.enKeyIGNRealStatus = KEY_IG_OFF;
Key_Wakeup_Init(&u8KeyRamData[0], stKeyAttribute, &stKeyInitTem);
Key_Parameter_Set_Short_Press_2_Time(2100U,5000U);
Key_Parameter_Set_Short_Press_1_Time(50U,2000U);
Key_Parameter_Set_Short_Press_2_Time(3000U,6000U);
Key_Parameter_Set_Long_Press_1_Time(2000U);
Key_Parameter_Set_Long_Press_2_Time(8000U);
......@@ -177,34 +178,61 @@ void Key_TimeOut_Service(void)
{
Menu_Service(MENU_KEY_TIMEOUT);
}
else
{
;
}
}
else
{
;
}
}
void Key_Auto_Save(void)
{
{
//RTC_SetTime(&counter_val.time);
}
// {
// RTC_SetTime(&counter_val.time);
// }
{
//RTC_SetTime(&counter_val.time);
}
// {
// RTC_SetTime(&counter_val.time);
// }
}
void Key_Event_Short_Press_Left(void)//选择
{
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_MAIN_ITEM)//切换大小计
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_MAIN_ITEM)//接电话,切换大小计
{
if(BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming)
{
PackedTransfer_BlueTooth_DataSet(Phone_Pick_Up);
}
else if(Get_ActualVechileSpeed() == 0)
{
Menu_Service(MENU_KEY_FUNCTION_1_SHORT);
}
else
{
;
}
}
else if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_PHONE_CONNECT_APP)
{
if(BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming)
{
PackedTransfer_BlueTooth_DataSet(Phone_Pick_Up);
}
else
{
;
}
}
if((Menu_Get_Current_Cursor_Information() == MENU_ITEM_DISPLAY_MODE)||
if(((Menu_Get_Current_Cursor_Information() == MENU_ITEM_DISPLAY_MODE)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_SETTING)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BLUETOOTH_CONNECT)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_SETTING)||
......@@ -212,13 +240,13 @@ void Key_Event_Short_Press_Left(void)//选择
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_LANGUAGE_SETTING)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_FAULT_INFORMATION)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_PHONE_CONNECT)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_QUIT))
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_QUIT)) && (Get_ActualVechileSpeed() == 0))
{
Menu_Service(MENU_KEY_RIGHT_SHORT);
}
else
{
if((Menu_Get_Current_Cursor_Information() == MENU_ITEM_SELECT_DAYTIME)||
if(((Menu_Get_Current_Cursor_Information() == MENU_ITEM_SELECT_DAYTIME)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_SELECT_NIGHTTIME)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_SELECT_AUTO)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_5)||
......@@ -242,21 +270,18 @@ void Key_Event_Short_Press_Left(void)//选择
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_UNIT_KM)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_UNIT_MILE)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_LANGUAGE_CHINESE)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_LANGUAGE_ENGLISH))
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_LANGUAGE_ENGLISH)) && (Get_ActualVechileSpeed() == 0))
{
Menu_Service(MENU_KEY_DOWN_SHORT);
Key_Event_BackLight_Press_Left();
}
}
if ((BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking))
{
PackedTransfer_BlueTooth_DataSet(Phone_Pick_Up);
}
}
void Key_Event_Short_Press_Right(void)//确认
{
if((Menu_Get_Current_Cursor_Information() == MENU_ITEM_MAIN_ITEM)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_DISPLAY_MODE)||
if(((Menu_Get_Current_Cursor_Information() == MENU_ITEM_DISPLAY_MODE)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_SETTING)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BLUETOOTH_CONNECT)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_CLOCK_SETTING)||
......@@ -290,21 +315,113 @@ void Key_Event_Short_Press_Right(void)//确认
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_UNIT_MILE)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_LANGUAGE_CHINESE)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_LANGUAGE_ENGLISH)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_PHONE_CONNECT_SET)||
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_PHONE_CONNECT_APP))
(Menu_Get_Current_Cursor_Information() == MENU_ITEM_PHONE_CONNECT_SET)) && (Get_ActualVechileSpeed() == 0))
{
Menu_Service(MENU_KEY_CONFIRM_SHORT);
}
if ((BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking))
else if((Menu_Get_Current_Cursor_Information() == MENU_ITEM_MAIN_ITEM) || (Menu_Get_Current_Cursor_Information() == MENU_ITEM_PHONE_CONNECT_APP))
{
if((BlueToothPhoneData.BlueToothPhoneSate == Phone_Outgoing) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Incoming) || (BlueToothPhoneData.BlueToothPhoneSate == Phone_Talking))
{
PackedTransfer_BlueTooth_DataSet(Phone_Hangup_Out);
}
else if(Get_ActualVechileSpeed() == 0)
{
Menu_Service(MENU_KEY_CONFIRM_SHORT);
}
else
{
;
}
}
else
{
;
}
}
void Key_Event_SHORT_PRESS_2_Right(void)
{
if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000))
{
;
}
else
{
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_MAIN_ITEM)
{
Menu_Change_Branch_To_Item(MENU_BRANCH_ANIMATION,MENU_ITEM_PHONE_CONNECT_APP);
}
else
{
;
}
}
}
void Key_Event_BackLight_Press_Left(void)
{
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_5)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
else if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_4)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
else if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_3)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
else if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_2)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
else if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_1)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
else if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_BACKLIGHT_AUTO)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 1);
}
}
uint8_t OTA_Update_Flag = 0;
void Get_Into_OTA_Update_Mode(void)
{
if(Menu_Get_Current_Cursor_Information() == MENU_ITEM_FAULT_INFORMATION)
if((Menu_Get_Current_Cursor_Information() == MENU_ITEM_FAULT_INFORMATION) && (Get_ActualVechileSpeed() == 0))
{
OTA_Update_Flag = 1U;
}
......@@ -352,7 +469,7 @@ void TYW_RESET_ODO(void)
{
if(ClearODO_Flag < 1)
{
if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000))
if((Get_DispVechileSpeed() >= 1990)&&(Get_DispEngineSpeed() >= 12000)&&((Menu_Get_Current_Cursor_Information() == MENU_ITEM_MAIN_ITEM)))
{
ClearODO_Flag = 1;
Data_Mileage_Clear();
......@@ -389,11 +506,12 @@ void My_Key_Service(void)
{
/* 自检和OTA界面时不可操作按键 */
if((g_u8SelfCheck) && (OTA_Update_Flag == 0))
{
if((Get_ActualVechileSpeed() == 0) ||((Get_DispVechileSpeed() >= 1990) && (Get_DispEngineSpeed() >= 12000)))
{
Key_Service();
}
else
{
;
}
}
......
......@@ -62,6 +62,8 @@ Key_Status_en_t Key_Status_Read_Left(void);
Key_Status_en_t Key_Status_Read_Right(void);
void Key_Event_Short_Press_Left(void);
void Key_Event_Short_Press_Right(void);
void Key_Event_SHORT_PRESS_2_Right(void);
void Key_Event_BackLight_Press_Left(void);
void Get_Into_OTA_Update_Mode(void);
void KEY_RIGHT_EVENT_NONE_Service(void);
void KEY_LEFT_EVENT_NONE_Service(void);
......
......@@ -9,7 +9,7 @@ const Line_In_Attribute_st g_stLineInAttribute[LINE_IN_MAX] =
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 20U, 20U, Get_LINE_IN_Turn_Right, },/*P9*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 40U, 20U, Get_LINE_IN_High_Beam, },/*P18*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 125U, 20U, Get_LINE_IN_Efi_Fault, },/*P15*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 125U, 0U, Get_LINE_IN_ABS, },/*P7*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 170U, 0U, Get_LINE_IN_ABS, },/*P7*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 125U, 20U, Get_LINE_IN_Auto_Start_Stop, },/*P12*/
{LEVEL_HIGH, LEVEL_LOW, LINE_IN_IG_ON, 2000U, 20U, Get_LINE_IN_Oil_Pressure_Alert, },/*P21*/
{LEVEL_LOW, LEVEL_HIGH, LINE_IN_IG_ON, 125U, 20U, Get_LINE_IN_Coolant_Temperature }, /*P11*/
......@@ -95,13 +95,13 @@ Linelib_uint8_t Get_LINE_IN_Auto_Start_Stop(void)
Linelib_uint8_t Get_LINE_IN_Oil_Pressure_Alert(void)
{
Linelib_uint8_t ret = 0U;
if (RTE_GPIO_Get_Level(Gears_N_MCU))
if (Get_OilPressureStauts())
{
ret = 1u;
ret = 0u;
}
else
{
ret = 0UL;
ret = 1UL;
}
return ret;
}
......
......@@ -65,11 +65,11 @@ void Menu_User_Init(void)
Menu_Init_st.enMenuItemLen = MENU_ITEM_MAX;
Menu_Init_st.uintMenuConfig = 0x0001;
Menu_Init_st.uintMenuCursorMemoryDepth = 0;
Menu_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st);
Menu_Item_Select_Set(MENU_ITEM_SELECT_DAYTIME, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
Menu_Item_Select_Set(MENU_ITEM_UNIT_KM, 1);
Menu_Item_Select_Set(MENU_ITEM_LANGUAGE_CHINESE, 1);
Menu_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st);
}
void Menu_User_WAKEUP(void)
......@@ -80,11 +80,11 @@ void Menu_User_WAKEUP(void)
Menu_Init_st.enMenuItemLen = MENU_ITEM_MAX;
Menu_Init_st.uintMenuConfig = 0x0001;
Menu_Init_st.uintMenuCursorMemoryDepth = 0;
Menu_Wake_Up_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st);
Menu_Item_Select_Set(MENU_ITEM_SELECT_DAYTIME, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
Menu_Item_Select_Set(MENU_ITEM_UNIT_KM, 1);
Menu_Item_Select_Set(MENU_ITEM_LANGUAGE_CHINESE, 1);
Menu_Wake_Up_Init((uint8_t *)u8MenuRamData, (Menu_Item_Attribute_st_t *)stMenuItemAttribute, (Menu_Init_st_t *)&Menu_Init_st);
}
/*---------------------------------------------------------------------------------------*/
......@@ -232,80 +232,80 @@ void Menu_Logic_Operation_Select_Auto(Menu_Key_en_t enKeyType)
void Menu_Logic_Operation_Backlight_5(Menu_Key_en_t enKeyType)
{
if(enKeyType == MENU_KEY_CONFIRM_SHORT)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
// if(enKeyType == MENU_KEY_CONFIRM_SHORT)
// {
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 1);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
// }
}
void Menu_Logic_Operation_Backlight_4(Menu_Key_en_t enKeyType)
{
if(enKeyType == MENU_KEY_CONFIRM_SHORT)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
// if(enKeyType == MENU_KEY_CONFIRM_SHORT)
// {
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 1);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
// }
}
void Menu_Logic_Operation_Backlight_3(Menu_Key_en_t enKeyType)
{
if(enKeyType == MENU_KEY_CONFIRM_SHORT)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
// if(enKeyType == MENU_KEY_CONFIRM_SHORT)
// {
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 1);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
// }
}
void Menu_Logic_Operation_Backlight_2(Menu_Key_en_t enKeyType)
{
if(enKeyType == MENU_KEY_CONFIRM_SHORT)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
// if(enKeyType == MENU_KEY_CONFIRM_SHORT)
// {
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 1);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
// }
}
void Menu_Logic_Operation_Backlight_1(Menu_Key_en_t enKeyType)
{
if(enKeyType == MENU_KEY_CONFIRM_SHORT)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 1);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
}
// if(enKeyType == MENU_KEY_CONFIRM_SHORT)
// {
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 1);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 0);
// }
}
void Menu_Logic_Operation_Backlight_Auto(Menu_Key_en_t enKeyType)
{
if(enKeyType == MENU_KEY_CONFIRM_SHORT)
{
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 1);
}
// if(enKeyType == MENU_KEY_CONFIRM_SHORT)
// {
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_5, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_4, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_3, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_2, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_1, 0);
// Menu_Item_Select_Set(MENU_ITEM_BACKLIGHT_AUTO, 1);
// }
}
void Menu_Logic_Operation_Bluetooth_Open_Close(Menu_Key_en_t enKeyType)
......
......@@ -17,13 +17,13 @@ uint8_t odo_readState;
static uint32_t Data_User_EEPROM_Read(uint16_t u16BlockID, uint32_t u32Data[], uint16_t u16Len);
static void Data_User_EEPROM_Write(Data_EEPROM_Enum_t BlockID, uint32_t u32Data[], uint16_t u16Len);
#define EEPROM_BLOCK_00 0
#define EEPROM_BLOCK_01 16
#define EEPROM_BLOCK_02 32
#define EEPROM_BLOCK_03 48
#define EEPROM_BLOCK_04 64
#define EEPROM_BLOCK_05 80
#define EEPROM_BLOCK_06 96
#define EEPROM_BLOCK_00 0x00
#define EEPROM_BLOCK_01 0x20
#define EEPROM_BLOCK_02 0x40
#define EEPROM_BLOCK_03 0x60
#define EEPROM_BLOCK_04 0x80
#define EEPROM_BLOCK_05 0xC0
#define EEPROM_BLOCK_06 0xE0
......
......@@ -55,6 +55,7 @@ static void Power_KL30_Init(void)
Key_KL30_Init_EXample();
Data_User_Mileage_KL30Init();
Fuel_KL30_Init();
Oil_Pressure_KL30_Init();
BackLight_30_Init();
Amt630hInit();
Telltales_Init();
......@@ -91,6 +92,7 @@ static void Power_Wakeup_Init(void)
Key_Wakeup_Init_EXample();
Line_In_KL15_ON_Init();
Fuel_KL30_Init();
Oil_Pressure_KL30_Init();
BackLight_WakeUp_Init();
RTE_UART_Sleep_Init(UART_CH2);
loc_config.u32UARTChEn = 1U;
......@@ -123,6 +125,8 @@ static void Power_IG_OFF_Init(void)
{
Line_In_KL15_OFF_Init();
BackLight_15_Init();
BlueTooth_IGOFF_INIT();
Menu_Change_Branch_To_Item(MENU_BRANCH_ANIMATION,MENU_ITEM_MAIN_ITEM);
}
static void Power_IG_ON_Init(void)
......@@ -131,6 +135,7 @@ static void Power_IG_ON_Init(void)
Line_In_KL15_ON_Init();
Telltales_KL15_Init();
Fuel_KL15_Init();
Oil_Pressure_KL15_Init();
TEMP_KL15_Init();
//RTE_GPIO_Set_Level(Blacklight_PWM, 1);
FaultCode_Init();
......@@ -212,7 +217,7 @@ static Power_Status_em Power_Stay_Protect(void)
/* 关闭所有外设,坪保留AD采集,电溝状思切�? */
{
TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 0);
//CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Disable);
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Disable);
}
u8PowerSts = EM_IGN_OFF_Init;
/* 电溝模弝正常 */
......@@ -226,7 +231,7 @@ static Power_Status_em Power_Stay_Protect(void)
if ( SYS_OPR_STAT_RUN )
{
Amt630hInit();
//CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
CAN_TX_SetEnable(&CAN_CH0_CanMsgTxOp, CAN_N_TX_Enable);
return u8PowerSts;
}
......
/**************************************************************************//**
* @file system_BAT32A279.c
* @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Source File for
* Device BAT32G179
* @version V1.00
* @date 2019/04/24
******************************************************************************/
/*
* Copyright (c) 2009-2018 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdint.h>
#include "BAT32A279.h"
/** @addtogroup Configuration_of_User_Option_Byte
* @{
*/
typedef enum {
HOCO_FREQ_64MHZ = 0xF8, /*!< fHOCO = 64MHz, fIH = 64MHz */
HOCO_FREQ_48MHZ = 0xF0, /*!< fHOCO = 48MHz, fIH = 48MHz */
HOCO_FREQ_32MHZ = 0xE8, /*!< fHOCO = 32MHz, fIH = 32MHz */
HOCO_FREQ_24MHZ = 0xE0, /*!< fHOCO = 24MHz, fIH = 24MHz */
HOCO_FREQ_16MHZ = 0xE9, /*!< fHOCO = 32MHz, fIH = 16MHz */
HOCO_FREQ_12MHZ = 0xE1, /*!< fHOCO = 24MHz, fIH = 12MHz */
HOCO_FREQ_8MHZ = 0xEA, /*!< fHOCO = 32MHz, fIH = 8MHz */
HOCO_FREQ_6MHZ = 0xE2, /*!< fHOCO = 24MHz, fIH = 6MHz */
HOCO_FREQ_4MHZ = 0xEB, /*!< fHOCO = 32MHz, fIH = 4MHz */
HOCO_FREQ_3MHZ = 0xE3, /*!< fHOCO = 24MHz, fIH = 3MHz */
HOCO_FREQ_2MHZ = 0xEC, /*!< fHOCO = 32MHz, fIH = 2MHz */
HOCO_FREQ_1MHZ = 0xED /*!< fHOCO = 32MHz, fIH = 1MHz */
} hoco_freq_t;
/*----------------------------------------------------------------------------
User Option Byte
*----------------------------------------------------------------------------*/
/* ToDo: add here your necessary defines for device initialization
following is an example for different system frequencies */
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
const uint8_t user_opt_data[4] __attribute__((used)) __attribute__((section(".ARM.__AT_0x000000C0"))) =
{
/**
* @brief WDT Control BYTE
* Please refer to the user manual for details.
* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
* --------|---------|---------|-------|-------|-------|-------|----------
* WDTINT | WINDOW1 | WINDOW0 | WDTON | WDCS2 | WDCS1 | WDCS0 | WDSTBYON
* --------|---------|---------|-------|-------|-------|-------|----------
*/
// <h> WDT Control Option Byte (C0H)
// <e.4> Enable WDT (WDTON)
// <o.5..6> Watchdog timer window open period setting <2=> 75% <3=> 100%
// <o.1..3> Watchdog timer overflow time setting <0=> 2^6/fIL <1=> 2^7/fIL
// <2=> 2^8/fIL <3=> 2^9/fIL
// <4=> 2^11/fIL <5=> 2^13/fIL
// <6=> 2^14/fIL <7=> 2^16/fIL
// <e.0> Operation in Standby mode setting (WDSTBYON)
// <i> WDT Operaton in SLEEP/DEEPSLEEP mode.
// </e>
// <e.7> interrupt enable
// <i> interval interrupt is generated when 75% + 1/2 fIL of the overflow time is reached.
// </e>
// </e>
// </h>
0xEF,
/**
* @brief LVD Control BYTE (C1H)
* Please refer to the user manual for details.
* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
* -------|-------|-------|-------|-------|-------|---------|----------
* VPOC2 | VPOC1 | VPOC0 | 1 | LVIS1 | LVIS0 | LVIMDS1 | LVIMDS0
* -------|-------|-------|-------|-------|-------|---------|----------
*/
// <h> LVD Control Option Byte (C1H)
// <o.0..7> Voltage detection setting (VLVD) <0xFF=> ( LVD OFF )
// <0x3D=> VLVD = 1.88V/1.84V ( interrupt mode )
// <0x39=> VLVD = 1.98V/1.94V ( interrupt mode )
// <0x35=> VLVD = 2.09V/2.04V ( interrupt mode )
// <0x5D=> VLVD = 2.50V/2.45V ( interrupt mode )
// <0x59=> VLVD = 2.61V/2.55V ( interrupt mode )
// <0x55=> VLVD = 2.71V/2.65V ( interrupt mode )
// <0x7D=> VLVD = 2.81V/2.75V ( interrupt mode )
// <0x79=> VLVD = 2.92V/2.86V ( interrupt mode )
// <0x75=> VLVD = 3.02V/2.96V ( interrupt mode )
// <0x3F=> VLVD = 1.88V/1.84V ( reset mode )
// <0x3B=> VLVD = 1.98V/1.94V ( reset mode )
// <0x37=> VLVD = 2.09V/2.04V ( reset mode )
// <0x5F=> VLVD = 2.50V/2.45V ( reset mode )
// <0x5B=> VLVD = 2.61V/2.55V ( reset mode )
// <0x57=> VLVD = 2.71V/2.65V ( reset mode )
// <0x7F=> VLVD = 2.81V/2.75V ( reset mode )
// <0x7B=> VLVD = 2.92V/2.86V ( reset mode )
// <0x77=> VLVD = 3.02V/2.96V ( reset mode )
// <0x3A=> VLVDH = 1.98V/1.94V, VLVDL = 1.84V ( interrupt & reset mode )
// <0x36=> VLVDH = 2.09V/2.04V, VLVDL = 1.84V ( interrupt & reset mode )
// <0x32=> VLVDH = 3.13V/3.06V, VLVDL = 1.84V ( interrupt & reset mode )
// <0x5A=> VLVDH = 2.61V/2.55V, VLVDL = 2.45V ( interrupt & reset mode )
// <0x56=> VLVDH = 2.71V/2.65V, VLVDL = 2.45V ( interrupt & reset mode )
// <0x52=> VLVDH = 3.75V/3.67V, VLVDL = 2.45V ( interrupt & reset mode )
// <0x7A=> VLVDH = 2.92V/2.86V, VLVDL = 2.75V ( interrupt & reset mode )
// <0x76=> VLVDH = 3.02V/2.96V, VLVDL = 2.75V ( interrupt & reset mode )
// <0x72=> VLVDH = 4.06V/3.98V, VLVDL = 2.75V ( interrupt & reset mode )
// <i> Please setting the item for interrupt & reset mode
// </h>
0xFF,
/**
* @brief HOCO Control BYTE (FRQSEL)
* Please refer to the user manual for details.
* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
* -------|-------|-------|---------|---------|---------|---------|---------
* 1 | 1 | 1 | FRQSEL4 | FRQSEL3 | FRQSEL2 | FRQSEL1 | FRQSEL0
* -------|-------|-------|---------|---------|---------|---------|---------
*/
// <h> HOCO Control Option Byte (C2H)
// <o.0..4> High-speed OCO clock setting <0xF8=> fHOCO = 64MHz, fIH = 64MHz
// <0xF0=> fHOCO = 48MHz, fIH = 48MHz
// <0xE8=> fHOCO = 32MHz, fIH = 32MHz
// <0xE0=> fHOCO = 24MHz, fIH = 24MHz
// <0xE9=> fHOCO = 32MHz, fIH = 16MHz
// <0xE1=> fHOCO = 24MHz, fIH = 12MHz
// <0xEA=> fHOCO = 32MHz, fIH = 8MHz
// <0xE2=> fHOCO = 24MHz, fIH = 6MHz
// <0xEB=> fHOCO = 32MHz, fIH = 4MHz
// <0xE3=> fHOCO = 24MHz, fIH = 3MHz
// <0xEC=> fHOCO = 32MHz, fIH = 2MHz
// <0xED=> fHOCO = 32MHz, fIH = 1MHz
// </h>
0xE8,
/**
* @brief Flash Protect Control BYTE
* Please refer to the user manual for details.
*/
// <h> OCD Control Option Byte (C3H)
// <o.0..7> On-chip debug setting (OCDEN) <0xFF=> Enable <0xC3=> Disable
// <i> OCDM(500004H) == 0x3C && OCDEN == 0xC3: Debugger can not erease/write/read Flash.
// <i> OCDM(500004H) != 0x3C && OCDEN == 0xC3: Debugger can only chip erease Flash but cannot write/read Flash.
// </h>
0xFF
};
//-------- <<< end of configuration section >>> ------------------
/** @} */ /* End of group Configuration_of_User_Option_Byte */
/*----------------------------------------------------------------------------
System Core Clock Variable
*----------------------------------------------------------------------------*/
/* ToDo: initialize SystemCoreClock with the system core clock frequency value
achieved after system intitialization.
This means system core clock frequency after call to SystemInit() */
uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock)*/
/*----------------------------------------------------------------------------
Clock functions
*----------------------------------------------------------------------------*/
__WEAK uint32_t CLK_GetHocoFreq(void)
{
uint32_t freq;
uint8_t frqsel = (*(uint8_t *)0x000000C2U);
frqsel &= 0x18; /* Mask the higher and lower 3 bits */
frqsel >>= 3; /* right shift 3 bit */
switch(frqsel)
{
case 0x03:
freq = 64000000U; /* fHOCO = 64MHz */
break;
case 0x02:
freq = 48000000U; /* fHOCO = 48MHz */
break;
case 0x01:
freq = 32000000U; /* fHOCO = 32MHz */
break;
case 0x00:
freq = 24000000U; /* fHOCO = 24MHz */
break;
}
return(freq);
}
__WEAK uint32_t CLK_GetCoreFreq(void)
{
uint32_t freq;
uint8_t frqsel = (*(uint8_t *)0x000000C2U);
frqsel &= 0xF8; /* Mask the lower 3 bits */
frqsel |= CGC->HOCODIV; /* Refer the value of HOCODIV */
freq = 1000000U; /* fIH = 1MHz except for the following cases */
switch(frqsel)
{
case HOCO_FREQ_64MHZ:
freq = 64000000U; /* fIH = 64MHz */
break;
case HOCO_FREQ_48MHZ:
freq = 48000000U; /* fIH = 48MHz */
break;
case HOCO_FREQ_32MHZ:
freq = 32000000U; /* fIH = 32MHz */
break;
case HOCO_FREQ_24MHZ:
freq = 24000000U; /* fIH = 24MHz */
break;
case HOCO_FREQ_16MHZ:
freq = 16000000U; /* fIH = 16MHz */
break;
case HOCO_FREQ_12MHZ:
freq = 12000000U; /* fIH = 12MHz */
break;
case HOCO_FREQ_8MHZ:
freq = 8000000U; /* fIH = 8MHz */
break;
case HOCO_FREQ_6MHZ:
freq = 6000000U; /* fIH = 6MHz */
break;
case HOCO_FREQ_4MHZ:
freq = 4000000U; /* fIH = 4MHz */
break;
case HOCO_FREQ_3MHZ:
freq = 3000000U; /* fIH = 3MHz */
break;
case HOCO_FREQ_2MHZ:
freq = 2000000U; /* fIH = 2MHz */
break;
case HOCO_FREQ_1MHZ:
freq = 1000000U; /* fIH = 1MHz */
break;
}
return(freq);
}
__WEAK void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */
{
/* ToDo: add code to calculate the system frequency based upon the current
register settings.
This function can be used to retrieve the system core clock frequeny
after user changed register sittings. */
SystemCoreClock = CLK_GetCoreFreq();
}
void SystemInit (void)
{
/* ToDo: add code to initialize the system
do not use global variables because this function is called before
reaching pre-main. RW section maybe overwritten afterwards. */
/* RAM Parity Error Reset Disable */
SAF->RPECTL = 0x80U;
CGC->WDTCFG0 = 0x1A;
CGC->WDTCFG1 = 0x2B;
CGC->WDTCFG2 = 0x3C;
CGC->WDTCFG3 = 0x4D;
DBG->DBGSTOPCR = 0;
SystemCoreClock = CLK_GetCoreFreq();
/* NVIC Clear Pending IRQ */
NVIC->ICPR[0U] = 0xFFFFFFFF;
/* NVIC Enable IRQs */
NVIC->ISER[0U] = 0xFFFFFFFF;
/* NVIC Lower Priority */
NVIC->IP[0U] = 0xC0C0C0C0;
NVIC->IP[1U] = 0xC0C0C0C0;
NVIC->IP[2U] = 0xC0C0C0C0;
NVIC->IP[3U] = 0xC0C0C0C0;
NVIC->IP[4U] = 0xC0C0C0C0;
NVIC->IP[5U] = 0xC0C0C0C0;
NVIC->IP[6U] = 0xC0C0C0C0;
NVIC->IP[7U] = 0xC0C0C0C0;
/* restart watchdog timer */
WDT->WDTE = 0xACU;
}
......@@ -68,6 +68,7 @@ uint8_t rte_can_init(can_config_st_t *config)
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStruct.GPIO_Level = GPIO_Level_HIGH;
GPIO_InitStruct.GPIO_Ctrl = GPIO_Control_DIG;
GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
GPIO_Init(GPIO_PORT5, &GPIO_InitStruct);
/* CRXD pin init */
......
/**************************************************************************//**
* @file system_BAT32A279.c
* @brief CMSIS Cortex-M0+ Device Peripheral Access Layer Source File for
* Device BAT32G179
* @version V1.00
* @date 2019/04/24
******************************************************************************/
/*
* Copyright (c) 2009-2018 Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the License); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <stdint.h>
#include "BAT32A279.h"
/** @addtogroup Configuration_of_User_Option_Byte
* @{
*/
typedef enum {
HOCO_FREQ_64MHZ = 0xF8, /*!< fHOCO = 64MHz, fIH = 64MHz */
HOCO_FREQ_48MHZ = 0xF0, /*!< fHOCO = 48MHz, fIH = 48MHz */
HOCO_FREQ_32MHZ = 0xE8, /*!< fHOCO = 32MHz, fIH = 32MHz */
HOCO_FREQ_24MHZ = 0xE0, /*!< fHOCO = 24MHz, fIH = 24MHz */
HOCO_FREQ_16MHZ = 0xE9, /*!< fHOCO = 32MHz, fIH = 16MHz */
HOCO_FREQ_12MHZ = 0xE1, /*!< fHOCO = 24MHz, fIH = 12MHz */
HOCO_FREQ_8MHZ = 0xEA, /*!< fHOCO = 32MHz, fIH = 8MHz */
HOCO_FREQ_6MHZ = 0xE2, /*!< fHOCO = 24MHz, fIH = 6MHz */
HOCO_FREQ_4MHZ = 0xEB, /*!< fHOCO = 32MHz, fIH = 4MHz */
HOCO_FREQ_3MHZ = 0xE3, /*!< fHOCO = 24MHz, fIH = 3MHz */
HOCO_FREQ_2MHZ = 0xEC, /*!< fHOCO = 32MHz, fIH = 2MHz */
HOCO_FREQ_1MHZ = 0xED /*!< fHOCO = 32MHz, fIH = 1MHz */
} hoco_freq_t;
/*----------------------------------------------------------------------------
User Option Byte
*----------------------------------------------------------------------------*/
/* ToDo: add here your necessary defines for device initialization
following is an example for different system frequencies */
//-------- <<< Use Configuration Wizard in Context Menu >>> ------------------
const uint8_t user_opt_data[4] __attribute__((used)) __attribute__((section(".ARM.__AT_0x000000C0"))) =
{
/**
* @brief WDT Control BYTE
* Please refer to the user manual for details.
* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
* --------|---------|---------|-------|-------|-------|-------|----------
* WDTINT | WINDOW1 | WINDOW0 | WDTON | WDCS2 | WDCS1 | WDCS0 | WDSTBYON
* --------|---------|---------|-------|-------|-------|-------|----------
*/
// <h> WDT Control Option Byte (C0H)
// <e.4> Enable WDT (WDTON)
// <o.5..6> Watchdog timer window open period setting <2=> 75% <3=> 100%
// <o.1..3> Watchdog timer overflow time setting <0=> 2^6/fIL <1=> 2^7/fIL
// <2=> 2^8/fIL <3=> 2^9/fIL
// <4=> 2^11/fIL <5=> 2^13/fIL
// <6=> 2^14/fIL <7=> 2^16/fIL
// <e.0> Operation in Standby mode setting (WDSTBYON)
// <i> WDT Operaton in SLEEP/DEEPSLEEP mode.
// </e>
// <e.7> interrupt enable
// <i> interval interrupt is generated when 75% + 1/2 fIL of the overflow time is reached.
// </e>
// </e>
// </h>
0x7E,
/**
* @brief LVD Control BYTE (C1H)
* Please refer to the user manual for details.
* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
* -------|-------|-------|-------|-------|-------|---------|----------
* VPOC2 | VPOC1 | VPOC0 | 1 | LVIS1 | LVIS0 | LVIMDS1 | LVIMDS0
* -------|-------|-------|-------|-------|-------|---------|----------
*/
// <h> LVD Control Option Byte (C1H)
// <o.0..7> Voltage detection setting (VLVD) <0xFF=> ( LVD OFF )
// <0x3D=> VLVD = 1.88V/1.84V ( interrupt mode )
// <0x39=> VLVD = 1.98V/1.94V ( interrupt mode )
// <0x35=> VLVD = 2.09V/2.04V ( interrupt mode )
// <0x5D=> VLVD = 2.50V/2.45V ( interrupt mode )
// <0x59=> VLVD = 2.61V/2.55V ( interrupt mode )
// <0x55=> VLVD = 2.71V/2.65V ( interrupt mode )
// <0x7D=> VLVD = 2.81V/2.75V ( interrupt mode )
// <0x79=> VLVD = 2.92V/2.86V ( interrupt mode )
// <0x75=> VLVD = 3.02V/2.96V ( interrupt mode )
// <0x3F=> VLVD = 1.88V/1.84V ( reset mode )
// <0x3B=> VLVD = 1.98V/1.94V ( reset mode )
// <0x37=> VLVD = 2.09V/2.04V ( reset mode )
// <0x5F=> VLVD = 2.50V/2.45V ( reset mode )
// <0x5B=> VLVD = 2.61V/2.55V ( reset mode )
// <0x57=> VLVD = 2.71V/2.65V ( reset mode )
// <0x7F=> VLVD = 2.81V/2.75V ( reset mode )
// <0x7B=> VLVD = 2.92V/2.86V ( reset mode )
// <0x77=> VLVD = 3.02V/2.96V ( reset mode )
// <0x3A=> VLVDH = 1.98V/1.94V, VLVDL = 1.84V ( interrupt & reset mode )
// <0x36=> VLVDH = 2.09V/2.04V, VLVDL = 1.84V ( interrupt & reset mode )
// <0x32=> VLVDH = 3.13V/3.06V, VLVDL = 1.84V ( interrupt & reset mode )
// <0x5A=> VLVDH = 2.61V/2.55V, VLVDL = 2.45V ( interrupt & reset mode )
// <0x56=> VLVDH = 2.71V/2.65V, VLVDL = 2.45V ( interrupt & reset mode )
// <0x52=> VLVDH = 3.75V/3.67V, VLVDL = 2.45V ( interrupt & reset mode )
// <0x7A=> VLVDH = 2.92V/2.86V, VLVDL = 2.75V ( interrupt & reset mode )
// <0x76=> VLVDH = 3.02V/2.96V, VLVDL = 2.75V ( interrupt & reset mode )
// <0x72=> VLVDH = 4.06V/3.98V, VLVDL = 2.75V ( interrupt & reset mode )
// <i> Please setting the item for interrupt & reset mode
// </h>
0xFF,
/**
* @brief HOCO Control BYTE (FRQSEL)
* Please refer to the user manual for details.
* 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
* -------|-------|-------|---------|---------|---------|---------|---------
* 1 | 1 | 1 | FRQSEL4 | FRQSEL3 | FRQSEL2 | FRQSEL1 | FRQSEL0
* -------|-------|-------|---------|---------|---------|---------|---------
*/
// <h> HOCO Control Option Byte (C2H)
// <o.0..4> High-speed OCO clock setting <0xF8=> fHOCO = 64MHz, fIH = 64MHz
// <0xF0=> fHOCO = 48MHz, fIH = 48MHz
// <0xE8=> fHOCO = 32MHz, fIH = 32MHz
// <0xE0=> fHOCO = 24MHz, fIH = 24MHz
// <0xE9=> fHOCO = 32MHz, fIH = 16MHz
// <0xE1=> fHOCO = 24MHz, fIH = 12MHz
// <0xEA=> fHOCO = 32MHz, fIH = 8MHz
// <0xE2=> fHOCO = 24MHz, fIH = 6MHz
// <0xEB=> fHOCO = 32MHz, fIH = 4MHz
// <0xE3=> fHOCO = 24MHz, fIH = 3MHz
// <0xEC=> fHOCO = 32MHz, fIH = 2MHz
// <0xED=> fHOCO = 32MHz, fIH = 1MHz
// </h>
0xE8,
/**
* @brief Flash Protect Control BYTE
* Please refer to the user manual for details.
*/
// <h> OCD Control Option Byte (C3H)
// <o.0..7> On-chip debug setting (OCDEN) <0xFF=> Enable <0xC3=> Disable
// <i> OCDM(500004H) == 0x3C && OCDEN == 0xC3: Debugger can not erease/write/read Flash.
// <i> OCDM(500004H) != 0x3C && OCDEN == 0xC3: Debugger can only chip erease Flash but cannot write/read Flash.
// </h>
0xFF
};
//-------- <<< end of configuration section >>> ------------------
/** @} */ /* End of group Configuration_of_User_Option_Byte */
/*----------------------------------------------------------------------------
System Core Clock Variable
*----------------------------------------------------------------------------*/
/* ToDo: initialize SystemCoreClock with the system core clock frequency value
achieved after system intitialization.
This means system core clock frequency after call to SystemInit() */
uint32_t SystemCoreClock; /* System Clock Frequency (Core Clock)*/
/*----------------------------------------------------------------------------
Clock functions
*----------------------------------------------------------------------------*/
__WEAK uint32_t CLK_GetHocoFreq(void)
{
uint32_t freq;
uint8_t frqsel = (*(uint8_t *)0x000000C2U);
frqsel &= 0x18; /* Mask the higher and lower 3 bits */
frqsel >>= 3; /* right shift 3 bit */
switch(frqsel)
{
case 0x03:
freq = 64000000U; /* fHOCO = 64MHz */
break;
case 0x02:
freq = 48000000U; /* fHOCO = 48MHz */
break;
case 0x01:
freq = 32000000U; /* fHOCO = 32MHz */
break;
case 0x00:
freq = 24000000U; /* fHOCO = 24MHz */
break;
}
return(freq);
}
__WEAK uint32_t CLK_GetCoreFreq(void)
{
uint32_t freq;
uint8_t frqsel = (*(uint8_t *)0x000000C2U);
frqsel &= 0xF8; /* Mask the lower 3 bits */
frqsel |= CGC->HOCODIV; /* Refer the value of HOCODIV */
freq = 1000000U; /* fIH = 1MHz except for the following cases */
switch(frqsel)
{
case HOCO_FREQ_64MHZ:
freq = 64000000U; /* fIH = 64MHz */
break;
case HOCO_FREQ_48MHZ:
freq = 48000000U; /* fIH = 48MHz */
break;
case HOCO_FREQ_32MHZ:
freq = 32000000U; /* fIH = 32MHz */
break;
case HOCO_FREQ_24MHZ:
freq = 24000000U; /* fIH = 24MHz */
break;
case HOCO_FREQ_16MHZ:
freq = 16000000U; /* fIH = 16MHz */
break;
case HOCO_FREQ_12MHZ:
freq = 12000000U; /* fIH = 12MHz */
break;
case HOCO_FREQ_8MHZ:
freq = 8000000U; /* fIH = 8MHz */
break;
case HOCO_FREQ_6MHZ:
freq = 6000000U; /* fIH = 6MHz */
break;
case HOCO_FREQ_4MHZ:
freq = 4000000U; /* fIH = 4MHz */
break;
case HOCO_FREQ_3MHZ:
freq = 3000000U; /* fIH = 3MHz */
break;
case HOCO_FREQ_2MHZ:
freq = 2000000U; /* fIH = 2MHz */
break;
case HOCO_FREQ_1MHZ:
freq = 1000000U; /* fIH = 1MHz */
break;
}
return(freq);
}
__WEAK void SystemCoreClockUpdate (void) /* Get Core Clock Frequency */
{
/* ToDo: add code to calculate the system frequency based upon the current
register settings.
This function can be used to retrieve the system core clock frequeny
after user changed register sittings. */
SystemCoreClock = CLK_GetCoreFreq();
}
void SystemInit (void)
{
/* ToDo: add code to initialize the system
do not use global variables because this function is called before
reaching pre-main. RW section maybe overwritten afterwards. */
/* RAM Parity Error Reset Disable */
SAF->RPECTL = 0x80U;
CGC->WDTCFG0 = 0x1A;
CGC->WDTCFG1 = 0x2B;
CGC->WDTCFG2 = 0x3C;
CGC->WDTCFG3 = 0x4D;
DBG->DBGSTOPCR = 0;
SystemCoreClock = CLK_GetCoreFreq();
/* NVIC Clear Pending IRQ */
NVIC->ICPR[0U] = 0xFFFFFFFF;
/* NVIC Enable IRQs */
NVIC->ISER[0U] = 0xFFFFFFFF;
/* NVIC Lower Priority */
NVIC->IP[0U] = 0xC0C0C0C0;
NVIC->IP[1U] = 0xC0C0C0C0;
NVIC->IP[2U] = 0xC0C0C0C0;
NVIC->IP[3U] = 0xC0C0C0C0;
NVIC->IP[4U] = 0xC0C0C0C0;
NVIC->IP[5U] = 0xC0C0C0C0;
NVIC->IP[6U] = 0xC0C0C0C0;
NVIC->IP[7U] = 0xC0C0C0C0;
/* restart watchdog timer */
WDT->WDTE = 0xACU;
}
......@@ -20,7 +20,7 @@ void Sys_2ms_Tasks(void)
Sys_Status_Update_Service();
Analog_Signal_Conv_Service();
AMT630H_Main();
Check_MCU_Info_in_630H();
// Check_MCU_Info_in_630H();
DoCAN_Timer_Update(2000u);
//Can_Write_Fun(&CAN_CH0_CanMsgTxOp, 2000u);无外发
CanMSg_XMS_Analysis(&CAN_CH0_CanMsgOp, 2u);
......@@ -34,13 +34,14 @@ void Sys_5ms_Tasks(void)
void Sys_10ms_Tasks(void)
{
Can_BusOff_Recover(10);
FaultCode_Service(10u);
FaultCode_Servers();
Line_In_Debounce_Service(10u);
My_Key_Service();
Data_Mileage_Write_EEPROM();
Key_Clear_Time();
Key_TimeOut_Service();
Fuel_R_Cal(10u);
Oil_R_Cal(10u);
Data_Light_Res_service(10);
BackLight_Process();
}
......@@ -73,10 +74,6 @@ void Sys_50ms_Tasks(void)
VechileSpeed_time++;
}
uint32_t ODOtest = 0;
uint32_t Triptest = 0;
uint32_t aaa = 0;
void Sys_100ms_Tasks(void)
{
BlueToothService();
......@@ -85,7 +82,7 @@ void Sys_100ms_Tasks(void)
Fuel_Cal_Sevice(100u);
Services_Mileage_Callback();
// Data_Mileage_Clear();
RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High);
// RTE_GPIO_Config(RTE_GPIO_PORT05_PIN04, GpioOut_High);
//BackLight_Process();
//TimerM_PWM_set_duty(TIMERM_COUNTER1, TIMERM_CHB, 100);
......
......@@ -4,7 +4,7 @@
* \attention
*
* This file is automatically generated by analog signals configuration tool.
* Date : 2024/6/18 22:46:57
* Date : 2024/11/9 15:54:41
* Cfg Tool Ver : 1.1.0
* Engineer : ShiHao
* (c) Heilongjiang TYW electronics co., LTD
......@@ -33,11 +33,14 @@ enum ADCChName
ADC_CH_FUEL_VREF,
ADC_CH_FUEL1,
ADC_CH_COOLANT_TEMP1_R,
ADC_CH_LIGHT_SENSITIVE,
ADC_CH_OIL_PRESSURE_R,
ADC_CH_NTC_TEMP,
};
/* Exported macro ------------------------------------------------------------*/
#define ADC_TOTAL_CH_NUMBER (5U)
#define ADC_SIGNAL_CH_NUMBER (5U)
#define ADC_TOTAL_CH_NUMBER (8U)
#define ADC_SIGNAL_CH_NUMBER (8U)
#define ADC_REF_VOLTAGE u16ADCRefVoltage
/* Exported variables --------------------------------------------------------*/
......
......@@ -4,7 +4,7 @@
* \attention
*
* This file is automatically generated by analog signals configuration tool.
* Date : 2024/6/18 22:46:57
* Date : 2024/11/9 15:54:41
* Cfg Tool Ver : 1.1.0
* Engineer : ShiHao
* (c) Heilongjiang TYW electronics co., LTD
......@@ -74,7 +74,7 @@ ADC_Data_st_t stADCData[ADC_SIGNAL_CH_NUMBER];
const uint8_t __attribute__((aligned(4))) u8ADCChList[ADC_CONV_CH_NUMBER] =
{
2U, 3U, 7U, 5U, 6U,
2U, 3U, 7U, 5U, 6U, 12U, 11U, 4U,
};
const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBER] =
......@@ -84,6 +84,9 @@ const __attribute__((aligned(4))) ADC_Ch_Cfg_st_t stADCChCfg[ADC_SIGNAL_CH_NUMBE
{ 2U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
{ 3U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 4U, 2U, 0U, 2U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 5U, 0U, 0U, 0U, 0U, 1U, ADC_Voltage_Calc_Circuit101,},
{ 6U, 3U, 0U, 5000U, 0U, 1U, ADC_Res_Calc_Circuit101,},
{ 7U, 3U, 0U, 5000U, 0U, 10U, ADC_Res_Calc_Circuit201,},
};
const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_NUMBER] =
......@@ -93,6 +96,9 @@ const __attribute__((aligned(4))) ADC_Res_List_st_t stADCResList[ADC_SIGNAL_CH_N
{ 0U, 0U, 0U, 0U,},
{ 0U, 0U, 500U, 300U,},
{ 0U, 0U, 500U, 0U,},
{ 0U, 100000U, 0U, 0U,},
{ 47000U, 0U, 47000U, 0U,},
{ 47000U, 0U, 100000U, 0U,},
};
/* Private function prototypes ----------------------------------------------*/
......
/**************************************************************************//**
* \file Analog_Signals.h
* \brief Analog signal processing
* \attention
*
* This file is automatically generated by analog signals configuration tool.
* Date : 2024/6/18 22:46:57
* Cfg Tool Ver : 1.1.0
* Engineer : ShiHao
* (c) Heilongjiang TYW electronics co., LTD
*
******************************************************************************/
#ifndef ANALOG_SIGNALS_H__
#define ANALOG_SIGNALS_H__
/* Includes -----------------------------------------------------------------*/
#include "ADC.h"
#include "Analog_Circuits.h"
#include "RTE.h"
/* C binding of definitions if building with C++ compiler */
#ifdef __cplusplus
extern {
#endif
/*! @{ */
/* Exported types ------------------------------------------------------------*/
enum ADCChName
{
ADC_CH_KL30_VOLTAGE = 0,
ADC_CH_KL15_VOLTAGE,
ADC_CH_FUEL_VREF,
ADC_CH_FUEL1,
ADC_CH_COOLANT_TEMP1_R,
};
/* Exported macro ------------------------------------------------------------*/
#define ADC_TOTAL_CH_NUMBER (5U)
#define ADC_SIGNAL_CH_NUMBER (5U)
#define ADC_REF_VOLTAGE u16ADCRefVoltage
/* Exported variables --------------------------------------------------------*/
extern volatile uint16_t u16ADCRefVoltage;
extern const uint8_t u8ADCChList[];
/* Exported functions --------------------------------------------------------*/
extern void Analog_Signal_Conv_Init(void);
extern void Analog_Signal_Conv_Stop(void);
extern void Analog_Signal_Conv_Service(void);
extern uint16_t ADC_Read_Signal(uint8_t u8ADCCh);
extern uint8_t ADC_Read_Signal_Valid(uint8_t u8ADCCh);
extern uint16_t ADC_Conv_Single_Channel(uint8_t u8ADCCh);
/*! @} */
#ifdef __cplusplus
}
#endif
#endif /* ANALOG_SIGNALS_H__ */
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