|
STM32G474xx HAL 用户手册
|
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 */