|
不知道为什么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;
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|