博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STM32 CRC32与对应的软件CRC32(转)
阅读量:6220 次
发布时间:2019-06-21

本文共 1877 字,大约阅读时间需要 6 分钟。

源:

简单实现STM32 CRC32使用

使用前记得使能STM32 CRC时钟

//STM32硬件CRC32 byte数据计算,将数据移到最高位,低位补上FFu32 stm32_crc32_byte(u8 *pBuff, u32 len){    u32 i;    u8 buff[4];    u32 *p32 = (u32 *)buff;        CRC->CR = 1;    //复位CRC寄存器    buff[0] = buff[1] = buff[2] = buff[3] = 0XFF;    for(i = 0;i < len;i ++)    {        buff[3] = pBuff[i];        CRC->DR = *p32;    }    return CRC->DR;}//STM32硬件CRC32 u32数据计算u32 stm32_crc32(u32 *pBuff, u32 len){    u32 i;    CRC->CR = 1;    //复位CRC寄存器    for(i = 0;i < len;i ++)    {        CRC->DR = pBuff[i];    }    return CRC->DR;}//软件CRC32 u32数据计算u32 crc32(u32 *ptr, u32 len){    u32    xbit;    u32    data;    u32    CRC32 = 0xFFFFFFFF;    u32 bits;    const u32 dwPolynomial = 0x04c11db7;    u32    i;        for(i = 0;i < len;i ++)    {        xbit = 1 << 31;        data = ptr[i];        for (bits = 0; bits < 32; bits++)         {            if (CRC32 & 0x80000000) {                CRC32 <<= 1;                CRC32 ^= dwPolynomial;            }            else                CRC32 <<= 1;            if (data & xbit)                CRC32 ^= dwPolynomial;            xbit >>= 1;        }    }    return CRC32;}//软件CRC32 byte数据计算,将数据移到最高位,低位补上FFu32 crc32_byte(u8 *ptr, u32 len){    u32    xbit;    u32    data;    u32    CRC32 = 0xFFFFFFFF;        //初值    u32 bits;    u32    i;    u8 buff[4];    u32 *p32 = (u32 *)buff;    const u32 dwPolynomial = 0x04c11db7;        buff[0] = buff[1] = buff[2] = buff[3] = 0XFF;    for(i = 0;i < len;i ++)    {        xbit = 1 << 31;                buff[3] = ptr[i];        data = *p32;        for(bits = 0; bits < 32; bits++)         {            if (CRC32 & 0x80000000) {                CRC32 <<= 1;                CRC32 ^= dwPolynomial;            }            else                CRC32 <<= 1;            if (data & xbit)                CRC32 ^= dwPolynomial;            xbit >>= 1;        }    }    return CRC32;}

 

参考:

 

转载地址:http://wpoja.baihongyu.com/

你可能感兴趣的文章
[JavaScript] 环境与内存
查看>>
最全面的常用正则表达式大全
查看>>
不与你商量的远程强制关机
查看>>
Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(1)
查看>>
虚幻4,BP写了一个简单的三线跑酷工程
查看>>
警告okyep之辈,我要让你们抱憾终生
查看>>
逆天的H3C Comware V7 RBAC
查看>>
SQL Server 备份场景示例
查看>>
论通过测试与失败测试
查看>>
BZOJ 3172([Tjoi2013]单词-后缀数组第一题+RMQ)
查看>>
CSS border 生成三角
查看>>
如何快速去掉.svn文件夹?
查看>>
QQ彩票任意订阅内容导致骚扰用户
查看>>
遍历Javascript数组的一种方法!
查看>>
带着项目学PHP第九讲 - 如何给ecshop的wap版本首页和商品页添加商品图片
查看>>
判断顶点是否位于线段上
查看>>
权限---根据传递不用的值,显示不同的图标
查看>>
jni 写一个简单的photoshop
查看>>
作为原作者你能忍吗?
查看>>
DB2 表空间和缓冲池
查看>>