打印

大神们,谁知道GD32F303的CRC32的算法代码

[复制链接]
3903|19
手机看帖
扫描二维码
随时随地手机跟帖
楼主
#include "gd32f30x_crc.h"

void crc32_hw_init(void)
{
    // 开启CRC时钟
    rcu_periph_clock_enable(RCU_CRC);

    // 复位并初始化CRC控制器
    crc_reset();
   
    // 根据需要配置CRC多项式,GD32F303默认支持多项式0x04C11DB7 (CRC-32/ISO-HDLC)
    // 注意:大部分情况下不需要手动配置多项式,除非你需要使用非标准算法
}

uint32_t calculate_crc32(const uint8_t *data, uint32_t length)
{
    // 计算数据的CRC32校验值
    uint32_t crc_value = 0;
   
    // 确保CRC模块处于待处理状态
    crc_enable();
   
    // 逐个字节或按需分块处理数据,更新CRC值
    for(uint32_t i = 0; i < length; i++)
    {
        crc_value = crc_data_byte(crc_value, data[i]);
    }
   
    // 关闭CRC模块(如果不再需要连续计算)
    // crc_disable();
   
    return crc_value;
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则