STM32G474xx HAL 用户手册
stm32g4xx_hal_crc.h
转到此文件的文档。
00001 /**
00002   ******************************************************************************
00003   * @file    stm32g4xx_hal_crc.h
00004   * @author  MCD Application Team
00005   * @brief   CRC HAL模块的头文件。
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2019 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32G4xx_HAL_CRC_H
00021 #define STM32G4xx_HAL_CRC_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32g4xx_hal_def.h"
00029 
00030 /** @addtogroup STM32G4xx_HAL_Driver
00031   * @{
00032   */
00033 
00034 /** @addtogroup CRC
00035   * @{
00036   */
00037 
00038 /* Exported types ------------------------------------------------------------*/
00039 /** @defgroup CRC_Exported_Types CRC Exported Types
00040   * @{
00041   */
00042 
00043 /**
00044   * @brief  CRC HAL状态结构定义
00045   */
00046 typedef enum
00047 {
00048   HAL_CRC_STATE_RESET     = 0x00U,  /*!< CRC尚未初始化或已禁用 */
00049   HAL_CRC_STATE_READY     = 0x01U,  /*!< CRC已初始化并准备就绪   */
00050   HAL_CRC_STATE_BUSY      = 0x02U,  /*!< CRC内部处理正在进行中     */
00051   HAL_CRC_STATE_TIMEOUT   = 0x03U,  /*!< CRC超时状态                   */
00052   HAL_CRC_STATE_ERROR     = 0x04U   /*!< CRC错误状态                     */
00053 } HAL_CRC_StateTypeDef;
00054 
00055 /**
00056   * @brief CRC初始化结构定义
00057   */
00058 typedef struct
00059 {
00060   uint8_t DefaultPolynomialUse;       /*!< 此参数是 @ref CRC_Default_Polynomial 的值,指示是否使用默认多项式。
00061                                             如果设置为 DEFAULT_POLYNOMIAL_ENABLE,则使用默认
00062                                             X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 +
00063                                             X^4 + X^2+ X +1。
00064                                             在这种情况下,无需设置 GeneratingPolynomial 字段。
00065                                             如果设置为 DEFAULT_POLYNOMIAL_DISABLE,则必须设置 GeneratingPolynomial 和
00066                                             CRCLength 字段。 */
00067 
00068   uint8_t DefaultInitValueUse;        /*!< 此参数是 @ref CRC_Default_InitValue_Use 的值,指示是否使用默认初始值。
00069                                            如果设置为 DEFAULT_INIT_VALUE_ENABLE,则使用默认
00070                                            0xFFFFFFFF 值。在这种情况下,无需设置 InitValue 字段。如果
00071                                            设置为 DEFAULT_INIT_VALUE_DISABLE,则必须设置 InitValue 字段。 */
00072 
00073   uint32_t GeneratingPolynomial;      /*!< 设置CRC生成多项式为7、8、16或32位长的值,分别对应
00074                                            7、8、16或32次多项式。此字段以正常
00075                                            表示法写入,例如,对于7次多项式,X^7 + X^6 + X^5 + X^2 + 1
00076                                            写为 0x65。如果 DefaultPolynomialUse 设置为
00077                                             DEFAULT_POLYNOMIAL_ENABLE,则无需指定。   */
00078 
00079   uint32_t CRCLength;                 /*!< 此参数是 @ref CRC_Polynomial_Sizes 的值,指示CRC长度。
00080                                            值可以是以下之一
00081                                            @arg @ref CRC_POLYLENGTH_32B                  (32位 CRC),
00082                                            @arg @ref CRC_POLYLENGTH_16B                  (16位 CRC),
00083                                            @arg @ref CRC_POLYLENGTH_8B                   (8位 CRC),
00084                                            @arg @ref CRC_POLYLENGTH_7B                   (7位 CRC). */
00085 
00086   uint32_t InitValue;                 /*!< 用于启动CRC计算的初始值。如果 DefaultInitValueUse
00087                                            设置为 DEFAULT_INIT_VALUE_ENABLE,则无需指定。   */
00088 
00089   uint32_t InputDataInversionMode;    /*!< 此参数是 @ref CRCEx_Input_Data_Inversion 的值,指定输入数据反转模式。
00090                                            可以是以下值之一
00091                                            @arg @ref CRC_INPUTDATA_INVERSION_NONE       无输入数据反转
00092                                            @arg @ref CRC_INPUTDATA_INVERSION_BYTE       逐字节反转,0x1A2B3C4D
00093                                            变为 0x58D43CB2
00094                                            @arg @ref CRC_INPUTDATA_INVERSION_HALFWORD   逐半字反转,
00095                                            0x1A2B3C4D 变为 0xD458B23C
00096                                            @arg @ref CRC_INPUTDATA_INVERSION_WORD       逐字反转,0x1A2B3C4D
00097                                            变为 0xB23CD458 */
00098 
00099   uint32_t OutputDataInversionMode;   /*!< 此参数是 @ref CRCEx_Output_Data_Inversion 的值,指定输出数据(即CRC)反转模式。
00100                                             可以是
00101                                             @arg @ref CRC_OUTPUTDATA_INVERSION_DISABLE   无CRC反转,
00102                                             @arg @ref CRC_OUTPUTDATA_INVERSION_ENABLE    CRC 0x11223344 被转换
00103                                              为 0x22CC4488 */
00104 } CRC_InitTypeDef;
00105 
00106 /**
00107   * @brief  CRC句柄结构定义
00108   */
00109 typedef struct
00110 {
00111   CRC_TypeDef                 *Instance;   /*!< 寄存器基地址        */
00112 
00113   CRC_InitTypeDef             Init;        /*!< CRC配置参数 */
00114 
00115   HAL_LockTypeDef             Lock;        /*!< CRC锁定对象           */
00116 
00117   __IO HAL_CRC_StateTypeDef   State;       /*!< CRC通信状态      */
00118 
00119   uint32_t InputDataFormat;                /*!< 此参数是 @ref CRC_Input_Buffer_Format 的值,指定输入数据格式。
00120                                             可以是
00121                                             @arg @ref CRC_INPUTDATA_FORMAT_BYTES       输入数据是字节流
00122                                             (8位数据)
00123                                             @arg @ref CRC_INPUTDATA_FORMAT_HALFWORDS   输入数据是半字流
00124                                             (16位数据)
00125                                             @arg @ref CRC_INPUTDATA_FORMAT_WORDS       输入数据是字流
00126                                             (32位数据)
00127 
00128                                           请注意,定义了常量 CRC_INPUT_FORMAT_UNDEFINED,但如果 InputBufferFormat 不是上述三个值之一,
00129                                           则必须在 HAL_CRC_Init() 中触发初始化错误:格式必须由用户定义,
00130                                           以便CRC API提供正确的结果 */
00131 } CRC_HandleTypeDef;
00132 /**
00133   * @}
00134   */
00135 
00136 /* Exported constants --------------------------------------------------------*/
00137 /** @defgroup CRC_Exported_Constants CRC Exported Constants
00138   * @{
00139   */
00140 
00141 /** @defgroup CRC_Default_Polynomial_Value    Default CRC generating polynomial
00142   * @{
00143   */