?? drv_crc.c
字號(hào):
#include "Typedef.h"
#include "Drv_Crc.h"
_U16 CrcTable[256];
void InitCrcTable( void )
{
/* CRC-CCITT 16 基于多項(xiàng)式 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計(jì)算*/
while( DataLen-- != 0 )
{
usCrc = (_U16)( usCrc << 8 ) ^ CrcTable[ (_U16)( usCrc >> 8 ) ^ *DataStartAddr++ ];
}
return usCrc;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -