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

 

 

 

 

 

 

 

posted @ 2020-07-13 15:30  XZHDJH  阅读(668)  评论(0)    收藏  举报