STM32F030CCTx中未声明CRC_POLYLENGTH_16B

wljmcqd8  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(120)

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库的任何文档?

blmhpbnm

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通用驱动程序 *,但我不认为你会在那里找到上述细节。

相关问题