Labview中CRC校验

CRC生成多项式G(x)= x^16 + x^15 + x^13 + 1   根据该多项式系数,就可以判断CRC值为16位两字节数。从bit0位 到 bit15位 ,可知系数为1010 0000 0000 0001,所以简记为OxAOO1。

//uc_p_Fst:校验的起始数据指针
//uc_p_End:指向校验结束数据的下一个数据的指针
//ui_CRC:初始数据(注意有些网上给出的程序习惯初始值为0 或初始值为0xffff,这两种情况下校验时的方向不同,前者校验位左移,后者右移,具体原因我也解释不清楚。)

uint16 CheckCRC(uint8* uc_p_Fst,uint8* uc_p_End,uint16 ui_CRC)
{
     uint16 ui_Reg,i;
     while(uc_p_Fst < uc_p_End)
   {
      ui_CRC = ui_CRC ^ (((uint16)(*uc_p_Fst))<<8);
      for(i=0;i<8;i++)
     {
        ui_Reg = ui_CRC & 0x8000;
        if(ui_Reg)
       {
          ui_CRC <<=1;   //注意左移
          ui_CRC = ui_CRC ^ 0xA001;  // 这个地方就是用到不同的CRC生成多项式,做相应的修改
       }
        else  ui_CRC <<=1;
     }
       uc_p_Fst ++;
   }
      return(ui_CRC);
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值