上传文件至 /

This commit is contained in:
2025-07-05 07:59:41 +08:00
parent 9f0b84b83d
commit 625e70432e
5 changed files with 1430 additions and 0 deletions

539
User.c Normal file
View File

@@ -0,0 +1,539 @@
#include "MAIN.H"
#include "RTC.H"
#include "temperature.H"
#include <string.h>
//can<61><6E>Ϣ
UnInfCan UnInfCan_1 = {0};
UnSwOut UnSwOut_1 = {0};
//CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
uword CntCan_1 = 0;
bit FlgCan_1 = 0;
//<2F><>һ<EFBFBD>βɼ<CEB2><C9BC><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD>ָʾ
bit FlgOneTime = 0;
uword RgCanPerid = 1000;
UnTimeOutput sleeptime = {0};
UnTimeOutput waketime = {0};
UnTimeOutput currenttime = {0};
UnTimeOutput un_time_output1 = {0};//<2F><><EFBFBD><EFBFBD><EFBFBD>趨ʱ<E8B6A8><CAB1>
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf<67><66><EFBFBD><EFBFBD>
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf<67><66><EFBFBD><EFBFBD>
UnTimeOutput waketimelast = {0};
UnTimeOutput wake_time_10min = {0};
SystemState sleepstate = STATE_INIT;
//PWM 20181227
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
ubyte powerstate = 0;//<2F><>Դ״̬
ubyte vcu_can_cnt = 0; // ֡<>ۼ<EFBFBD><DBBC><EFBFBD>
ubyte vcu_can_last = 0; // ֡<>ۼ<EFBFBD><DBBC><EFBFBD><EFBFBD><EFBFBD>ȥֵ
bool flg_wake_ecu = 0; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
bool flg_KGF = 0;//KGF<47><46><EFBFBD>ѱ<EFBFBD>־
ubyte can_error_cnt = 0;
ubyte can_error_flg = 0;
//-----------------------------------------------------------------------
//RTC<54><43>ʱ<EFBFBD><CAB1>
//-----------------------------------------------------------------------
void RTCProcess(void)
{
//************************************************************************
//////CAN<41><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
//************************************************************************
}
//can<61><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CanErrorProcess(void)
{
ubyte ubNSRL;
ubyte ubNSRH;
ubyte ubResetLEC = 0x3F;
//-------------------------------------------
EA = 0;
CAN_pushAMRegs(); // push the CAN Access Mediator Registers
SFR_PAGE(_su0, SST0); // switch to page 0
CAN_vWriteCANAddress(CAN_NSR0);
CAN_vReadEN();
ubNSRL = CAN_DATA0;
ubNSRH = CAN_DATA1;
if (ubNSRL & 0x20) // if ALERT
{
CAN_vInit();
}
if (ubNSRL & 0x07) // if LEC
{
ubResetLEC = 0x38;
}
//// Reset LEC, TXOK, RXOK, ALERT, EWRN, BOFF, LLE, LOE (if set)
CAN_vWriteCANAddress(CAN_NSR0); // Addressing CAN_NSR0
CAN_DATA0 = ~(ubNSRL & ubResetLEC); // load CAN_NSR0 status register[7-0]
CAN_DATA1 = ~(ubNSRH); // load CAN_NSR0 status register[15-8]
CAN_vWriteEN(D0_VALID+D1_VALID); // Data0 and Data1 are Valid for
SFR_PAGE(_su0, RST0); // restore the old SCU page
CAN_popAMRegs(); // restore the CAN Access Mediator Registers
EA = 1;
}
void CanTransmit(void)
{
//----------------- --------
// װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
CAN_waitTransmit(DF_SwTx);//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
CAN_vTransmit(DF_SwTx);
}
}
void canSendTo(ubyte index,ubyte *buf)
{
ubyte CanTransmitbuf[8] = {0,0,0,0,0,0,0,0};
//----------------- --------
CanTransmitbuf[2] = buf[0];
CanTransmitbuf[3] = buf[1];
CanTransmitbuf[0] = buf[2];
CanTransmitbuf[1] = buf[3];
CanTransmitbuf[6] = buf[4];
CanTransmitbuf[7] = buf[5];
CanTransmitbuf[4] = buf[6];
CanTransmitbuf[5] = buf[7];
CAN_waitTransmit(index);//<2F><><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><C8B4><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><CFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// װ<><D7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CAN_vTransmit(index);
}
//CAN<41><4E><EFBFBD><EFBFBD>һ֡
void CanTX(void)
{
//-----------------------------------
UnInfCan_1.ArrData.Arr[0][3] = currenttime.bit_data.year;
UnInfCan_1.ArrData.Arr[0][2] = currenttime.bit_data.month;
UnInfCan_1.ArrData.Arr[0][1] = currenttime.bit_data.day;
UnInfCan_1.ArrData.Arr[0][0] = currenttime.bit_data.hour;
UnInfCan_1.ArrData.Arr[0][7] = currenttime.bit_data.week;
UnInfCan_1.ArrData.Arr[0][6] = currenttime.bit_data.minute;
UnInfCan_1.ArrData.Arr[0][5] = currenttime.bit_data.second;
UnInfCan_1.ArrData.Arr[0][4] = sleepstate;
CanTransmit();
}
//<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//------------------------------------------------------------------
void SystemStateMachine(SystemState *RgSTT)
{
ubyte i = 0;
//----------------------------------------------
switch (*RgSTT)
{
//-------------------------------------------
case STATE_INIT:
if(NORMAL == flg_wake_ecu)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
if(STOP_PIN == ON) //<2F><>ͣ<EFBFBD><CDA3><EFBFBD>ػ<EFBFBD><D8BB><EFBFBD>
{
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB9A4>״̬
wake_time_10min.bit_data.day = 0;
wake_time_10min.bit_data.hour = 0;
wake_time_10min.bit_data.week = 0;
wake_time_10min.bit_data.minute = 10;
bm8563ClearAlarmFlag(); //<2F><><EFBFBD><EFBFBD>0
bm8563SetAlarm(&wake_time_10min);//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
}
else
{
*RgSTT = STATE_OFF; // RTC<54><43><EFBFBD>ѣ<EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><D7BC>
}
}
else
{
*RgSTT = STATE_INIT;
}
break;
//-------------------------------------------
case STATE_ON:
if(bm8563CheckAlarmFlag() || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) || (WAKE_UP_PIN == OFF) )//10<31><30><EFBFBD>ӵ<EFBFBD><D3B5>˻<EFBFBD><CBBB>߰<EFBFBD><DFB0>¼<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD>߻<EFBFBD><DFBB>߹ر<DFB9><D8B1>ܿ<EFBFBD><DCBF><EFBFBD>
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
bm8563ClearAlarmFlag();
bm8563SetAlarm(&sleeptime);
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
BATTERY_PIN = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
}
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>״̬
{
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>STATE_ON2
}
else
{
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>
}
// <20><><EFBFBD><EFBFBD>ON״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
//-------------------------------------------
case STATE_ON2:
if(POWER_STANDBY == powerstate)//<2F>µ<EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>ON<4F><4E>ʱ<EFBFBD>ж<EFBFBD>
{
*RgSTT = STATE_ON; //
wake_time_10min.bit_data.day = 0;
wake_time_10min.bit_data.hour = 0;
wake_time_10min.bit_data.week = 0;
wake_time_10min.bit_data.minute = 10;
bm8563ClearAlarmFlag(); //<2F><><EFBFBD><EFBFBD>0
bm8563SetAlarm(&wake_time_10min);//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
}
else if(WAKE_UP_PIN == OFF)//<2F>ܿ<EFBFBD><DCBF>عر<D8B9>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
bm8563ClearAlarmFlag();
bm8563SetAlarm(&sleeptime);
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
BATTERY_PIN = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
}
else
{
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>
}
break;
//-------------------------------------------
case STATE_OFF:
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<C2B4><CEBB><EFBFBD>
bm8563ClearAlarmFlag();
bm8563SetAlarm(&waketime);
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
*RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
break;
//-------------------------------------------
case STATE_OFF2:
if (STOP_PIN == ON) //<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
*RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB9A4>״̬
wake_time_10min.bit_data.day = 0;
wake_time_10min.bit_data.hour = 0;
wake_time_10min.bit_data.week = 0;
wake_time_10min.bit_data.minute = 10;
bm8563ClearAlarmFlag(); //<2F><><EFBFBD><EFBFBD>0
bm8563SetAlarm(&wake_time_10min);//<2F><><EFBFBD><EFBFBD>10<31><30><EFBFBD><EFBFBD>
}
else if(POWER_WORKING == powerstate)//<2F><><EFBFBD>ڹ<EFBFBD><DAB9><EFBFBD>״̬
{
*RgSTT = STATE_ON2; // <20><><EFBFBD><EFBFBD>״̬
}
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<2F>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
bm8563SetAlarm(&waketime);
*RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
}
else if(bm8563CheckAlarmFlag()) //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD>
{
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
bm8563ClearAlarmFlag();
bm8563SetAlarm(&sleeptime);
KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
BATTERY_PIN = 0;//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
}
else
{
*RgSTT = STATE_OFF2; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
}
break;
default:break;
}
// switch (*RgSTT)
// {
// //-------------------------------------------
// case STATE_INIT:
// if(1 == flgwakeecu)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// if (WAKE_UP_PIN == ON) {
// *RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB9A4>״̬
// } else {
// *RgSTT = STATE_OFF; // <20><><EFBFBD><EFBFBD>ΪOFF<46><46>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><D7BC>
// }
// }
// else
// {
// *RgSTT = STATE_INIT;
// }
// break;
// //-------------------------------------------
// case STATE_ON:
// if( (WAKE_UP_PIN == OFF) || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) )//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><DCBF>ضϿ<D8B6><CFBF><EFBFBD><EFBFBD>߼<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD>ذ<EFBFBD><D8B0><EFBFBD><EFBFBD>Ҵ<EFBFBD><D2B4><EFBFBD><EFBFBD>µ<EFBFBD>ģʽ
// {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<C2B4><CEBB><EFBFBD>
// bm8563SetAlarm(&sleeptime);
// *RgSTT = STATE_OFF; // <20><><EFBFBD><EFBFBD>ΪOFF<46><46>ֱ<EFBFBD>ӽ<EFBFBD><D3BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׼<EFBFBD><D7BC>
// KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
// CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
// PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
// }
// else
// {
// *RgSTT = STATE_ON; // <20><><EFBFBD><EFBFBD>ΪON<4F><4E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EBB9A4>״̬
// }
// // <20><><EFBFBD><EFBFBD>ON״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// break;
// //-------------------------------------------
// case STATE_OFF:
// if (WAKE_UP_PIN == ON) {
// *RgSTT = STATE_ON; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
// } else {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<C2B4><CEBB><EFBFBD>
// bm8563SetAlarm(&waketime);
//
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
//
// *RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD>
// }
// break;
// //-------------------------------------------
// case STATE_OFF2:
// if (WAKE_UP_PIN == ON) //<2F>˳<EFBFBD><CBB3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// *RgSTT = STATE_ON; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
// }
// else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<2F>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>Ļ<EFBFBD><C4BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// {
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
// bm8563SetAlarm(&waketime);
// *RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
// }
// else if (bm8563CheckAlarmFlag())
// {
// // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
// bm8563ClearAlarmFlag();
//
// bm8563SetAlarm(&sleeptime);
// KGF_PIN = 0; //KGF<47><46><EFBFBD><EFBFBD>
// CAN_PIN = 1; //canоƬ<D0BE><C6AC><EFBFBD><EFBFBD>
// *RgSTT = STATE_OFF2; // <20><><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><D1BA><EFBFBD><EFBFBD>жϴ<D0B6><CFB4><EFBFBD><EFBFBD><EFBFBD>
// PS_vSetPowerDown();//<2F><><EFBFBD><EFBFBD>
// }
// else
// {
// *RgSTT = STATE_OFF2; // <20>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>
// }
// break;
// default:break;
// }
}
//CAN<41><4E><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>
void CanRXTX(void)
{
stCAN_SWObj StrCanRx = {0};
uword tmp = 0;
ubyte i = 0,j = 0;
uword TimeTemp = 0;
uword HoursTemp = 0;
uword DaysTemp = 0;
//------------------------------------
if(CAN_ubNewData(DF_RXTIME))
{
CAN_vGetMsgObj(DF_RXTIME, &StrCanRx);
un_time_output1.arr[3] = StrCanRx.ulDATAL.ubDB[0];
un_time_output1.arr[2] = StrCanRx.ulDATAL.ubDB[1];
un_time_output1.arr[1] = StrCanRx.ulDATAL.ubDB[2];
un_time_output1.arr[0] = StrCanRx.ulDATAL.ubDB[3];
un_time_output1.arr[7] = StrCanRx.ulDATAH.ubDB[0];
un_time_output1.arr[6] = StrCanRx.ulDATAH.ubDB[1];
un_time_output1.arr[5] = StrCanRx.ulDATAH.ubDB[2];
un_time_output1.arr[4] = StrCanRx.ulDATAH.ubDB[3];
CAN_vReleaseObj(DF_RXTIME);
bm8563SetTime(&un_time_output1);
}
if(CAN_ubNewData(DF_SwRxKGF2))//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD><EFBFBD>
{
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
CAN_vReleaseObj(DF_SwRxKGF2);
flg_KGF = 1;
}
//----------------------------------------------------------
if(CAN_ubNewData(DF_SwRx))
{
CAN_vGetMsgObj(DF_SwRx, &StrCanRx);
UnInfCan_1.ArrData.ArrRX[0][3] = StrCanRx.ulDATAL.ubDB[0];
UnInfCan_1.ArrData.ArrRX[0][2] = StrCanRx.ulDATAL.ubDB[1];
UnInfCan_1.ArrData.ArrRX[0][1] = StrCanRx.ulDATAL.ubDB[2];
UnInfCan_1.ArrData.ArrRX[0][0] = StrCanRx.ulDATAL.ubDB[3];
UnInfCan_1.ArrData.ArrRX[0][7] = StrCanRx.ulDATAH.ubDB[0];
UnInfCan_1.ArrData.ArrRX[0][6] = StrCanRx.ulDATAH.ubDB[1];
UnInfCan_1.ArrData.ArrRX[0][5] = StrCanRx.ulDATAH.ubDB[2];
UnInfCan_1.ArrData.ArrRX[0][4] = StrCanRx.ulDATAH.ubDB[3];
CAN_vReleaseObj(DF_SwRx);
vcu_can_cnt ++;//<2F>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD>ۼ<EFBFBD>
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬
//<2F><EFBFBD><E8B6A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD> <20><> Сʱ
HoursTemp = TimeTemp / 60;
sleeptime.bit_data.minute = TimeTemp % 60;
// Сʱ <20><> <20><>
DaysTemp = HoursTemp / 24;
sleeptime.bit_data.hour = HoursTemp % 24;
if(DaysTemp >= 31)//<2F>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD>Χ
{
sleeptime.bit_data.day = 31;
}
else
{
sleeptime.bit_data.day = DaysTemp;
}
//<2F><EFBFBD><E8B6A8><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>
// <20><><EFBFBD><EFBFBD> <20><> Сʱ
HoursTemp = TimeTemp / 60;
waketime.bit_data.minute = TimeTemp % 60;
// Сʱ <20><> <20><>
DaysTemp = HoursTemp / 24;
waketime.bit_data.hour = HoursTemp % 24;
if(DaysTemp >= 31)//<2F>³<EFBFBD><C2B3><EFBFBD><EFBFBD><EFBFBD>Χ
{
waketime.bit_data.day = 31;
}
else
{
waketime.bit_data.day = DaysTemp;
}
}
UnSwSample_1.arr[2] = waketime.bit_data.minute;
UnSwSample_1.arr[1] = sleeptime.bit_data.minute;
//<2F><><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
SystemStateMachine(&sleepstate);
//1000ms<6D><73><EFBFBD><EFBFBD>һ֡
if(!FlgCan_1)
{
FlgCan_1 = 1;
bm8563GetTime(&currenttime);//1s<31><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>ʱ<EFBFBD><CAB1>
// CanTX();
UnSwSample_1.bit_data.temperature[1] = 0;
UnSwSample_1.bit_data.temperature[0] = 0;
if(vcu_can_cnt == vcu_can_last)//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
{
flg_wake_ecu = FAULT;
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF15 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF16 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01;// ң<><D2A3><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01;// <20><><EFBFBD><EFBFBD><E7BDBB><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01;// <20><><EFBFBD><EFBFBD><E7BDBB><EFBFBD><EFBFBD>
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01;//KGF20<32>ӵ<EFBFBD><D3B5><EFBFBD><EFBFBD><EFBFBD>
un_inf_can_kgf_output1.bit_data.KGF13 = 0x01;// <20><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
}
}
else
{
flg_wake_ecu = NORMAL;
vcu_can_last = vcu_can_cnt;//<2F><><EFBFBD>ݸ<EFBFBD><DDB8><EFBFBD>
}
GetTemp();//1s<31>ɼ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>
UnSwSample_1.bit_data.emergency_stop_switch = STOP_PIN;
UnSwSample_1.bit_data.High_voltage_switch = ~WAKE_UP_PIN;
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
if(1 == flg_KGF)//<2F>ȴ<EFBFBD>KGF<47><46><EFBFBD>Ѻ<EFBFBD><D1BA>ٷ<EFBFBD><D9B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1);
}
}
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625<32>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><DFB4><EFBFBD>
{
can_error_flg = can_error_cnt;
CAN_vInit();
can_error_cnt = 0;
}
}