69,371
社区成员
发帖
与我相关
我的任务
分享
uint16_t crc_sum(uint8_t* msg, uint8_t length)
{
uint8_t i;
uint16_t crc;
crc = 0xFFFF;
for (i = 0; i < length; i++)
{
crc = crc_polynomial(msg[i], crc);
}
return crc;
}
uint16_t crc_polynomial(uint8_t b, uint16_t acc)
{
acc = (uint8_t)(acc >> 8) | (acc << 8);
acc ^= b;
acc ^= (uint8_t)(acc & 0xff) >> 4;
acc ^= (acc << 8) << 4;
acc ^= ((acc & 0xff) << 4) << 1;
return acc;
}