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自带的函数
程序运行结果
CRC计算软件结果(高低相反)
问题:为什么TIVA自带的函数计算出来不一样?问题在哪呢
crc16有很多种算法,要使用一样的多项式才能得到相同的结果
这个没用过,我试试看。
看来我照抄来的校验程序跟那个CRC计算器居然还是同一个算法。。。也是运气
另外systick函数来看程序运行时间,这个计数是递减的吗?我用了一下好像是递减
我写成这样,count在定时器里累加,进函数时清零,在出函数加断点,SysTickValueGet也在进出函数时取值并求差
结果计算出来num对应的时间值很小,十几微秒,而count对应的时间值比较大,有几十微秒,相差很大,这是为什么?
我写了一个五秒的delay,count计算是五秒无误,那到底哪个准确?
函数a()
{
SysTickPeriodSet(10000000);
SysTickEnable();
count=0;
ui32Value1 = SysTickValueGet();
。。函数主体。。
ui32Value2 = SysTickValueGet();
num=ui32Value1 -ui32Value2;
(断点)
}
一周热门 更多>