uint16_t ModbusCRC16(uint8_t *data, uint16_t length)
{
uint16_t crc = 0xFFFF; // CRC初始值
for (uint16_t i = 0; i < length; i++) {
crc ^= (uint16_t)data[i]; // XOR字节数据
for (uint8_t j = 0; j < 8; j++) {
if (crc & 0x0001) { // 检查LSB
crc >>= 1; // 右移1位
crc ^= 0xA001; // XOR多项式值
} else {
crc >>= 1; // 右移1位
}
}
}
return crc;
}
04-24
1305
1305
07-22
3758
3758
07-11

被折叠的 条评论
为什么被折叠?



