完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
代码:
我想知道怎么算出来的。于是我写了一个C程序验证
结果得到结果: 得到的值是0xfff75e7f 不是0xef. 请高手指教,谢谢! |
|
相关推荐
2个回答
|
|
|
X^4 + X^3 + X^2 + 1 */#define CRC_POLYNOMIAL_16B 0x1021 /* X^16 + X^12 + X^5 + 1 */#define CRC_POLYNOMIAL_32B 0x04C11DB7 /* X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 + X^8 + X^7 + X^5 + X^4 + X^2 + X^1 + 1 *//* Private macro -------------------------------------------------------------*//* Private variables ---------------------------------------------------------*/CRC_HandleTypeDef hcrc;uint32_t aDataBuffer[BUFFER_SIZE]={0x12345678};/* Private function prototypes -----------------------------------------------*/void SystemClock_Config(void);static void MX_CRC_Init(void);/* Private functions ---------------------------------------------------------*//** * @brief Main program * @param None * @retval None */int main(void) { /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* Configure the system clock */ SystemClock_Config(); /* Initialize all configured peripherals */ MX_CRC_Init(); /*##-1- Compute the CRC for 8-bit Data Streams### * ####################################################### * The crc is initially initialized to 0xFFFFFFFF, correspondingly, the final XOR is performed with 0xFFFFFFFF. */ printf("The CRC code using the user-defined polynomial, the aDataBuffer is 0x%Xn", (unsigned int)aDataBuffer[0]); hcrc.Instance = CRC; hcrc.Init.DefaultPolynomialUse = DEFAULT_CRC32_POLY; hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE; hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_NONE; hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_WORDS; if (HAL_CRC_Init(&hcrc) != HAL_OK) { Error_Handler(); } /* Compute the CRC value */ uint32_t uwCRCValue = HAL_CRC_Calculate(&hcrc, aDataBuffer, BUFFER_SIZE); printf("CRC-32C (8-bit Data Streams): 0x%Xn", (unsigned int)uwCRCValue); /*##-2- Compute the CRC for 16-bit Data Streams### * ######################################################## * The crc is initially initialized to 0xFFFF, correspondingly, the final XOR is performed with 0xFFFF. */ hcrc.Init.DefaultPolynomialUse = DEFAULT_CRC16_POLY; hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE; hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_HALFWORDS; if (HAL_CRC_Init(&hcrc) != HAL_OK) { Error_Handler(); } /* Compute the CRC value */ uwCRCValue = HAL_CRC_Calculate(&hcrc, aDataBuffer, BUFFER_SIZE); printf("CRC-CCITT (16-bit Data Streams): 0x%Xn", (unsigned int)uwCRCValue); /*##-3- Compute the CRC for 32-bit Data Streams### * ######################################################## * The crc is initially initialized to 0xFFFFFFFF, correspondingly, the final XOR is performed with 0xFFFFFFFF. */ hcrc.Init.DefaultPolynomialUse = DEFAULT_CRC32_POLY; hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE; hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_WORDS; if (HAL_CRC_Init(&hcrc) != HAL_OK) { Error_Handler(); } /* Compute the CRC value */ uwCRCValue = HAL_CRC_Calculate(&hcrc, aDataBuffer, BUFFER_SIZE); printf("CRC-32 (32-bit Data Streams): 0x%Xn", (unsigned int)uwCRCValue); /* Infinite loop */ while (1) { } /* USER CODE END 3 */}/** * @brief System Clock Configuration * @retval None */void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct = {0}; RCC_ClkInitTypeDef RCC_ClkInitStruct = {0}; /** Initializes the RCC Oscillators according to the specified parameters * in the RCC_OscInitTypeDef structure. */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI; RCC_OscInitStruct.HSIState = RCC_HSI_ON; RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } /** Initializes the CPU, AHB and APB buses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK) { Error_Handler(); }}/** * @brief CRC Initialization Function * @param None * @retval None */static void MX_CRC_Init(void) { hcrc.Instance = CRC; hcrc.Init.DefaultPolynomialUse = DEFAULT_CRC32_POLY; hcrc.Init.DefaultInitValueUse = DEFAULT_INIT_VALUE; hcrc.Init.InputDataInversionMode = CRC_INPUTDATA_INVERSION_NONE; hcrc.Init.OutputDataInversionMode = CRC_OUTPUTDATA_INVERSION_DISABLE; hcrc.InputDataFormat = CRC_INPUTDATA_FORMAT_WORDS; if (HAL_CRC_Init(&hcrc) != HAL_OK) { Error_Handler(); }}/** * @brief This function is executed in case of error occurrence. * @param None * @retval None */void Error_Handler(void) { /* USER CODE BEGIN Error_Handler_Debug */ /* User can add his own implementation to report the HAL error return state */ __disable_irq(); while (1) { } /* USER CODE END Error_Handler_Debug */}/** * @brief EXTI line detection callbacks. * @param GPIO_Pin: Specifies the pins connected EXTI line * @retval None */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { /* Prevent unused argument(s) compilation warning */ UNUSED(GPIO_Pin); /* NOTE: This function Should not be modified, when the callback is needed, * the HAL_GPIO_EXTI_Callback could be implemented in the user file */}/** * @} *//** * @} *//************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
问题代码: 1、程序没有定义 main 函数,导致编译错误。 2、程序中定义的变量和宏没有使用和说明,不便于代码阅读。 3、程序中使用了 printf 函数,但没有包含相应的头文件,导致编译错误。 4、程序中调用了未定义的函数 Error_Handler(),需要提供相应的函数实现。 |
|
|
|
|
|
有main函数啊,你没看见吗
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 10:47 , Processed in 0.741978 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
6705