CheckSum校验

[file head]:
/*
*****************************************Copyright (c)**************************************************

**
**--------------文件信息--------------------------------------------------------------------------------
** 文件名称: CheckSum.c
** 文件标识:
** 描 述: 校验和处理,用RealView 3.0+编译,必须使用ARM方式编译
**
**
**--------------修改记录--------------------------------------------------------------------------------
**
** 当前版本: 1.0
** 作 者:
** 完成日期: 2007年6月30日
** 修改内容:
**
** 取代版本:
** 作 者:
** 完成日期:
********************************************************************************************************
*/

#include "config.h"


const BYTE gv_smCRCHighTbl[256]={
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0,
0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81,
... ...
[file tail]:
... ...
-----------------------------------------------------------
********************************************************************************************************
*/
DWORD CRC16CheckSum(BYTE *pbData, DWORD dwLen)
{

BYTE bTmpVal = 0;
BYTE bCRCH = 0xFF;
BYTE bCRCL = 0xFF;

DWORD dwLooper = 0;
DWORD dwRetc = EMCDCM_OK;

if((0 == dwLen) || (NULL == pbData))
{
dwRetc = EMCDCM_ERR;
}
else
{
for(dwLooper=dwLen; dwLooper>0; dwLooper--)
{
bTmpVal = bCRCH ^ (*pbData++);

bCRCH = bCRCL ^ gv_smCRCHighTbl[bTmpVal];
bCRCL = gv_smCRCLowTbl[bTmpVal];
}

*pbData++ = bCRCH;
*pbData = bCRCL;

dwRetc = EMCDCM_OK;

}

return dwRetc;

}


/*********************************************************************************************************
** End Of File
********************************************************************************************************/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值