stm32芯片CRC校验程序编写问题,求教高手!!

2019-07-14 20:57发布

算法(c# 语言)如下:(这个是论文上的范例)
public virtual byte GetCRCByte(byte[] data)
{
int crc = 0x0; (初始值为0)
foreach (byte bt in data)
{
crc = crc ^ bt;
for (int j = 1; j <= 8; j++)
{
if ((crc & 0x80) == 0x80)
crc = (crc << 1) ^ 0xE5;
多项式值为E5,被校验值左移
else
crc = crc << 1; }
}
return (byte)crc;
}
校验示例:
被校验字节串:3165430C00408F01,CRC 值为
07H。


现在我想用C语言编写:如下,结果CRC 值为C2H。求高手指导!
unsigned char GetCRC(unsigned char *ptr, unsigned char len)
{
       unsigned char crc=0x00;
       unsigned char i;
       while(len--)
       {
           crc=crc^*ptr++;
           for(i=0;i<8;i++)
            {
                if(crc&0x80==0x80) //if(crc & 0x01)
                {
                     crc=(crc<<1)^0xE5;                    
                }
                else
                {
                     crc=crc<<1;
                }
            }
       }
       return crc;

}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。