在C语言中实现Modbus的CRC-16校验算法可以采用递归下降或查表法,这里提供一个基于传统循环计算的C语言实现,同时附上详细说明:
#include <stdint.h>
// Modbus CRC-16初始化值
#define MODBUS_CRC_INIT 0xFFFF
// Modbus CRC-16多项式
#define MODBUS_CRC_POLYNOMIAL 0xA001
// 计算单个字节的CRC-16
static uint16_t modbus_crc16_byte(uint16_t crc, uint8_t data) {
crc ^= (uint16_t