/** * @brief Main program. * @param None * @retval None */ int main(void) { GD_EVAL_LEDInit(LED1); vab1 = (uint32_t)0xabcd1234; RCC_AHBPeriphClock_Enable(RCC_AHBPERIPH_CRC, ENABLE); CRC_DeInit(); read32_1 = CRC_CalcSingleData(vab1); /* input reverse */ CRC_DeInit(); CRC_ReverseInputData_Config(CRC_REVERSE_INPUT_DATA_BYTE); read32_2 = CRC_CalcSingleData(vab1); CRC_DeInit(); CRC_ReverseInputData_Config(CRC_REVERSE_INPUT_DATA_HALFWORD); read32_3 = CRC_CalcSingleData(vab1); CRC_DeInit(); CRC_ReverseInputData_Config(CRC_REVERSE_INPUT_DATA_WORD); read32_4 = CRC_CalcSingleData(vab1); /* output reverse */ CRC_DeInit(); CRC_ReverseOutputData_Enable(ENABLE); read32_5 = CRC_CalcSingleData(vab1); CRC_DeInit(); CRC_ReverseInputData_Config(CRC_REVERSE_INPUT_DATA_BYTE); CRC_ReverseOutputData_Enable(ENABLE); read32_6 = CRC_CalcSingleData(vab1); CRC_DeInit(); CRC_ReverseInputData_Config(CRC_REVERSE_INPUT_DATA_HALFWORD); CRC_ReverseOutputData_Enable(ENABLE); read32_7 = CRC_CalcSingleData(vab1); CRC_DeInit(); CRC_ReverseInputData_Config(CRC_REVERSE_INPUT_DATA_WORD); CRC_ReverseOutputData_Enable(ENABLE); read32_8 = CRC_CalcSingleData(vab1); /* check the caculation result */ if((read32_1 == 0xf7018a40)&&(read32_2 == 0x49fc6721)&&(read32_3 == 0x606444e3)&&(read32_4 == 0x16d70081) &&(read32_5 == 0x025180ef)&&(read32_6 == 0x84e63f92)&&(read32_7 == 0xc7222606)&&(read32_8 == 0x8100eb68)) { success_flag = 0x1; GD_EVAL_LEDOn(LED1); } while (1) { } }
/** * @brief Configure CRC peripheral to use 8-bit polynomials * @param poly: the CRC polynomial * @retval None */ static void CRC_Config(uint8_t poly) { /* Enable CRC AHB clock interface */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); /* DeInit CRC peripheral */ CRC_DeInit(); /* Init the INIT register */ CRC_SetInitRegister(0); /* Select 8-bit polynomial size */ CRC_PolynomialSizeSelect(CRC_PolSize_8); /* Set the polynomial coefficients */ CRC_SetPolynomial(poly); }