OceanGaze 发表于 2025-9-13 19:19

APM32E030的CRC32校验模块如何传入8位数据

APM32E030在用户手册里面有说可以支持8位,16位,32位数据的输入。

但是我看寄存器实现,代码示例里均是输入32位的word长度。关键,我也没有看到有按字节输入的选项。这个要如何实现?感觉就是直接传入字节,按word处理了!


Gfan 发表于 2025-9-17 10:20

本帖最后由 Gfan 于 2025-9-17 10:59 编辑

关于APM32E030的CRC32校验模块传入8位数据的问题,虽然寄存器接口设计为32位字操作,但可以通过以下方式灵活处理8位数据输入:

缓冲收集法// 当有连续字节时,可收集4字节后一次性写入
uint32_t temp = 0;
temp |= (byte1 << 0);
temp |= (byte2 << 8);
temp |= (byte3 << 16);
temp |= (byte4 << 24);


另外,如果想计算不同位数的CRC值,则对CRC_DATA寄存器按照不同的位数写入即可哈:
1. 8 bit : (volatile uint8_t *)&CRC->DATA = pData;
2. 16 bit : (volatile uint16_t *)&CRC->DATA = pData;
页: [1]
查看完整版本: APM32E030的CRC32校验模块如何传入8位数据