STM32L4的CRC-32从HAL_CRC_calculate()计算;功能



作为下方的CRC配置

hcrc.Instance = CRC;
hcrc.Init.DefaultPolynomialUse = DEFAULT_POLYNOMIAL_ENABLE;
hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;
hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE;
hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE;<br>
hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;
if (HAL_CRC_Init(&hcrc) != HAL_OK)
{
Error_Handler();
}

多项式状态:default (MPEG-2 : 0x04C11DB7)
取值阶段:default (MPEG-2 : 0xFFFFFFFF)
结果数据由HAL_CRC_calculate(…(计算;是0xD2AEA5A1

uint32_t data[2]={0x01, 0x01};
uint32_t crc_cal;
crc_cal = HAL_CRC_Calculate(&hcrc, data, 2);
sprintf(VariableDebug,"CRC Value (HAL_CRC Cal.) %08X, ",crc_cal);
PRINT_MSG_CYAN(VariableDebug);

这与CRC在线数据是0xD66FB816不同,链接如下
https://crccalc.com/
你能帮我解决这个问题吗

谨致问候,Suchada Sri。

更改此项:

uint32_t data[2]={0x01, 0x01};
uint32_t crc_cal;
crc_cal = HAL_CRC_Calculate(&hcrc, data, 2);

对此:

uint8_t data[]={0x01, 0x01};
uint32_t crc_cal;
crc_cal = HAL_CRC_Calculate(&hcrc, (uint32_t*)data, 2);

为了获得良好的实践,您也可以使用sizeof(data)而不是2

相关内容

  • 没有找到相关文章

最新更新