下面给个crc32的计算函数,这个函数计算的结果与STM32F 单片机上硬件单元的计算结果相同。
#define POLY 0x04C11DB7
uint32_t crc32(uint32_t *addr, int num)
{
uint32_t crc = 0xFFFFFFFF;
int i = 0;
for (; num > 0; num–)
{
crc = crc ^ (*addr++);
for (i = 0; i < 32; i++)
{
if (crc & 0x80000000)
crc = (crc << 1) ^ POLY;
else
crc <<= 1;
}
crc &= 0xFFFFFFFF;
}
return (crc);
}
uint8_t crc_buf[8] = {0xBE, 0xEF, 0x55, 0xaa, 0xcc, 0xdd, 0xcc, 0xdd};