软件实现STM32硬件CRC算法
STM32系列MCU自带CRC与标准CRC存在差别,大多情况下,应用程序与STM32通信往往需要用到CRC校验时,如固件升级、通信可靠性校验,此时需要统一CRC标准。为了STM32端可以充分利用自身硬件资源,STM32可以利用自带硬件CRC,应用程序端(如上位机、服务器、云等)可以通过软件实现STM32硬件CRC算法。
uint32_t soft_crc32_st(uint32_t *pbuf, uint32_t size)
{
const uint32_t st_const_value = 0x04c11db7;
uint32_t crc_value = 0xffffffff;
uint32_t xbit;
uint32_t bits;
uint32_t i;
for(i = 0;i < size;i ++)
{
xbit = 0x80000000;
for (bits = 0; bits < 32; bits++)
{
if (crc_value & 0x80000000)
{
crc_value <<= 1;
crc_value ^= st_const_value;
}
else
{
crc_value <<= 1;
}
if (pbuf[i] & xbit)
{
crc_value ^= st_const_value;
}
xbit >>= 1;
}
}
return crc_value;
}
参考
【1】https://blog.csdn.net/lan120576664/article/details/47156067