Если Вы считаете контрольную сумму для протокола ModBus RTU то желательно по другому настраивать модуль CRC, ниже как сделано у меня, попробуйте должно получиться.
void MX_CRC_Init(void)
{
/* Peripheral clock enable */
LL_AHB1_GRP1_EnableClock(LL_AHB1_GRP1_PERIPH_CRC);
LL_CRC_SetInputDataReverseMode(CRC, LL_CRC_INDATA_REVERSE_BYTE);
LL_CRC_SetOutputDataReverseMode(CRC, LL_CRC_OUTDATA_REVERSE_BIT);
LL_CRC_SetInitialData(CRC, 0xFFFF);
LL_CRC_SetPolynomialCoef(CRC, 0x8005);
LL_CRC_SetPolynomialSize(CRC, LL_CRC_POLYLENGTH_16B);
}
uint16_t Calculate_CRC( uint8_t *aDataBuffer, uint32_t BufferSize)
{
register uint32_t index = 0;
LL_CRC_ResetCRCCalculationUnit(CRC);
/* Compute the CRC of Data Buffer array*/
for (index = 0; index < BufferSize; index++)
{
LL_CRC_FeedData8(CRC, aDataBuffer[index]);
}
/* Return computed CRC value */
return(LL_CRC_ReadData16(CRC));
}