| CRC是一种错误检测码,用于检测数据传输或存储中的意外更改。它通过对数据应用特定的算法生成一个固定长度的校验值。这个校验值附加在数据后面,接收方可以重新计算CRC并与接收到的校验值比较,以验证数据完整性。 示例代码(基于库函数)
 
 
 #include "cw32f030_crc.h"
void CRC_Configuration(void) {
    CRC_InitTypeDef CRC_InitStruct;
    CRC_InitStruct.CRC_Poly = CRC_POLY_32;         // CRC-32多项式
    CRC_InitStruct.CRC_InitValue = 0xFFFFFFFF;     // 初始值
    CRC_InitStruct.CRC_InputReverse = CRC_REVERSE_BYTE; // 字节反转输入
    CRC_InitStruct.CRC_OutputReverse = CRC_REVERSE_BIT; // 输出位反转
    CRC_InitStruct.CRC_XorOut = 0xFFFFFFFF;        // 结果异或值
    CRC_Init(&CRC_InitStruct);
}
uint32_t Calculate_CRC(uint8_t *data, uint32_t len) {
    CRC_Reset(); // 复位CRC计算器
    while (len--) {
        CRC_WriteData(*data++); // 逐字节写入数据
    }
    return CRC_ReadResult(); // 返回最终CRC值
}
int main() {
    CRC_Configuration();
    uint8_t test_data[] = "123456789";
    uint32_t crc = Calculate_CRC(test_data, sizeof(test_data)-1); // 计算CRC
    // 预期结果:0xCBF43926
    while(1);
}
 |