STM32F030 CRC (STD 库)
crc种类:
https://blog.csdn.net/lianyunyouyou/article/details/107217125
STM32F030的CRC库,只能用32位的,某些8位16位,只能特定的型号可以用
注意多项式不能改!,默认是 0x4C11DB7
其实使用很简单,就几个函数,注意这里 INIT值可以自己随意改,Deinit后,默认是0xffffffff的 ,结果不能 XOR任何数值!必须是0
/** * @brief Deinitializes CRC peripheral registers to their default reset values. * @param None * @retval None */ void CRC_DeInit(void) { /* Set DR register to reset value */ CRC->DR = 0xFFFFFFFF; /* Set the POL register to the reset value: 0x04C11DB7 */ CRC->POL = 0x04C11DB7; /* Reset IDR register */ CRC->IDR = 0x00; /* Set INIT register to reset value */ CRC->INIT = 0xFFFFFFFF; /* Reset the CRC calculation unit */ CRC->CR = CRC_CR_RESET; }
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); CRC_DeInit(); CRC_SetInitRegister( 0x0 ); CRCValue=CRC_CalcCRC(0x12345678);
printf( "crc = %x \r\n",CRCValue);
这个网页的CRC32设置有丢丢问题的,结果不应该做XOR的。它的默认应该就是这种:
重新改下程序,用默认的0xffffffff,不改init