DTC更新
This commit is contained in:
parent
ff4b4c51bc
commit
cfca022cc0
@ -1,8 +1,8 @@
|
|||||||
/************************************************************
|
/************************************************************
|
||||||
| 文件名: DCM_DTC.c
|
| 文件名: DCM_DTC.c
|
||||||
| 描述:DTC相关服务函数
|
| 描述:DTC相关服务函数
|
||||||
|
|
|
|
||||||
| 版权声明
|
| 版权声明
|
||||||
***********************************************************/
|
***********************************************************/
|
||||||
//DCM_DTC.c
|
//DCM_DTC.c
|
||||||
#include "Dcm_App_Cfg.h"
|
#include "Dcm_App_Cfg.h"
|
||||||
@ -13,6 +13,27 @@
|
|||||||
//#include "r_fdl_types.h"
|
//#include "r_fdl_types.h"
|
||||||
#include "Dcm_extern.h"
|
#include "Dcm_extern.h"
|
||||||
|
|
||||||
|
const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
||||||
|
{ 0,0xA8,0x80,0x16},
|
||||||
|
{ 1,0xA8,0x80,0x17},
|
||||||
|
{ 2,0xA8,0x80,0x88},
|
||||||
|
{ 3,0xA8,0x81,0x23},
|
||||||
|
{ 4,0xA8,0x82,0x23},
|
||||||
|
{ 5,0xA8,0x83,0x23},
|
||||||
|
{ 6,0xA8,0x84,0x23},
|
||||||
|
{ 7,0xA8,0x85,0x23},
|
||||||
|
{ 8,0xA8,0x86,0x25},
|
||||||
|
{ 9,0xC1,0x00,0x8}},
|
||||||
|
{10,0xD1,0x10,0x87},
|
||||||
|
{11,0xD2,0x06,0x82},
|
||||||
|
{12,0xD4,0x06,0x83},
|
||||||
|
{13,0xD2,0x0B,0x82},
|
||||||
|
{14,0xD4,0x0B,0x83},
|
||||||
|
{15,0xD2,0x14,0x82},
|
||||||
|
{16,0xD4,0x14,0x83}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
||||||
{ 0,0xF0,0x06,0x16},
|
{ 0,0xF0,0x06,0x16},
|
||||||
{ 1,0xF0,0x06,0x17},
|
{ 1,0xF0,0x06,0x17},
|
||||||
@ -29,10 +50,10 @@ const TsDcm_h_DtcGroupType CaDcm_u_DtcTable[DCM_SUPDTC_COUNT]={
|
|||||||
{12,0x91,0x86,0x14},
|
{12,0x91,0x86,0x14},
|
||||||
{13,0xC0,0x73,0x00},
|
{13,0xC0,0x73,0x00},
|
||||||
};
|
};
|
||||||
|
*/
|
||||||
DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT]; // DTC 状态数组
|
DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT]; // DTC 状态数组
|
||||||
static uint16 tDiagStart; //上电复位后网络诊断延迟时间
|
static uint16 tDiagStart; //上电复位后网络诊断延迟时间
|
||||||
uint16 tDiagStartVolt; // 电源电压异常恢复后诊断延迟时间
|
uint16 tDiagStartVolt; // 电源电压异常恢复后诊断延迟时间
|
||||||
|
|
||||||
/********************************************************/
|
/********************************************************/
|
||||||
|
|
||||||
@ -501,10 +522,10 @@ static void MotorLockChk(void)
|
|||||||
static void CanDTC_CycChk(void)
|
static void CanDTC_CycChk(void)
|
||||||
{
|
{
|
||||||
PowerVoltageChk();
|
PowerVoltageChk();
|
||||||
TempMotorFeedbackChk();
|
//TempMotorFeedbackChk();
|
||||||
ModeMotorFeedbackChk();
|
//ModeMotorFeedbackChk();
|
||||||
RecMotorFeedbackChk();
|
//RecMotorFeedbackChk();
|
||||||
EvaSensorChk();
|
//EvaSensorChk();
|
||||||
}
|
}
|
||||||
|
|
||||||
extern uint8 GetNormalMsgSts(void);
|
extern uint8 GetNormalMsgSts(void);
|
||||||
@ -522,7 +543,7 @@ void CanDTC_Task(void)
|
|||||||
//CanDTC_CompErrChk();
|
//CanDTC_CompErrChk();
|
||||||
//CanDTC_MotorRunTimeChk();
|
//CanDTC_MotorRunTimeChk();
|
||||||
|
|
||||||
MotorLockChk();
|
//MotorLockChk();
|
||||||
|
|
||||||
if(DtcTestCycleTim < DTC_TEST_CYCLE_TIM)
|
if(DtcTestCycleTim < DTC_TEST_CYCLE_TIM)
|
||||||
{
|
{
|
||||||
@ -594,14 +615,14 @@ uint8 MngDcm_ReportNumberOfDTCByStatusMask(void)
|
|||||||
LaDcm_u_TempBuffer[3] = ISO_14229_1_DTC_FORMAT;
|
LaDcm_u_TempBuffer[3] = ISO_14229_1_DTC_FORMAT;
|
||||||
LaDcm_u_TempBuffer[4] = 0;
|
LaDcm_u_TempBuffer[4] = 0;
|
||||||
LaDcm_u_TempBuffer[5] = DtcCnt;
|
LaDcm_u_TempBuffer[5] = DtcCnt;
|
||||||
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(6U,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*设置NRC31*/
|
/*设置NRC31*/
|
||||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||||
}
|
}
|
||||||
return LeDcm_u_Result;
|
return LeDcm_u_Result;
|
||||||
@ -630,17 +651,17 @@ uint8 MngDcm_ReportDTCByStatusMask(void)
|
|||||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcHigh;
|
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcHigh;
|
||||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcMiddle;
|
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcMiddle;
|
||||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcLow;
|
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcLow;
|
||||||
LaDcm_u_TempBuffer[DtcReporLength++] = GetDtcStutas(DtcIndex);
|
LaDcm_u_TempBuffer[DtcReporLength++] = GetDtcStutas(DtcIndex) & DTC_STATUS_AVAILABILITY_MASK;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*设置NRC31*/
|
/*设置NRC31*/
|
||||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||||
}
|
}
|
||||||
return LeDcm_u_Result;
|
return LeDcm_u_Result;
|
||||||
@ -670,14 +691,14 @@ uint8 MngDcm_ReportDTCSnapshotRecordByDTCNumber(void)
|
|||||||
DtcReporLength = 6;
|
DtcReporLength = 6;
|
||||||
if(GetDtcSnapshotRecord(DtcIndex,LaDcm_u_TempBuffer+6,&DtcReporLength,DtcSnapshotRecordNum) != DCM_NORESULT)
|
if(GetDtcSnapshotRecord(DtcIndex,LaDcm_u_TempBuffer+6,&DtcReporLength,DtcSnapshotRecordNum) != DCM_NORESULT)
|
||||||
{
|
{
|
||||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/*设置NRC31*/
|
/*设置NRC31*/
|
||||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -685,9 +706,9 @@ uint8 MngDcm_ReportDTCSnapshotRecordByDTCNumber(void)
|
|||||||
}
|
}
|
||||||
if((DtcIndex == DCM_SUPDTC_COUNT) && (DtcReporLength == 0))
|
if((DtcIndex == DCM_SUPDTC_COUNT) && (DtcReporLength == 0))
|
||||||
{
|
{
|
||||||
/*设置NRC31*/
|
/*设置NRC31*/
|
||||||
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
MngDcm_PrepareNegRsp(VeDcm_h_RqustInfo.Sid,CaDcm_u_NRCData[DCM_NRC31]); /*整理负响应数据*/
|
||||||
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(3U,VaDcm_u_NegRspTxBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
LeDcm_u_Result = CeDcm_e_ResultNegRsp;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -731,7 +752,7 @@ uint8 MngDcm_ReportDTCExtendedDataRecordByDTCNumber(void)
|
|||||||
LaDcm_u_TempBuffer[23] = 0xFF;
|
LaDcm_u_TempBuffer[23] = 0xFF;
|
||||||
LaDcm_u_TempBuffer[24] = 0xFF;
|
LaDcm_u_TempBuffer[24] = 0xFF;
|
||||||
LaDcm_u_TempBuffer[25] = 0xFF;
|
LaDcm_u_TempBuffer[25] = 0xFF;
|
||||||
SetCanTp_TxBuffer(25,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(25,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -760,7 +781,7 @@ uint8 MngDcm_ReportSupportedDTC(void)
|
|||||||
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcLow;
|
LaDcm_u_TempBuffer[DtcReporLength++] = CaDcm_u_DtcTable[DtcIndex].DtcLow;
|
||||||
LaDcm_u_TempBuffer[DtcReporLength++] = DTC_STATUS_AVAILABILITY_MASK;
|
LaDcm_u_TempBuffer[DtcReporLength++] = DTC_STATUS_AVAILABILITY_MASK;
|
||||||
}
|
}
|
||||||
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
SetCanTp_TxBuffer(DtcReporLength,LaDcm_u_TempBuffer); /*调用接口发送响应数据*/
|
||||||
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
LeDcm_u_Result = CeDcm_e_ResultPosRsp;
|
||||||
return LeDcm_u_Result;
|
return LeDcm_u_Result;
|
||||||
}
|
}
|
||||||
|
@ -7,12 +7,12 @@
|
|||||||
|
|
||||||
|
|
||||||
#define DCM_19SUPDTCEXTDATARECORD_COUNT (4U)
|
#define DCM_19SUPDTCEXTDATARECORD_COUNT (4U)
|
||||||
/* 19 06支持的DTCExtDataRecord 参数个数 */
|
/* 19 06֧<EFBFBD>ֵ<EFBFBD>DTCExtDataRecord <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
#define DCM_SUPDTC_COUNT ( 14U )
|
#define DCM_SUPDTC_COUNT ( 17U )
|
||||||
/* 产品支持的DTC个数 */
|
/* <EFBFBD><EFBFBD>Ʒ֧<EFBFBD>ֵ<EFBFBD>DTC<EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
||||||
|
|
||||||
|
|
||||||
#define DTC_TEST_CYCLE_TIM 40U // 40mS一个周期
|
#define DTC_TEST_CYCLE_TIM 40U // 40mSһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
|
||||||
#define ISO_15031_6_DTC_FORMAT 0U
|
#define ISO_15031_6_DTC_FORMAT 0U
|
||||||
#define ISO_14229_1_DTC_FORMAT 1U
|
#define ISO_14229_1_DTC_FORMAT 1U
|
||||||
@ -21,19 +21,19 @@
|
|||||||
#define DTC_STATUS_AVAILABILITY_MASK 0x09U
|
#define DTC_STATUS_AVAILABILITY_MASK 0x09U
|
||||||
|
|
||||||
typedef uint8 (*ReportDTCExtDataFun)(uint8* LeDemDtcNum,uint8 LeDemParameter,uint8* LeDemDataRecord);
|
typedef uint8 (*ReportDTCExtDataFun)(uint8* LeDemDtcNum,uint8 LeDemParameter,uint8* LeDemDataRecord);
|
||||||
/*19 06 服务支持的 DTCExtDataRecordNumber 列表结构体*/
|
/*19 06 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>֧<EFBFBD>ֵ<EFBFBD> DTCExtDataRecordNumber <20>б<EFBFBD><D0B1>ṹ<EFBFBD><E1B9B9>*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8 DTCExtDataRecordNumber; /*扩展数据number*/
|
uint8 DTCExtDataRecordNumber; /*<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>number*/
|
||||||
ReportDTCExtDataFun Function; /*扩展数据number 对应函数的处理函数*/
|
ReportDTCExtDataFun Function; /*<EFBFBD><EFBFBD>չ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>number <20><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
||||||
}DTCExtDataRecordType;
|
}DTCExtDataRecordType;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
uint8 DtcIndex;
|
uint8 DtcIndex;
|
||||||
uint8 DtcHigh; /*DTC 高字节*/
|
uint8 DtcHigh; /*DTC <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
||||||
uint8 DtcMiddle; /*DTC 中间字节*/
|
uint8 DtcMiddle; /*DTC <EFBFBD>м<EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
||||||
uint8 DtcLow; /*DTC 低字节*/
|
uint8 DtcLow; /*DTC <EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD>*/
|
||||||
}TsDcm_h_DtcGroupType;
|
}TsDcm_h_DtcGroupType;
|
||||||
|
|
||||||
typedef enum
|
typedef enum
|
||||||
@ -93,6 +93,8 @@ extern DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT];
|
|||||||
|
|
||||||
#define AC_LOW_VOLTAGE 0
|
#define AC_LOW_VOLTAGE 0
|
||||||
#define AC_OVER_VOLTAGE 1
|
#define AC_OVER_VOLTAGE 1
|
||||||
|
#define AC_BusOff 3
|
||||||
|
|
||||||
#define AC_TEMP_MOTOR_SHORT_CUT_TO_VCC 2
|
#define AC_TEMP_MOTOR_SHORT_CUT_TO_VCC 2
|
||||||
#define AC_TEMP_MOTOR_SHORT_CUT_TO_GND 3
|
#define AC_TEMP_MOTOR_SHORT_CUT_TO_GND 3
|
||||||
#define AC_TEMP_MOTOR_LOCK 4
|
#define AC_TEMP_MOTOR_LOCK 4
|
||||||
@ -104,7 +106,7 @@ extern DtcStutas_T DtcStutas[DCM_SUPDTC_COUNT];
|
|||||||
#define AC_REC_MOTOR_LOCK 10
|
#define AC_REC_MOTOR_LOCK 10
|
||||||
#define AC_EVA_SENSOR_SHORT_CUT_TO_VCC 11
|
#define AC_EVA_SENSOR_SHORT_CUT_TO_VCC 11
|
||||||
#define AC_EVA_SENSOR_SHORT_CUT_TO_GND 12
|
#define AC_EVA_SENSOR_SHORT_CUT_TO_GND 12
|
||||||
#define AC_BusOff 13
|
|
||||||
|
|
||||||
|
|
||||||
extern uint8_t BusOffCnt ;
|
extern uint8_t BusOffCnt ;
|
||||||
|
@ -503,12 +503,13 @@ void GetManufacturingDate(unsigned char* date)
|
|||||||
//获取can总线出错状<E99499>?
|
//获取can总线出错状<E99499>?
|
||||||
//返回<E8BF94>??
|
//返回<E8BF94>??
|
||||||
/******************************/
|
/******************************/
|
||||||
|
extern unsigned char ucBusOffModeState;
|
||||||
unsigned char GetCanBusOffErr(void)
|
unsigned char GetCanBusOffErr(void)
|
||||||
{
|
{
|
||||||
// if(BusOff_flag==0)
|
if(ucBusOffModeState>=8)
|
||||||
// return 0;
|
return 1;
|
||||||
// else
|
else
|
||||||
// return 1;
|
return 0;
|
||||||
}
|
}
|
||||||
/******************************/
|
/******************************/
|
||||||
//获取BCM节点丢失状<E5A4B1>?
|
//获取BCM节点丢失状<E5A4B1>?
|
||||||
|
@ -78,7 +78,7 @@ void __near RSCAN_INTCANGRECC_interrupt(void)
|
|||||||
R_CAN_ReadRxFIFO(CAN_RXFIFO1, &RxCanMessage);
|
R_CAN_ReadRxFIFO(CAN_RXFIFO1, &RxCanMessage);
|
||||||
if ((RxCanMessage.IDL == CANTP_ADDR_PHY_REQ) || (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ))
|
if ((RxCanMessage.IDL == CANTP_ADDR_PHY_REQ) || (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ))
|
||||||
{
|
{
|
||||||
if (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ && RxCanMessage.DB[1] == 0x3E && RxCanMessage.DB[2] == 0x80)
|
if (RxCanMessage.IDL == CANTP_ADDR_FUNC_REQ && RxCanMessage.DB[1] == 0x3E && RxCanMessage.DB[2] == 0x80 && RxCanMessage.DB[0] == 0x02)
|
||||||
resetS3Server(); /*重置S3server计时*/
|
resetS3Server(); /*重置S3server计时*/
|
||||||
else
|
else
|
||||||
RxIndicationCanIf_Messages(0, RxCanMessage.IDL, RxCanMessage.DLC, RxCanMessage.DB);
|
RxIndicationCanIf_Messages(0, RxCanMessage.IDL, RxCanMessage.DLC, RxCanMessage.DB);
|
||||||
|
@ -561,6 +561,11 @@ void BusOff_Detect(void)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
if (ucBusOffModeState < 8)
|
||||||
|
{
|
||||||
|
ucBusOffModeState++;
|
||||||
|
}
|
||||||
|
|
||||||
uiBusOffCnt = SLOW_BUSOFF_THRESHOULD; //soft recover
|
uiBusOffCnt = SLOW_BUSOFF_THRESHOULD; //soft recover
|
||||||
}
|
}
|
||||||
BusOff_Recovery();
|
BusOff_Recovery();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user