汇集网友智慧,解决技术难题
GD32F303cct6 pc 代码 GD32F303 CRC
赞0
评论
2024-06-20
2024-06-18
yangxiaor520 发表于 2024-6-9 17:02 网上很多CRC的C语言代码,学习一下。
2024-06-16
vivilyly 发表于 2024-6-4 10:20 #include "gd32f30x.h" uint32_t crc32_table[256];
2024-06-09
2024-06-08
2024-06-07
点击图片添加到编辑器内容中
点击文件名将附件添加到文章中
提交
tyw
314个答案
天意无罪
284个答案
xch
199个答案
jjjyufan
197个答案
coody
179个答案
chunyang
135个答案
LcwSwust
134个答案
呐咯密密
105个答案
赞0
评论
2024-06-20
赞0
评论
2024-06-18
赞0
CRC的计算原理我清楚,这是是比较神奇的算法,不仅能检错,还能纠错,98年我就做过检纠错。CRC的执行是以bit为单位的,所以除了多项式,初始值,异或值(不一定是0xffffffff)外,还要确定位序(低位先行还是高位先行,当然这也可以归结到多项式上,就像5楼的0xEDB88320 和 6楼的0x04C11DB7,其实是同一个多项式,只是位序是反的)
评论
2024-06-16
赞0
等不及了只好放弃硬件CRC,改为软件实现,过几天验证一下您的算法。感谢!
评论
2024-06-16
赞0
评论
2024-06-09
赞0
// CRC-32 (Ethernet) polynomial: 0x4C11DB7
#define CRC32_POLYNOMIAL 0x04C11DB7
// Function to calculate the CRC-32 value
uint32_t crc32_calculate(const uint8_t *data, size_t length, uint32_t crc) {
while (length--) {
crc ^= (*data++ << 24);
for (int i = 0; i < 8; i++) {
if (crc & 0x80000000) {
crc = (crc << 1) ^ CRC32_POLYNOMIAL;
} else {
crc <<= 1;
}
}
}
return crc;
}
// Example usage:
uint8_t my_data[] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF};
uint32_t crc_value = crc32_calculate(my_data, sizeof(my_data), 0xFFFFFFFF);
评论
2024-06-08
赞0
初始化CRC单元,并将其设置为所需的操作模式。
将数据通过CRC单元,可以是直接操作寄存器,也可以是通过特定的外设接口(如ADC)来触发CRC计算。
获取CRC计算结果。
评论
2024-06-08
赞0
评论
2024-06-07
赞0
评论
2024-06-07
您需要登录后才可以回复 登录 | 注册