STM32 CRC校验

2019-07-21 07:37发布

STM32  CRC32校验很简单,只要调用库函数就可以
可是我现在有一个u8的数组,也想CRC校验,是不是就得自己写代码了啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
28条回答
513393302@qq.co
2019-07-23 12:47
楼主可以参考下面的代码,测试没有问题,和STM32F1 及F4内部CRC计算结果完全相同
#define  STM32_CRC_DEF   0x04c11db7      //STM32硬件CRC计数等式
u32 RETURN_CRC_DATA(u32 *DATA_BUF, u16 len)
{
u32    xbit = 0 ;                //CRC计算式计算 扫描变量
u32    data = 0 ;                //当前用于CRC的数据缓存
u32    CRC_DATA = 0xFFFFFFFF;    // CRC数据寄存器  返回值
u8     bits = 0 ;                    //位计数变量
while (len--)
{
  xbit = 0x80000000;
  data = *DATA_BUF++;
  for(bits = 0; bits < 32; bits++)
        {
   if(CRC_DATA & 0x80000000)   //CRC计算式计算
         {
    CRC_DATA <<= 1;
    CRC_DATA ^= STM32_CRC_DEF;
   }
   else
         {
          CRC_DATA <<= 1;
         }
                       
   if (data & xbit)   //CRC计算式计算
         {
          CRC_DATA ^= STM32_CRC_DEF;
         }
   xbit >>= 1;
  }
}
return CRC_DATA;
}

一周热门 更多>