STM32F030CCTx 中未声明 CRC_POLYLENGTH_16B

问题描述 投票:0回答:1

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

c embedded stm32 crc
1个回答
0
投票

STM32F0x0 CRC 模块具有固定多项式(即您无法更改多项式及其长度),请参阅 RM0360,CRC 章节。这就是为什么您没有定义上述符号(仅当定义了 CRC_POL_POL 时才有条件定义,并且没有为 'F0x0 定义,因为它没有用于变量多项式的 CRC_POL 寄存器)。

您可能会说,事实上'F030CC确实有CRC_POL寄存器并且确实计算16位CRC。是的,确实如此,但官方并不存在,因此该芯片的未来版本可能不会具有该功能。

而且,由于官方不存在它,Cube 不会提供使用它所需的符号。

© www.soinside.com 2019 - 2024. All rights reserved.