if(0x55!=LinRecHeader[0]) /* The clear count flag is not equal to 0x55 when receiving the synchronization segment */
{
recHeaderNu = 0;
BreakOkflag = 0;
}
else
{
if(2==recHeaderNu)
{
switch(LinRecHeader[1])
{
case PIDrxResp: // Receive the response header
recResponseFlag = 1;
sendResponseFlag = 0;
break;
case PIDtxResp: // Send the response header
recResponseFlag = 0;
sendResponseFlag = 1;
LPUART0->STAT |= LPUART_STAT_LBKDE_MASK;
break;
case HCMPID:
recResponseFlag = 1;
sendResponseFlag = 0;
break;
default:
LPUART0->STAT |= LPUART_STAT_LBKDE_MASK;
break;
}
recHeaderNu = 0;
BreakOkflag = 0; // Headers have been received. Clear the break flag and wait for the next Header to start
}
else
{
}
}
}
else
{
if(1==recResponseFlag)
{
LinRecResponseArray[recResponseNu] = LinRecbuffer; // Receive the response data segment
recResponseNu++;
if(8
{
recResponseNu = 0;
recResponseFlag = 0;
RecResponseFinish = 1;
LPUART0->STAT |= LPUART_STAT_LBKDE_MASK; // LIN break detect is enable
}
else
{
}
}
else
{
}
if(1==RecResponseFinish) /* Response receiving completion flag */
{
RecResponseFinish = 0;
CheckSum = LINCalcChecksum(LinRecResponseArray, LinRecHeader[1]) + LinRecResponseArray[8]; /* Calculate whether the sum of the validations equals 0xFF */