STM32内置CRC模块的使用

[复制链接]
67803|86
lanjackg2003 发表于 2015-7-30 11:26 | 显示全部楼层
准备用STM32 的CRC32 Mark一下,好好研读.
qq513393302 发表于 2016-2-13 11:06 | 显示全部楼层
谢谢城主分享,刚好用上这个。修改成了自己的习惯,测试没有问题
#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;
}




hotpower 发表于 2016-6-21 15:39 来自手机 | 显示全部楼层
http://www.21ic.com/tools/HotWC3_V1.22.html
haohaojian 发表于 2017-5-11 17:22 | 显示全部楼层
96楼的算法试了,直接放到stm32中和硬计算结果一致,只是在发送数据长度比较长的时候和pc端不一致。不知如何解决这个问题。
Justin^^huang 发表于 2018-4-19 14:01 | 显示全部楼层
学习学习
fsmaidou 发表于 2018-4-20 11:05 | 显示全部楼层
qq513393302 发表于 2016-2-13 11:06
谢谢城主分享,刚好用上这个。修改成了自己的习惯,测试没有问题
#define  STM32_CRC_DEF   0x04c11db7     ...

你好,我想问一下,len这个参数代表啥,通过你写的代码并不能知道len的初值是是多少
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部