51单片机 计算的crc检验是错误的。
单片机吧
全部回复
仅看楼主
level 1
喜欢TT没理由
楼主
代码是网上找的,看了很多,查表法都一样。
声明的属于加长度和不加,会出不一样的结果。
比如uint8 d[lbk][rbk] 和 uint8 d[lbk]6[rbk] 两个结果也不一样。
反正没一个是对的,正确的应该是0A84
算出来的就是错误的。有高人指点一下吗?
2024年01月30日 09点01分
1
level 1
975573328A
又找其他的试,估计没人那么闲给你看程序
2024年01月30日 09点01分
2
level 1
皇家蓝矿
你试一下不用数组,直接两个数据运算
2024年01月31日 04点01分
3
喜欢TT没理由
老师,我试了一下只用一个0x01算出来是对的,换成0x03就是错的。。我把数组换成6个0x01也是错误的。。
2024年01月31日 04点01分
level 1
皇家蓝矿
返回值那里怎么把低位数据移到高位去了
2024年01月31日 04点01分
4
喜欢TT没理由
谢谢老师,搞定了,直接在声明分配数组元素算出来就是错的,声明带下标的数组,在主函数里给数组赋值,算出来就是对,啥原因也不太清楚。。
2024年01月31日 12点01分
喜欢TT没理由
这是源代码,我检测是的时候是分别返回低位和高位,和正确结果对不上。
2024年01月31日 04点01分
皇家蓝矿
@喜欢TT没理由
没必要对上网人称老师,太过谦逊。我看了你这个代码大概知道是什么意思,但是你的问题描述看了很多遍也不知具体是什么问题,下次如果能简化提问就好了。
2024年01月31日 12点01分
level 13
smarkfetish
多项式是啥?
2024年01月31日 06点01分
5
level 13
smarkfetish
新手的错误一般就是井底之蛙式的,以为自己的头顶那一片天空就是全世界。CRC算法多了去了,楼主代码只能看出来是CRC16,常用的就有这么多。
如果讲不清楚,那么你把你认为是正确的数据和CRC贴出来,越多越好。现在你什么都不说,别人也都不是算命的。
2024年01月31日 08点01分
6
喜欢TT没理由
井底之蛙我认,但我没拽吧,我要是真懂那么多就没必要求助了,什么多项式我是真不懂,但我会看,初始ffff 异或0,我百度的代码就是modbus用的。我只是疑惑为啥算不对。不过谢谢你的回复,已经搞定了。
2024年01月31日 12点01分
1