一些函数的使用问题

2019-07-22 14:55发布

1.CRC检验函数:uint16_t Crc16(uint16_t ui16Crc, //CRC校验值的初始值,如果缓冲区都是需要校验的数,写0即可const uint8_t * pui8Data, //缓冲区
uint32_t ui32Count)//缓冲区有多少个字节
uint8_t buf[6]={0x01,0x02,0x03,0x04,0x05,0x06};
uint16_t crc,crc1;
        crc = GetCRC16(buf,6);          //计算CRC校验值,自己写的查表法函数
        crc1=Crc16(0,buf,6);      //TIVA自带的函数

程序运行结果
12.jpg
CRC计算软件结果(高低相反)
123.jpg
问题:为什么TIVA自带的函数计算出来不一样?问题在哪呢


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
19条回答
djz1992
2019-07-23 11:26
本帖最后由 djz1992 于 2016-5-16 16:40 编辑
xyz549040622 发表于 2016-5-16 15:22
CRC校验只是一个算法,里面的CRC值是需要自己填充的,你不知道TIVA 里面的校验值是哪些,出来不一样很正常 ...

看来我照抄来的校验程序跟那个CRC计算器居然还是同一个算法。。。也是运气
另外systick函数来看程序运行时间,这个计数是递减的吗?我用了一下好像是递减
我写成这样,count在定时器里累加,进函数时清零,在出函数加断点,SysTickValueGet也在进出函数时取值并求差
结果计算出来num对应的时间值很小,十几微秒,而count对应的时间值比较大,有几十微秒,相差很大,这是为什么?
我写了一个五秒的delay,count计算是五秒无误,那到底哪个准确?
函数a()

   SysTickPeriodSet(10000000);
   SysTickEnable();
   count=0;
   ui32Value1 = SysTickValueGet();
   。。函数主体。。
   ui32Value2 = SysTickValueGet();

   num=ui32Value1 -ui32Value2;
(断点)



一周热门 更多>