crc16.c
372 字节
#include "crc16.h"
uint16_t crc16bitbybit(uint8_t *ptr, uint16_t len)
{
uint8_t i;
uint16_t crc = 0xffff;
uint16_t polynom = 0xA001;//CRC校验
if (len == 0)
{
len = 1;
}
while (len--)
{
crc ^= *ptr;
for (int i = 0; i<8; i++)
{
if (crc & 1)
{
crc >>= 1;
crc ^= polynom;
}
else
{
crc >>= 1;
}
}
ptr++;
}
return crc;
}