一个不错的校验代码

2020-01-21 21:38发布

本帖最后由 ackyee 于 2014-11-29 19:45 编辑

一直都拿论坛的资料,这回自己也奉献一点:
一个不错的校验代码。 参考TI的CC2530官方例程得到。稍作了些调整
供大家学习交流之用

第一个函数是进行数组+校验字的 校验计算
第二个函数是根据数组计算校验字

该代码可以在串口传输,EEPROM存储等场合应用

PS 第一次在论坛传代码,好像[]在发布后会自动消失
下面的代码将数组[]特地加了空格处理,需要参考的朋友在编译过程中要自行调整


unsigned char CrcValid(unsigned char *pData, int length)
{
        int crc = 0;
        unsigned int i;
        for(i = 0; i < length; i++){
                crc ^= pData [ i ];
        }

        return (crc == 0);
}

unsigned char calcFCS(unsigned char *pBuf, unsigned char len)
{
  unsigned char rtrn = 0;

  while (len--)
  {
    rtrn ^= *pBuf++;
  }

  return rtrn;
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
ackyee
1楼-- · 2020-01-23 01:12
ijlc1314 发表于 2014-11-29 17:12
第一个函数,pData没有++

刚也发现了,后来点编辑发现是对的 pData [ i ]
确认后 又变成 pData;了  好奇怪

代码重新修改 在字符的中括号加入了空格
ackyee
2楼-- · 2020-01-23 01:32
 精彩回答 2  元偷偷看……
ackyee
3楼-- · 2020-01-23 03:25
dalarang 发表于 2014-11-29 16:35
明明是异或校验嘛

是的 就是异或校验
ackyee
4楼-- · 2020-01-23 08:31
farfar 发表于 2014-11-29 16:15
這是校驗和吧?爲什麽名字卻是CRC?

是异或校验,我的名字跟TI原先的名字相同。
ackyee
5楼-- · 2020-01-23 10:35
chengshuai0528 发表于 2014-11-29 16:38
不错,以后用得着

是的 现在写EEPROM 都加这段代码了 确实挺好用
mybigapple
6楼-- · 2020-01-23 11:09
收藏了。感谢分享啊。

一周热门 更多>