参数:Data(数据块起始地址)、DataSize(数据块 Byte 的个数) 返回:CRC 计算结果 uint16 CRC_Calculate(uint8 *data, uint16 dataSize) { uint8 i; uint8 temp; uint16 j; uint16 CRCode; CRCode=0xffff; for(j=0;j<dataSize;j++){ CRCode = CRCode^data[j]; for( i = 0; i < 8; i++ ){ temp = CRCode & 0x0001; CRCode = (CRCode >> 1); if(temp ==1){ CRCode = (CRCode^0xA001);// 0xA001 为预置多项式,常量值 } } } return CRCode; }是干什么的
时间: 2023-05-31 10:06:14 浏览: 162
1; CRCode = CRCode>>1; if(temp == 1) CRCode = CRCode^0xA001; } } return CRCode; }
这是一个计算 CRC 校验码的函数,输入参数为数据块的起始地址和数据块的大小,返回值为 CRC 计算结果。具体实现为:首先将校验码 CRCode 初始化为 0xFFFF,然后依次对数据块中每一个 Byte 进行 CRC 计算,具体就是先将 CRCode 与该 Byte 异或,然后对 CRCode 进行 8 次位移和异或操作,最后返回 CRC 计算结果。
阅读全文