更新 User.c
注释多余计算机的KGF通道
This commit is contained in:
244
User.c
244
User.c
@@ -2,14 +2,14 @@
|
|||||||
#include "RTC.H"
|
#include "RTC.H"
|
||||||
#include "temperature.H"
|
#include "temperature.H"
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
//can<EFBFBD><EFBFBD>Ϣ
|
//can信息
|
||||||
UnInfCan UnInfCan_1 = {0};
|
UnInfCan UnInfCan_1 = {0};
|
||||||
UnSwOut UnSwOut_1 = {0};
|
UnSwOut UnSwOut_1 = {0};
|
||||||
|
|
||||||
//CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//CAN发送周期
|
||||||
uword CntCan_1 = 0;
|
uword CntCan_1 = 0;
|
||||||
bit FlgCan_1 = 0;
|
bit FlgCan_1 = 0;
|
||||||
//<EFBFBD><EFBFBD>һ<EFBFBD>βɼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָʾ
|
//第一次采集到有效数据指示
|
||||||
bit FlgOneTime = 0;
|
bit FlgOneTime = 0;
|
||||||
|
|
||||||
uword RgCanPerid = 1000;
|
uword RgCanPerid = 1000;
|
||||||
@@ -17,40 +17,40 @@ uword RgCanPerid = 1000;
|
|||||||
UnTimeOutput sleeptime = {0};
|
UnTimeOutput sleeptime = {0};
|
||||||
UnTimeOutput waketime = {0};
|
UnTimeOutput waketime = {0};
|
||||||
UnTimeOutput currenttime = {0};
|
UnTimeOutput currenttime = {0};
|
||||||
UnTimeOutput un_time_output1 = {0};//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>趨ʱ<EFBFBD><EFBFBD>
|
UnTimeOutput un_time_output1 = {0};//接收设定时间
|
||||||
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
UnInfCanKGFOutput un_inf_can_kgf_output2 = {0};//kgf输出
|
||||||
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
UnInfCanKGFOutput un_inf_can_kgf_output1 = {0};//kgf输出
|
||||||
UnTimeOutput waketimelast = {0};
|
UnTimeOutput waketimelast = {0};
|
||||||
UnTimeOutput wake_time_10min = {0};
|
UnTimeOutput wake_time_10min = {0};
|
||||||
SystemState sleepstate = STATE_INIT;
|
SystemState sleepstate = STATE_INIT;
|
||||||
//PWM 20181227
|
//PWM 20181227
|
||||||
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
ubyte PwmH[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
|
||||||
|
|
||||||
ubyte powerstate = 0;//<EFBFBD><EFBFBD>Դ״̬
|
ubyte powerstate = 0;//电源状态
|
||||||
|
|
||||||
ubyte vcu_can_cnt = 0; // ֡<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD>
|
ubyte vcu_can_cnt = 0; // 帧累加器
|
||||||
ubyte vcu_can_last = 0; // ֡<EFBFBD>ۼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȥֵ
|
ubyte vcu_can_last = 0; // 帧累加器过去值
|
||||||
bool flg_wake_ecu = 0; //<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
bool flg_wake_ecu = 0; //控制器唤醒标志
|
||||||
bool flg_KGF = 0;//KGF<EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD>־
|
bool flg_KGF = 0;//KGF唤醒标志
|
||||||
|
|
||||||
ubyte can_error_cnt = 0;
|
ubyte can_error_cnt = 0;
|
||||||
ubyte can_error_flg = 0;
|
ubyte can_error_flg = 0;
|
||||||
|
|
||||||
|
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
//RTC<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//RTC定时器
|
||||||
//-----------------------------------------------------------------------
|
//-----------------------------------------------------------------------
|
||||||
void RTCProcess(void)
|
void RTCProcess(void)
|
||||||
{
|
{
|
||||||
//************************************************************************
|
//************************************************************************
|
||||||
//////CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//////CAN发送周期
|
||||||
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
|
if(FlgCan_1){CntCan_1++;if(CntCan_1 >= RgCanPerid){FlgCan_1=0; CntCan_1=0;}}else{CntCan_1=0;}
|
||||||
|
|
||||||
//************************************************************************
|
//************************************************************************
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//can<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//can错误处理
|
||||||
void CanErrorProcess(void)
|
void CanErrorProcess(void)
|
||||||
{
|
{
|
||||||
ubyte ubNSRL;
|
ubyte ubNSRL;
|
||||||
@@ -90,10 +90,10 @@ void CanErrorProcess(void)
|
|||||||
void CanTransmit(void)
|
void CanTransmit(void)
|
||||||
{
|
{
|
||||||
//----------------- --------
|
//----------------- --------
|
||||||
// װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 装载数据
|
||||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||||
{
|
{
|
||||||
CAN_waitTransmit(DF_SwTx);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
CAN_waitTransmit(DF_SwTx);//发送前等待上一帧发送完毕,这样不会丢帧
|
||||||
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
|
CAN_vLoadData(DF_SwTx, (ulong *)(&UnInfCan_1.ArrData.Arr[0][0]));
|
||||||
CAN_vTransmit(DF_SwTx);
|
CAN_vTransmit(DF_SwTx);
|
||||||
}
|
}
|
||||||
@@ -111,12 +111,12 @@ void canSendTo(ubyte index,ubyte *buf)
|
|||||||
CanTransmitbuf[4] = buf[6];
|
CanTransmitbuf[4] = buf[6];
|
||||||
CanTransmitbuf[5] = buf[7];
|
CanTransmitbuf[5] = buf[7];
|
||||||
|
|
||||||
CAN_waitTransmit(index);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<EFBFBD>ȴ<EFBFBD><EFBFBD><EFBFBD>һ֡<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᶪ֡
|
CAN_waitTransmit(index);//发送前等待上一帧发送完毕,这样不会丢帧
|
||||||
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// װ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_vLoadData(index, (ulong *)CanTransmitbuf);// 装载数据
|
||||||
CAN_vTransmit(index);
|
CAN_vTransmit(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
//CAN<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡
|
//CAN发送一帧
|
||||||
void CanTX(void)
|
void CanTX(void)
|
||||||
{
|
{
|
||||||
//-----------------------------------
|
//-----------------------------------
|
||||||
@@ -132,7 +132,7 @@ void CanTX(void)
|
|||||||
CanTransmit();
|
CanTransmit();
|
||||||
}
|
}
|
||||||
|
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
//休眠处理函数
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
void SystemStateMachine(SystemState *RgSTT)
|
void SystemStateMachine(SystemState *RgSTT)
|
||||||
{
|
{
|
||||||
@@ -143,21 +143,21 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
{
|
{
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
case STATE_INIT:
|
case STATE_INIT:
|
||||||
if(NORMAL == flg_wake_ecu)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(NORMAL == flg_wake_ecu)//控制器唤醒
|
||||||
{
|
{
|
||||||
if(STOP_PIN == ON) //<EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>ػ<EFBFBD><EFBFBD><EFBFBD>
|
if(STOP_PIN == ON) //急停开关唤醒
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪON<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EFBFBD>״̬
|
*RgSTT = STATE_ON; // 引脚为ON,进入工作状态
|
||||||
wake_time_10min.bit_data.day = 0;
|
wake_time_10min.bit_data.day = 0;
|
||||||
wake_time_10min.bit_data.hour = 0;
|
wake_time_10min.bit_data.hour = 0;
|
||||||
wake_time_10min.bit_data.week = 0;
|
wake_time_10min.bit_data.week = 0;
|
||||||
wake_time_10min.bit_data.minute = 10;
|
wake_time_10min.bit_data.minute = 10;
|
||||||
bm8563ClearAlarmFlag(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
bm8563ClearAlarmFlag(); //先清0
|
||||||
bm8563SetAlarm(&wake_time_10min);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bm8563SetAlarm(&wake_time_10min);//设置10分钟
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_OFF; // RTC<EFBFBD><EFBFBD><EFBFBD>ѣ<EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_OFF; // RTC唤醒,直接进入休眠准备
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -168,100 +168,100 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
|
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
case STATE_ON:
|
case STATE_ON:
|
||||||
if(bm8563CheckAlarmFlag() || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) || (WAKE_UP_PIN == OFF) )//10<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD>˻<EFBFBD><EFBFBD>߰<EFBFBD><EFBFBD>¼<EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߹ر<EFBFBD><EFBFBD>ܿ<EFBFBD><EFBFBD><EFBFBD>
|
if(bm8563CheckAlarmFlag() || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) || (WAKE_UP_PIN == OFF) )//10分钟到了或者按下急停且休眠或者关闭总开关
|
||||||
{
|
{
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 处理定时唤醒
|
||||||
bm8563ClearAlarmFlag();
|
bm8563ClearAlarmFlag();
|
||||||
bm8563SetAlarm(&sleeptime);
|
bm8563SetAlarm(&sleeptime);
|
||||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
KGF_PIN = 0; //KGF休眠
|
||||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_PIN = 1; //can芯片休眠
|
||||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BATTERY_PIN = 0;//电池休眠
|
||||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON; // 保持状态(唤醒后由中断处理)
|
||||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
PS_vSetPowerDown();//休眠
|
||||||
}
|
}
|
||||||
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>״̬
|
else if( (POWER_WORKING == powerstate) || (POWER_EMERGENCY == powerstate) )//等于工作状态
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>STATE_ON2
|
*RgSTT = STATE_ON2; // 进入STATE_ON2
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON; // 保持
|
||||||
}
|
}
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ON״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 保持ON状态无需额外操作
|
||||||
break;
|
break;
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
case STATE_ON2:
|
case STATE_ON2:
|
||||||
if(POWER_STANDBY == powerstate)//<EFBFBD>µ<EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD>ON<EFBFBD><EFBFBD>ʱ<EFBFBD>ж<EFBFBD>
|
if(POWER_STANDBY == powerstate)//下低压电就进入ON定时判断
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON; //
|
*RgSTT = STATE_ON; //
|
||||||
wake_time_10min.bit_data.day = 0;
|
wake_time_10min.bit_data.day = 0;
|
||||||
wake_time_10min.bit_data.hour = 0;
|
wake_time_10min.bit_data.hour = 0;
|
||||||
wake_time_10min.bit_data.week = 0;
|
wake_time_10min.bit_data.week = 0;
|
||||||
wake_time_10min.bit_data.minute = 10;
|
wake_time_10min.bit_data.minute = 10;
|
||||||
bm8563ClearAlarmFlag(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
bm8563ClearAlarmFlag(); //先清0
|
||||||
bm8563SetAlarm(&wake_time_10min);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bm8563SetAlarm(&wake_time_10min);//设置10分钟
|
||||||
}
|
}
|
||||||
else if(WAKE_UP_PIN == OFF)//<EFBFBD>ܿ<EFBFBD><EFBFBD>عر<EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
else if(WAKE_UP_PIN == OFF)//总开关关闭直接休眠
|
||||||
{
|
{
|
||||||
bm8563ClearAlarmFlag();
|
bm8563ClearAlarmFlag();
|
||||||
bm8563SetAlarm(&sleeptime);
|
bm8563SetAlarm(&sleeptime);
|
||||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
KGF_PIN = 0; //KGF休眠
|
||||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_PIN = 1; //can芯片休眠
|
||||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BATTERY_PIN = 0;//电池休眠
|
||||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON2; // 保持状态(唤醒后由中断处理)
|
||||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
PS_vSetPowerDown();//休眠
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_ON2; // 保持
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
case STATE_OFF:
|
case STATE_OFF:
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<EFBFBD><EFBFBD><EFBFBD>
|
// 并设置下次唤醒
|
||||||
bm8563ClearAlarmFlag();
|
bm8563ClearAlarmFlag();
|
||||||
bm8563SetAlarm(&waketime);
|
bm8563SetAlarm(&waketime);
|
||||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
|
|
||||||
*RgSTT = STATE_OFF2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_OFF2; // 进入休眠监控
|
||||||
break;
|
break;
|
||||||
|
|
||||||
//-------------------------------------------
|
//-------------------------------------------
|
||||||
case STATE_OFF2:
|
case STATE_OFF2:
|
||||||
if (STOP_PIN == ON) //<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if (STOP_PIN == ON) //退出休眠条件
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪON<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EFBFBD>״̬
|
*RgSTT = STATE_ON; // 引脚为ON,进入工作状态
|
||||||
wake_time_10min.bit_data.day = 0;
|
wake_time_10min.bit_data.day = 0;
|
||||||
wake_time_10min.bit_data.hour = 0;
|
wake_time_10min.bit_data.hour = 0;
|
||||||
wake_time_10min.bit_data.week = 0;
|
wake_time_10min.bit_data.week = 0;
|
||||||
wake_time_10min.bit_data.minute = 10;
|
wake_time_10min.bit_data.minute = 10;
|
||||||
bm8563ClearAlarmFlag(); //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>0
|
bm8563ClearAlarmFlag(); //先清0
|
||||||
bm8563SetAlarm(&wake_time_10min);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>10<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
bm8563SetAlarm(&wake_time_10min);//设置10分钟
|
||||||
}
|
}
|
||||||
else if(POWER_WORKING == powerstate)//<EFBFBD><EFBFBD><EFBFBD>ڹ<EFBFBD><EFBFBD><EFBFBD>״̬
|
else if(POWER_WORKING == powerstate)//等于工作状态
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_ON2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
|
*RgSTT = STATE_ON2; // 保持状态
|
||||||
}
|
}
|
||||||
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<EFBFBD>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//比较值是否一样,不一样的话立马更新
|
||||||
{
|
{
|
||||||
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
bm8563SetAlarm(&waketime);
|
bm8563SetAlarm(&waketime);
|
||||||
*RgSTT = STATE_OFF2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_OFF2; // 保持状态(唤醒后由中断处理)
|
||||||
}
|
}
|
||||||
else if(bm8563CheckAlarmFlag()) //<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>䵽
|
else if(bm8563CheckAlarmFlag()) //唤醒时间到
|
||||||
{
|
{
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// 处理定时唤醒
|
||||||
bm8563ClearAlarmFlag();
|
bm8563ClearAlarmFlag();
|
||||||
bm8563SetAlarm(&sleeptime);
|
bm8563SetAlarm(&sleeptime);
|
||||||
KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
KGF_PIN = 0; //KGF休眠
|
||||||
CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
CAN_PIN = 1; //can芯片休眠
|
||||||
BATTERY_PIN = 0;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
BATTERY_PIN = 0;//电池休眠
|
||||||
*RgSTT = STATE_OFF2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_OFF2; // 保持状态(唤醒后由中断处理)
|
||||||
PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
PS_vSetPowerDown();//休眠
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
*RgSTT = STATE_OFF2; // <EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
*RgSTT = STATE_OFF2; // 外部唤醒
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:break;
|
default:break;
|
||||||
@@ -280,12 +280,12 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
// {
|
// {
|
||||||
// //-------------------------------------------
|
// //-------------------------------------------
|
||||||
// case STATE_INIT:
|
// case STATE_INIT:
|
||||||
// if(1 == flgwakeecu)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// if(1 == flgwakeecu)//控制器唤醒
|
||||||
// {
|
// {
|
||||||
// if (WAKE_UP_PIN == ON) {
|
// if (WAKE_UP_PIN == ON) {
|
||||||
// *RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪON<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EFBFBD>״̬
|
// *RgSTT = STATE_ON; // 引脚为ON,进入工作状态
|
||||||
// } else {
|
// } else {
|
||||||
// *RgSTT = STATE_OFF; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪOFF<EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_OFF; // 引脚为OFF,直接进入休眠准备
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
@@ -296,62 +296,62 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
|
|
||||||
// //-------------------------------------------
|
// //-------------------------------------------
|
||||||
// case STATE_ON:
|
// case STATE_ON:
|
||||||
// if( (WAKE_UP_PIN == OFF) || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) )//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ܿ<EFBFBD><EFBFBD>ضϿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ<EFBFBD><EFBFBD><EFBFBD>ذ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>µ<EFBFBD>ģʽ
|
// if( (WAKE_UP_PIN == OFF) || ( (STOP_PIN == OFF) && (POWER_STANDBY == powerstate) ) )//休眠条件:总开关断开或者急停开关按下且处于下电模式
|
||||||
// {
|
// {
|
||||||
// // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<EFBFBD><EFBFBD><EFBFBD>
|
// // 并设置下次唤醒
|
||||||
// bm8563SetAlarm(&sleeptime);
|
// bm8563SetAlarm(&sleeptime);
|
||||||
// *RgSTT = STATE_OFF; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪOFF<EFBFBD><EFBFBD>ֱ<EFBFBD>ӽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_OFF; // 引脚为OFF,直接进入休眠准备
|
||||||
// KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// KGF_PIN = 0; //KGF休眠
|
||||||
// CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// CAN_PIN = 1; //can芯片休眠
|
||||||
// PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// PS_vSetPowerDown();//休眠
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// *RgSTT = STATE_ON; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ΪON<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>빤<EFBFBD><EFBFBD>״̬
|
// *RgSTT = STATE_ON; // 引脚为ON,进入工作状态
|
||||||
// }
|
// }
|
||||||
// // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ON״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// // 保持ON状态无需额外操作
|
||||||
// break;
|
// break;
|
||||||
|
|
||||||
// //-------------------------------------------
|
// //-------------------------------------------
|
||||||
// case STATE_OFF:
|
// case STATE_OFF:
|
||||||
// if (WAKE_UP_PIN == ON) {
|
// if (WAKE_UP_PIN == ON) {
|
||||||
// *RgSTT = STATE_ON; // <EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_ON; // 外部唤醒
|
||||||
// } else {
|
// } else {
|
||||||
// // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>´λ<EFBFBD><EFBFBD><EFBFBD>
|
// // 并设置下次唤醒
|
||||||
// bm8563SetAlarm(&waketime);
|
// bm8563SetAlarm(&waketime);
|
||||||
//
|
//
|
||||||
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
//
|
//
|
||||||
// *RgSTT = STATE_OFF2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_OFF2; // 进入休眠监控
|
||||||
// }
|
// }
|
||||||
// break;
|
// break;
|
||||||
|
|
||||||
// //-------------------------------------------
|
// //-------------------------------------------
|
||||||
// case STATE_OFF2:
|
// case STATE_OFF2:
|
||||||
// if (WAKE_UP_PIN == ON) //<EFBFBD>˳<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// if (WAKE_UP_PIN == ON) //退出休眠条件
|
||||||
// {
|
// {
|
||||||
// *RgSTT = STATE_ON; // <EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_ON; // 外部唤醒
|
||||||
// }
|
// }
|
||||||
// else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//<EFBFBD>Ƚ<EFBFBD>ֵ<EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// else if(0 != memcmp(&waketimelast,&waketime,sizeof(UnTimeOutput)))//比较值是否一样,不一样的话立马更新
|
||||||
// {
|
// {
|
||||||
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
// memcpy(&waketimelast,&waketime,sizeof(UnTimeOutput));
|
||||||
// bm8563SetAlarm(&waketime);
|
// bm8563SetAlarm(&waketime);
|
||||||
// *RgSTT = STATE_OFF2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_OFF2; // 保持状态(唤醒后由中断处理)
|
||||||
// }
|
// }
|
||||||
// else if (bm8563CheckAlarmFlag())
|
// else if (bm8563CheckAlarmFlag())
|
||||||
// {
|
// {
|
||||||
// // <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// // 处理定时唤醒
|
||||||
// bm8563ClearAlarmFlag();
|
// bm8563ClearAlarmFlag();
|
||||||
//
|
//
|
||||||
// bm8563SetAlarm(&sleeptime);
|
// bm8563SetAlarm(&sleeptime);
|
||||||
// KGF_PIN = 0; //KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// KGF_PIN = 0; //KGF休眠
|
||||||
// CAN_PIN = 1; //canоƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// CAN_PIN = 1; //can芯片休眠
|
||||||
// *RgSTT = STATE_OFF2; // <EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϴ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_OFF2; // 保持状态(唤醒后由中断处理)
|
||||||
// PS_vSetPowerDown();//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// PS_vSetPowerDown();//休眠
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// *RgSTT = STATE_OFF2; // <EFBFBD>ⲿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// *RgSTT = STATE_OFF2; // 外部唤醒
|
||||||
// }
|
// }
|
||||||
// break;
|
// break;
|
||||||
// default:break;
|
// default:break;
|
||||||
@@ -361,7 +361,7 @@ void SystemStateMachine(SystemState *RgSTT)
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//CAN<EFBFBD><EFBFBD><EFBFBD>ͽ<EFBFBD><EFBFBD><EFBFBD>
|
//CAN发送接收
|
||||||
void CanRXTX(void)
|
void CanRXTX(void)
|
||||||
{
|
{
|
||||||
stCAN_SWObj StrCanRx = {0};
|
stCAN_SWObj StrCanRx = {0};
|
||||||
@@ -391,7 +391,7 @@ void CanRXTX(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(CAN_ubNewData(DF_SwRxKGF2))//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(CAN_ubNewData(DF_SwRxKGF2))//等待KGF唤醒
|
||||||
{
|
{
|
||||||
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
|
CAN_vGetMsgObj(DF_SwRxKGF2, &StrCanRx);
|
||||||
|
|
||||||
@@ -420,22 +420,22 @@ void CanRXTX(void)
|
|||||||
|
|
||||||
CAN_vReleaseObj(DF_SwRx);
|
CAN_vReleaseObj(DF_SwRx);
|
||||||
|
|
||||||
vcu_can_cnt ++;//<EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>
|
vcu_can_cnt ++;//节点在线检测累加
|
||||||
|
|
||||||
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ״̬
|
powerstate = UnInfCan_1.ArrData.ArrRX[0][4];//整车电源状态
|
||||||
|
|
||||||
//<EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//设定休眠时间
|
||||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][0] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][1] << 8) ;//唤醒时间
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Сʱ
|
// 分钟 → 小时
|
||||||
HoursTemp = TimeTemp / 60;
|
HoursTemp = TimeTemp / 60;
|
||||||
sleeptime.bit_data.minute = TimeTemp % 60;
|
sleeptime.bit_data.minute = TimeTemp % 60;
|
||||||
|
|
||||||
// Сʱ <20><> <20><>
|
// 小时 → 天
|
||||||
DaysTemp = HoursTemp / 24;
|
DaysTemp = HoursTemp / 24;
|
||||||
sleeptime.bit_data.hour = HoursTemp % 24;
|
sleeptime.bit_data.hour = HoursTemp % 24;
|
||||||
|
|
||||||
if(DaysTemp >= 31)//<EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
if(DaysTemp >= 31)//月超过范围
|
||||||
{
|
{
|
||||||
sleeptime.bit_data.day = 31;
|
sleeptime.bit_data.day = 31;
|
||||||
}
|
}
|
||||||
@@ -444,18 +444,18 @@ void CanRXTX(void)
|
|||||||
sleeptime.bit_data.day = DaysTemp;
|
sleeptime.bit_data.day = DaysTemp;
|
||||||
}
|
}
|
||||||
|
|
||||||
//<EFBFBD>趨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
//设定唤醒时间
|
||||||
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
TimeTemp = UnInfCan_1.ArrData.ArrRX[0][2] + ((ulong)UnInfCan_1.ArrData.ArrRX[0][3] << 8);//唤醒时间
|
||||||
|
|
||||||
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> Сʱ
|
// 分钟 → 小时
|
||||||
HoursTemp = TimeTemp / 60;
|
HoursTemp = TimeTemp / 60;
|
||||||
waketime.bit_data.minute = TimeTemp % 60;
|
waketime.bit_data.minute = TimeTemp % 60;
|
||||||
|
|
||||||
// Сʱ <20><> <20><>
|
// 小时 → 天
|
||||||
DaysTemp = HoursTemp / 24;
|
DaysTemp = HoursTemp / 24;
|
||||||
waketime.bit_data.hour = HoursTemp % 24;
|
waketime.bit_data.hour = HoursTemp % 24;
|
||||||
|
|
||||||
if(DaysTemp >= 31)//<EFBFBD>³<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
if(DaysTemp >= 31)//月超过范围
|
||||||
{
|
{
|
||||||
waketime.bit_data.day = 31;
|
waketime.bit_data.day = 31;
|
||||||
}
|
}
|
||||||
@@ -468,38 +468,38 @@ void CanRXTX(void)
|
|||||||
UnSwSample_1.arr[2] = waketime.bit_data.minute;
|
UnSwSample_1.arr[2] = waketime.bit_data.minute;
|
||||||
UnSwSample_1.arr[1] = sleeptime.bit_data.minute;
|
UnSwSample_1.arr[1] = sleeptime.bit_data.minute;
|
||||||
|
|
||||||
//<EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD>
|
//休眠处理
|
||||||
SystemStateMachine(&sleepstate);
|
SystemStateMachine(&sleepstate);
|
||||||
|
|
||||||
|
|
||||||
//1000ms<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ֡
|
//1000ms发送一帧
|
||||||
if(!FlgCan_1)
|
if(!FlgCan_1)
|
||||||
{
|
{
|
||||||
FlgCan_1 = 1;
|
FlgCan_1 = 1;
|
||||||
|
|
||||||
bm8563GetTime(¤ttime);//1s<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>ʱ<EFBFBD><EFBFBD>
|
bm8563GetTime(¤ttime);//1s更新一次时钟
|
||||||
// CanTX();
|
// CanTX();
|
||||||
|
|
||||||
UnSwSample_1.bit_data.temperature[1] = 0;
|
UnSwSample_1.bit_data.temperature[1] = 0;
|
||||||
UnSwSample_1.bit_data.temperature[0] = 0;
|
UnSwSample_1.bit_data.temperature[0] = 0;
|
||||||
|
|
||||||
if(vcu_can_cnt == vcu_can_last)//<EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(vcu_can_cnt == vcu_can_last)//数据一样表示故障
|
||||||
{
|
{
|
||||||
flg_wake_ecu = FAULT;
|
flg_wake_ecu = FAULT;
|
||||||
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output2.bit_data.KGF01 = 0x01;// 计算机
|
||||||
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01;// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output2.bit_data.KGF02 = 0x01;// 计算机
|
||||||
un_inf_can_kgf_output2.bit_data.KGF15 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// un_inf_can_kgf_output2.bit_data.KGF15 = 0x01;// 计算机
|
||||||
un_inf_can_kgf_output2.bit_data.KGF16 = 0x01;// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// un_inf_can_kgf_output2.bit_data.KGF16 = 0x01;// 计算机
|
||||||
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01;// ң<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output2.bit_data.KGF03 = 0x01;// 遥控器
|
||||||
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01;// <EFBFBD><EFBFBD><EFBFBD>罻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output2.bit_data.KGF05 = 0x01;// 网络交换机
|
||||||
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01;// <EFBFBD><EFBFBD><EFBFBD>罻<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output2.bit_data.KGF06 = 0x01;// 网络交换机
|
||||||
|
|
||||||
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01;//KGF20<EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output2.bit_data.KGF04 = 0x01;//KGF20接的主控
|
||||||
un_inf_can_kgf_output1.bit_data.KGF13 = 0x01;// <EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
un_inf_can_kgf_output1.bit_data.KGF13 = 0x01;// 低压充电
|
||||||
|
|
||||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||||
{
|
{
|
||||||
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);
|
canSendTo(DF_SwTxKGF2,(ubyte *)&un_inf_can_kgf_output2.arr[0]);
|
||||||
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
canSendTo(DF_SwTxKGF1,(ubyte *)&un_inf_can_kgf_output1.arr[0]);
|
||||||
@@ -508,22 +508,22 @@ void CanRXTX(void)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
flg_wake_ecu = NORMAL;
|
flg_wake_ecu = NORMAL;
|
||||||
vcu_can_last = vcu_can_cnt;//<EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD><EFBFBD><EFBFBD>
|
vcu_can_last = vcu_can_cnt;//数据更新
|
||||||
}
|
}
|
||||||
|
|
||||||
GetTemp();//1s<EFBFBD>ɼ<EFBFBD>һ<EFBFBD><EFBFBD><EFBFBD>¶<EFBFBD>
|
GetTemp();//1s采集一次温度
|
||||||
UnSwSample_1.bit_data.emergency_stop_switch = STOP_PIN;
|
UnSwSample_1.bit_data.emergency_stop_switch = STOP_PIN;
|
||||||
UnSwSample_1.bit_data.High_voltage_switch = ~WAKE_UP_PIN;
|
UnSwSample_1.bit_data.High_voltage_switch = ~WAKE_UP_PIN;
|
||||||
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
|
UnSwSample_1.bit_data.CH03 = flg_wake_ecu;
|
||||||
|
|
||||||
if(1 == flg_KGF)//<EFBFBD>ȴ<EFBFBD>KGF<EFBFBD><EFBFBD><EFBFBD>Ѻ<EFBFBD><EFBFBD>ٷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
if(1 == flg_KGF)//等待KGF唤醒后再发送数据
|
||||||
{
|
{
|
||||||
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1);
|
canSendTo(DF_SwTxTemp,(ubyte *)&UnSwSample_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625<EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ߴ<EFBFBD><EFBFBD><EFBFBD>
|
if( (0x40 == can_error_cnt) || (0x80 == can_error_cnt) )//20250625判断是否出现总线错误
|
||||||
{
|
{
|
||||||
can_error_flg = can_error_cnt;
|
can_error_flg = can_error_cnt;
|
||||||
CAN_vInit();
|
CAN_vInit();
|
||||||
|
|||||||
Reference in New Issue
Block a user