在
STM32F030CCTx
我需要通过调用设置16位长度的CRC
HAL_CRCEx_Polynomial_Set(MATRIX_UART_settings->crc, CRC_POLY, CRC_POLYLENGTH_16B);
但是编译器显示错误:
'CRC_POLYLENGTH_16B' undeclared (first use in this function)
在
stm32f0xx_hal_crc.h
文件中 CRC_POLYLENGTH_16B
在预处理器指令下定义,如
#if defined(CRC_POL_POL)
/** @defgroup CRC_Polynomial_Sizes Polynomial sizes to configure the peripheral
* @{
*/
#define CRC_POLYLENGTH_32B 0x00000000U /*!< Resort to a 32-bit long generating polynomial */
#define CRC_POLYLENGTH_16B CRC_CR_POLYSIZE_0 /*!< Resort to a 16-bit long generating polynomial */
#define CRC_POLYLENGTH_8B CRC_CR_POLYSIZE_1 /*!< Resort to a 8-bit long generating polynomial */
#define CRC_POLYLENGTH_7B CRC_CR_POLYSIZE /*!< Resort to a 7-bit long generating polynomial */
/**
* @}
*/
/** @defgroup CRC_Polynomial_Size_Definitions CRC polynomial possible sizes actual definitions
* @{
*/
#define HAL_CRC_LENGTH_32B 32U /*!< 32-bit long CRC */
#define HAL_CRC_LENGTH_16B 16U /*!< 16-bit long CRC */
#define HAL_CRC_LENGTH_8B 8U /*!< 8-bit long CRC */
#define HAL_CRC_LENGTH_7B 7U /*!< 7-bit long CRC */
/**
* @}
*/
#endif /* CRC_POL_POL */
如何访问
CRC_POLYLENGTH_16B
?以及使用 HAL CRC 库的任何文档?
STM32F0x0 CRC 模块具有固定多项式(即您无法更改多项式及其长度),请参阅 RM0360,CRC 章节。这就是为什么您没有定义上述符号(仅当定义了 CRC_POL_POL 时才有条件定义,并且没有为 'F0x0 定义,因为它没有用于变量多项式的 CRC_POL 寄存器)。
您可能会说,事实上'F030CC确实有CRC_POL寄存器并且确实计算16位CRC。是的,确实如此,但官方并不存在,因此该芯片的未来版本可能不会具有该功能。
而且,由于官方不存在它,Cube 不会提供使用它所需的符号。