在STM32F030CCTx
中,我需要通过调用
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库的任何文档?
1条答案
按热度按时间blmhpbnm1#
STM32 F0 x 0 CRC模块具有固定的多项式(即,您不能更改多项式或其长度),请参见RM 0360,CRC章节。这就是为什么您没有在中定义上述符号的原因(只有在定义了CRC_POL_POL时才有条件地定义该符号,而“F0 x 0”没有定义该符号,因为它没有用于可变多项式的CRC_POL寄存器)。
你可能会争辩说,事实上'F030 CC确实有CRC_POL寄存器,并计算16位CRC。是的,它有,但正式它不存在,所以它可能会发生,该芯片的未来版本将不会有该设施。
而且,由于它不在那里,Cube不会提供使用它所需的符号。
相关的Cube/HAL文档是UM 1785章 *13 HAL CRC通用驱动程序 *,但我不认为你会在那里找到上述细节。