64 lines
1.7 KiB
C
64 lines
1.7 KiB
C
//
|
|
// Created by Professional on 22.04.2023.
|
|
//
|
|
|
|
#include "crc_calc.h"
|
|
CRC_HandleTypeDef hcrc;
|
|
void MX_CRC_Init(void)
|
|
{
|
|
|
|
/* USER CODE BEGIN CRC_Init 0 */
|
|
|
|
/* USER CODE END CRC_Init 0 */
|
|
|
|
/* USER CODE BEGIN CRC_Init 1 */
|
|
|
|
/* USER CODE END CRC_Init 1 */
|
|
hcrc.Instance = CRC;
|
|
hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE_ENABLE;
|
|
hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_BYTE;
|
|
hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_ENABLE;
|
|
hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_BYTES;
|
|
if (HAL_CRC_Init(&hcrc) != HAL_OK)
|
|
{
|
|
NVIC_SystemReset();
|
|
}
|
|
/* USER CODE BEGIN CRC_Init 2 */
|
|
|
|
/* USER CODE END CRC_Init 2 */
|
|
|
|
}
|
|
err_crc_t calculateROM_CRC32(flash_area_enum_t flash_area, uint32_t *val)
|
|
{
|
|
if (flash_area == FLASH_AREA_FULLPROG)
|
|
{
|
|
uint32_t len = *(uint32_t*)(LEN_ADDRESS);
|
|
if (len >= FLASH_SIZE)
|
|
return BLT_FALSE;
|
|
uint32_t crc_calc = ~HAL_CRC_Calculate(&hcrc, (uint32_t*)FLASH_USER_PROG_ADDRESS, len );
|
|
__HAL_CRC_DR_RESET(&hcrc);
|
|
*val = crc_calc;
|
|
return BLT_TRUE;
|
|
}
|
|
else if (flash_area == FLASH_AREA_MAINPROG)
|
|
{
|
|
/* uint32_t crc32 = *(uint32_t*) CRC32_USER_PROG_AND_USER_LIB_ADDRESS;
|
|
uint32_t crc_calc = ~HAL_CRC_Calculate(&hcrc, FLASH_USER_PROG_ADDRESS, CRC32_USER_PROG_AND_USER_LIB_ADDRESS - 0x8002000);
|
|
__HAL_CRC_DR_RESET(&hcrc);
|
|
if (crc32 == crc_calc)
|
|
return CRC_OK;
|
|
else
|
|
return CRC_ERROR;*/
|
|
}
|
|
|
|
}
|
|
|
|
uint32_t calculateBuf_CRC32(uint32_t *buf, uint32_t len)
|
|
{
|
|
return HAL_CRC_Accumulate(&hcrc, buf, len);
|
|
}
|
|
|
|
void reset_CrcModule(void)
|
|
{
|
|
__HAL_CRC_DR_RESET(&hcrc);
|
|
} |