|
|
发表于 2026-5-21 14:26:05
|
显示全部楼层
/*****************************************************************************
函 数 名 :u16 Calculate_CRC16(unsigned char *updata, unsigned char len)
功能描述 : CRC-16校验
输入参数 : updata 要处理的数据
len 长度
mode 0用于验算CRC 1用于生成CRC值,并复制到数组中
输出参数 :
*****************************************************************************/
u16 Calculate_CRC16(unsigned char *updata, unsigned char len, unsigned char mode)
{
unsigned int Reg_CRC = 0xffff;
unsigned char i, j;
for (i = 0; i < len; i++)
{
Reg_CRC ^= *updata++;
for (j = 0; j < 8; j++)
{
if (Reg_CRC & 0x0001)
{
Reg_CRC = Reg_CRC >> 1 ^ 0XA001;
}
else
{
Reg_CRC >>= 1;
}
}
}
if (mode == 1)
{
*updata++ = (u8)Reg_CRC;
*updata = (u8)(Reg_CRC >> 8);
}
return Reg_CRC;
} |
|