drv_crc.c

来自「motorola mpc系列 mpc852cpu bsp」· C语言 代码 · 共 45 行

C
45
字号
#include "Typedef.h"
#include "Drv_Crc.h"
_U16      CrcTable[256];

void InitCrcTable( void )
{
    /*  CRC-CCITT 16 基于多项式 x^16+x^12+x^5+1,参考值 0x1021  */
    #define CRC16_POLY              0x1021

    _U16    i, j;
    _U16    usValue;

    for( i = 0; i < 256; i++ )
    {
        usValue = (_U16)(i << 8);
        
        for( j = 0; j < 8; j++ )
        {
            if( ( usValue & 0x8000 ) != 0 )
            {
                usValue = (_U16)( usValue << 1 ) ^ CRC16_POLY;
            }
            else
            {
                usValue <<= 1;
            }
        }
        
        CrcTable[i] = usValue;
    }

    return;
}
_U16 CalcCrc( _U8 *DataStartAddr, _U32 DataLen )
{
    _U16    usCrc = 0;
    /* CRC计算*/
    while( DataLen-- != 0 )
    {
        usCrc = (_U16)( usCrc << 8 ) ^ CrcTable[ (_U16)( usCrc >> 8 ) ^ *DataStartAddr++ ];
    }

    return usCrc;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?