[原创]STM32 CRC32计算单元的C实现

2019-12-23 18:38发布

不知道为什么STM32的CRC计算单元不是常见的Crc32计算方法,可能是这样做硬件比较容易实现吧
数据传输的时候会用到Crc校验,STM32里面的计算方法又有点不一样
因此写了个用C实现的,可以用在上位机这样的程序里面
考虑到这段代码一般是在PC中运行,就没有写成查Table的方式了

//////////////////////////////////////////////////////////
///
///  CRC32 Calculator for STM32
///  Author:   lxyppc
///  E-Mail:   lxyppc@163.com
///  Version:  1.0
///  Data:     2009-04-13
///
///  This program is based on STOne-32's
///  http://www.st.com/mcu/forums-cat-7171-23.html
///
//////////////////////////////////////////////////////////

unsigned long CrcGen_STM32(unsigned long data[], unsigned long size)
{
    unsigned long crc = 0xFFFFFFFF;
    for(unsigned long i=0;i<size;i++){
        unsigned long temp = data;
        for(unsigned long j=0;j<32;j++){
            if( (crc ^ temp) & 0x80000000 ){
                crc = 0x04C11DB7 ^ (crc<<1);
            }else{
                crc <<=1;
            }
            temp<<=1;
        }
    }
    return crc;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。