1.CRC-8校验代码
该函数中Poly值可以修改,Poly值不一样多项式就不一样。一般取值为0x07或0x31。
//CRC-8数据校验函数
//data-要进行校验数据 length-要校验的数据长度 poly-用户输入的多项式,一般参数为0x07/0x31
uint8_t crc8(uint8_t* data, uint16_t length, uint8_t poly)
{
uint8_t i;
uint8_t crc = 0; // Initial value
while (length--)
{
crc ^= *data++; // crc ^= *data; data++;
for (i = 0; i < 8; i++)
{
if (crc & 0x80)
crc = (crc << 1) ^ poly;
else
crc <<= 1;
}
}
return crc;
}
void main(void)
{
uint8_t num[25] = { 0xD1, 0x01, 0x01, 0x01, 0x31,
0x01, 0x01, 0x00, 0x05, 0x15,
0x81, 0x12, 0x11, 0x12, 0x13,
0x25, 0x02, 0x03, 0x04, 0x00,
0x10, 0x00, 0x04, 0x02, 0x04
};
uint8_t crc = 0;
crc = crc8(num,25,0x31);
printf("num的CRC8校验是% x\n", crc);
}