16位CRC校驗演算法
阿新 • • 發佈:2019-02-06
CRC校驗比較常用,本例校驗演算法異或0x1021.
U16 u16CRCVerify (const U8 *pu8Data,
U32 u32Len,
U16 u16CRCInit)
{
U8 u8i;
U32 u16CRC = u16CRCInit;
while (u32Len--) {
u8i = 8;
u16CRC = u16CRC ^ (((uint16_t)*pu8Data++) << 8 );
do {
if (u16CRC & 0x8000) {
u16CRC = u16CRC << 1 ^ 0x1021;
} else {
u16CRC = u16CRC << 1;
}
} while (--u8i);
}
return u16CRC;
}