STM32的CRC32 實現代碼 -- Ether

來源:互聯網
上載者:User

標籤:

uint32_t reverse_32( uint32_t data ){  asm("rbit r0,r0");  return data;};uint32_t crc32_ether( char *buf, int len, int clear ){  uint32_t *p = (uint32_t*) buf;  uint32_t crc, crc_reg;  if ( clear )    CRC_ResetDR( );  while ( len >= 4 )  {    crc_reg = CRC_CalcCRC( reverse_32( *p++ ) );    len -= 4;  }  crc = reverse_32( crc_reg );  if ( len )  {    CRC_CalcCRC( crc_reg );    switch ( len )    {      case 1:        crc_reg = CRC_CalcCRC( reverse_32( ( *p & 0xFF ) ^ crc ) >> 24 );        crc = ( crc >> 8 ) ^ reverse_32( crc_reg );        break;      case 2:        crc_reg = CRC_CalcCRC( reverse_32( ( *p & 0xFFFF ) ^ crc ) >> 16 );        crc = ( crc >> 16 ) ^ reverse_32( crc_reg );        break;      case 3:        crc_reg = CRC_CalcCRC( reverse_32( ( *p & 0xFFFFFF ) ^ crc ) >> 8 );        crc = ( crc >> 24 ) ^ reverse_32( crc_reg );        break;    }  }  return ~crc;}

 

STM32的CRC32 實現代碼 -- Ether

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.