15 lines
471 B
C++

#include "CRC16.h"
unsigned short CRC16(unsigned char *puchMsg, unsigned short usDataLen)
{
unsigned char uchCRCHi = 0xFF; /* 高CRC 字节初始化*/
unsigned char uchCRCLo = 0xFF; /* 低CRC 字节初始化*/
unsigned int uIndex; /* CRC 循环中的索引*/
while (usDataLen--) /* 传输消息缓冲区*/
{
uIndex = uchCRCHi ^ *puchMsg++; /* 计算CRC */
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
uchCRCLo = auchCRCLo[uIndex];
}
return (((unsigned short)uchCRCHi << 8u) | uchCRCLo);
}