#define uint32_t unsigned int
#define uint16_t unsigned int
#define uint8_t unsigned char
/**
* @brief 计算byte校验
* @param CRC CRC值
* @param Byte 要检验的byte
* @retval CRC值
*/
uint16_t CRC_Byte(uint16_t CRC,uint8_t Byte)
{
CRC=(uint16_t)(CRC^((uint16_t)Byte<<8));
int i=0;
for(i=0;i<8;i++)
{
if((CRC&0x8000)==0x8000)
{
CRC=(CRC<<1)^0x1021;//多项式
}
else
{
CRC=CRC<<1;
}
}
return (uint16_t)(CRC&0xffff);
}
/**
* @brief CRC_16校验
* @param CRCArray CRC数组
* @param Length 长度
* @retval 校验结果
*/
uint16_t CRC_16_Check (uint8_t *CRCArray,uint16_t Length)
{
//初始值
uint16_t CRC16=0x78;
int i=0;
for(i=0;i<Length;i++)
{
CRC16=CRC_Byte(CRC16,(uint8_t)CRCArray[i]);
}
return CRC16;
}
CRC-16校验
最新推荐文章于 2023-08-30 10:30:32 发布