![]() |
|
|||
File indexing completed on 2025-05-11 08:23:35
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_hal_crc.h 0004 * @author MCD Application Team 0005 * @brief Header file of CRC HAL module. 0006 ****************************************************************************** 0007 * @attention 0008 * 0009 * Copyright (c) 2017 STMicroelectronics. 0010 * All rights reserved. 0011 * 0012 * This software is licensed under terms that can be found in the LICENSE file 0013 * in the root directory of this software component. 0014 * If no LICENSE file comes with this software, it is provided AS-IS. 0015 * 0016 ****************************************************************************** 0017 */ 0018 0019 /* Define to prevent recursive inclusion -------------------------------------*/ 0020 #ifndef STM32H7xx_HAL_CRC_H 0021 #define STM32H7xx_HAL_CRC_H 0022 0023 #ifdef __cplusplus 0024 extern "C" { 0025 #endif 0026 0027 /* Includes ------------------------------------------------------------------*/ 0028 #include "stm32h7xx_hal_def.h" 0029 0030 /** @addtogroup STM32H7xx_HAL_Driver 0031 * @{ 0032 */ 0033 0034 /** @addtogroup CRC 0035 * @{ 0036 */ 0037 0038 /* Exported types ------------------------------------------------------------*/ 0039 /** @defgroup CRC_Exported_Types CRC Exported Types 0040 * @ingroup RTEMSBSPsARMSTM32H7 0041 * @{ 0042 */ 0043 0044 /** 0045 * @brief CRC HAL State Structure definition 0046 */ 0047 typedef enum 0048 { 0049 HAL_CRC_STATE_RESET = 0x00U, /*!< CRC not yet initialized or disabled */ 0050 HAL_CRC_STATE_READY = 0x01U, /*!< CRC initialized and ready for use */ 0051 HAL_CRC_STATE_BUSY = 0x02U, /*!< CRC internal process is ongoing */ 0052 HAL_CRC_STATE_TIMEOUT = 0x03U, /*!< CRC timeout state */ 0053 HAL_CRC_STATE_ERROR = 0x04U /*!< CRC error state */ 0054 } HAL_CRC_StateTypeDef; 0055 0056 /** 0057 * @brief CRC Init Structure definition 0058 */ 0059 typedef struct 0060 { 0061 uint8_t DefaultPolynomialUse; /*!< This parameter is a value of @ref CRC_Default_Polynomial and indicates if default polynomial is used. 0062 If set to DEFAULT_POLYNOMIAL_ENABLE, resort to default 0063 X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 + 0064 X^4 + X^2+ X +1. 0065 In that case, there is no need to set GeneratingPolynomial field. 0066 If otherwise set to DEFAULT_POLYNOMIAL_DISABLE, GeneratingPolynomial and 0067 CRCLength fields must be set. */ 0068 0069 uint8_t DefaultInitValueUse; /*!< This parameter is a value of @ref CRC_Default_InitValue_Use and indicates if default init value is used. 0070 If set to DEFAULT_INIT_VALUE_ENABLE, resort to default 0071 0xFFFFFFFF value. In that case, there is no need to set InitValue field. If 0072 otherwise set to DEFAULT_INIT_VALUE_DISABLE, InitValue field must be set. */ 0073 0074 uint32_t GeneratingPolynomial; /*!< Set CRC generating polynomial as a 7, 8, 16 or 32-bit long value for a polynomial degree 0075 respectively equal to 7, 8, 16 or 32. This field is written in normal, 0076 representation e.g., for a polynomial of degree 7, X^7 + X^6 + X^5 + X^2 + 1 0077 is written 0x65. No need to specify it if DefaultPolynomialUse is set to 0078 DEFAULT_POLYNOMIAL_ENABLE. */ 0079 0080 uint32_t CRCLength; /*!< This parameter is a value of @ref CRC_Polynomial_Sizes and indicates CRC length. 0081 Value can be either one of 0082 @arg @ref CRC_POLYLENGTH_32B (32-bit CRC), 0083 @arg @ref CRC_POLYLENGTH_16B (16-bit CRC), 0084 @arg @ref CRC_POLYLENGTH_8B (8-bit CRC), 0085 @arg @ref CRC_POLYLENGTH_7B (7-bit CRC). */ 0086 0087 uint32_t InitValue; /*!< Init value to initiate CRC computation. No need to specify it if DefaultInitValueUse 0088 is set to DEFAULT_INIT_VALUE_ENABLE. */ 0089 0090 uint32_t InputDataInversionMode; /*!< This parameter is a value of @ref CRCEx_Input_Data_Inversion and specifies input data inversion mode. 0091 Can be either one of the following values 0092 @arg @ref CRC_INPUTDATA_INVERSION_NONE no input data inversion 0093 @arg @ref CRC_INPUTDATA_INVERSION_BYTE byte-wise inversion, 0x1A2B3C4D 0094 becomes 0x58D43CB2 0095 @arg @ref CRC_INPUTDATA_INVERSION_HALFWORD halfword-wise inversion, 0096 0x1A2B3C4D becomes 0xD458B23C 0097 @arg @ref CRC_INPUTDATA_INVERSION_WORD word-wise inversion, 0x1A2B3C4D 0098 becomes 0xB23CD458 */ 0099 0100 uint32_t OutputDataInversionMode; /*!< This parameter is a value of @ref CRCEx_Output_Data_Inversion and specifies output data (i.e. CRC) inversion mode. 0101 Can be either 0102 @arg @ref CRC_OUTPUTDATA_INVERSION_DISABLE no CRC inversion, 0103 @arg @ref CRC_OUTPUTDATA_INVERSION_ENABLE CRC 0x11223344 is converted 0104 into 0x22CC4488 */ 0105 } CRC_InitTypeDef; 0106 0107 /** 0108 * @brief CRC Handle Structure definition 0109 */ 0110 typedef struct 0111 { 0112 CRC_TypeDef *Instance; /*!< Register base address */ 0113 0114 CRC_InitTypeDef Init; /*!< CRC configuration parameters */ 0115 0116 HAL_LockTypeDef Lock; /*!< CRC Locking object */ 0117 0118 __IO HAL_CRC_StateTypeDef State; /*!< CRC communication state */ 0119 0120 uint32_t InputDataFormat; /*!< This parameter is a value of @ref CRC_Input_Buffer_Format and specifies input data format. 0121 Can be either 0122 @arg @ref CRC_INPUTDATA_FORMAT_BYTES input data is a stream of bytes 0123 (8-bit data) 0124 @arg @ref CRC_INPUTDATA_FORMAT_HALFWORDS input data is a stream of 0125 half-words (16-bit data) 0126 @arg @ref CRC_INPUTDATA_FORMAT_WORDS input data is a stream of words 0127 (32-bit data) 0128 0129 Note that constant CRC_INPUT_FORMAT_UNDEFINED is defined but an initialization 0130 error must occur if InputBufferFormat is not one of the three values listed 0131 above */ 0132 } CRC_HandleTypeDef; 0133 /** 0134 * @} 0135 */ 0136 0137 /* Exported constants --------------------------------------------------------*/ 0138 /** @defgroup CRC_Exported_Constants CRC Exported Constants 0139 * @ingroup RTEMSBSPsARMSTM32H7 0140 * @{ 0141 */ 0142 0143 /** @defgroup CRC_Default_Polynomial_Value Default CRC generating polynomial 0144 * @ingroup RTEMSBSPsARMSTM32H7 0145 * @{ 0146 */ 0147 #define DEFAULT_CRC32_POLY 0x04C11DB7U /*!< X^32 + X^26 + X^23 + X^22 + X^16 + X^12 + X^11 + X^10 +X^8 + X^7 + X^5 + X^4 + X^2+ X +1 */ 0148 /** 0149 * @} 0150 */ 0151 0152 /** @defgroup CRC_Default_InitValue Default CRC computation initialization value 0153 * @ingroup RTEMSBSPsARMSTM32H7 0154 * @{ 0155 */ 0156 #define DEFAULT_CRC_INITVALUE 0xFFFFFFFFU /*!< Initial CRC default value */ 0157 /** 0158 * @} 0159 */ 0160 0161 /** @defgroup CRC_Default_Polynomial Indicates whether or not default polynomial is used 0162 * @ingroup RTEMSBSPsARMSTM32H7 0163 * @{ 0164 */ 0165 #define DEFAULT_POLYNOMIAL_ENABLE ((uint8_t)0x00U) /*!< Enable default generating polynomial 0x04C11DB7 */ 0166 #define DEFAULT_POLYNOMIAL_DISABLE ((uint8_t)0x01U) /*!< Disable default generating polynomial 0x04C11DB7 */ 0167 /** 0168 * @} 0169 */ 0170 0171 /** @defgroup CRC_Default_InitValue_Use Indicates whether or not default init value is used 0172 * @ingroup RTEMSBSPsARMSTM32H7 0173 * @{ 0174 */ 0175 #define DEFAULT_INIT_VALUE_ENABLE ((uint8_t)0x00U) /*!< Enable initial CRC default value */ 0176 #define DEFAULT_INIT_VALUE_DISABLE ((uint8_t)0x01U) /*!< Disable initial CRC default value */ 0177 /** 0178 * @} 0179 */ 0180 0181 /** @defgroup CRC_Polynomial_Sizes Polynomial sizes to configure the peripheral 0182 * @ingroup RTEMSBSPsARMSTM32H7 0183 * @{ 0184 */ 0185 #define CRC_POLYLENGTH_32B 0x00000000U /*!< Resort to a 32-bit long generating polynomial */ 0186 #define CRC_POLYLENGTH_16B CRC_CR_POLYSIZE_0 /*!< Resort to a 16-bit long generating polynomial */ 0187 #define CRC_POLYLENGTH_8B CRC_CR_POLYSIZE_1 /*!< Resort to a 8-bit long generating polynomial */ 0188 #define CRC_POLYLENGTH_7B CRC_CR_POLYSIZE /*!< Resort to a 7-bit long generating polynomial */ 0189 /** 0190 * @} 0191 */ 0192 0193 /** @defgroup CRC_Polynomial_Size_Definitions CRC polynomial possible sizes actual definitions 0194 * @ingroup RTEMSBSPsARMSTM32H7 0195 * @{ 0196 */ 0197 #define HAL_CRC_LENGTH_32B 32U /*!< 32-bit long CRC */ 0198 #define HAL_CRC_LENGTH_16B 16U /*!< 16-bit long CRC */ 0199 #define HAL_CRC_LENGTH_8B 8U /*!< 8-bit long CRC */ 0200 #define HAL_CRC_LENGTH_7B 7U /*!< 7-bit long CRC */ 0201 /** 0202 * @} 0203 */ 0204 0205 /** @defgroup CRC_Input_Buffer_Format Input Buffer Format 0206 * @ingroup RTEMSBSPsARMSTM32H7 0207 * @{ 0208 */ 0209 /* WARNING: CRC_INPUT_FORMAT_UNDEFINED is created for reference purposes but 0210 * an error is triggered in HAL_CRC_Init() if InputDataFormat field is set 0211 * to CRC_INPUT_FORMAT_UNDEFINED: the format MUST be defined by the user for 0212 * the CRC APIs to provide a correct result */ 0213 #define CRC_INPUTDATA_FORMAT_UNDEFINED 0x00000000U /*!< Undefined input data format */ 0214 #define CRC_INPUTDATA_FORMAT_BYTES 0x00000001U /*!< Input data in byte format */ 0215 #define CRC_INPUTDATA_FORMAT_HALFWORDS 0x00000002U /*!< Input data in half-word format */ 0216 #define CRC_INPUTDATA_FORMAT_WORDS 0x00000003U /*!< Input data in word format */ 0217 /** 0218 * @} 0219 */ 0220 0221 /** 0222 * @} 0223 */ 0224 0225 /* Exported macros -----------------------------------------------------------*/ 0226 /** @defgroup CRC_Exported_Macros CRC Exported Macros 0227 * @ingroup RTEMSBSPsARMSTM32H7 0228 * @{ 0229 */ 0230 0231 /** @brief Reset CRC handle state. 0232 * @param __HANDLE__ CRC handle. 0233 * @retval None 0234 */ 0235 #define __HAL_CRC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_CRC_STATE_RESET) 0236 0237 /** 0238 * @brief Reset CRC Data Register. 0239 * @param __HANDLE__ CRC handle 0240 * @retval None 0241 */ 0242 #define __HAL_CRC_DR_RESET(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRC_CR_RESET) 0243 0244 /** 0245 * @brief Set CRC INIT non-default value 0246 * @param __HANDLE__ CRC handle 0247 * @param __INIT__ 32-bit initial value 0248 * @retval None 0249 */ 0250 #define __HAL_CRC_INITIALCRCVALUE_CONFIG(__HANDLE__, __INIT__) ((__HANDLE__)->Instance->INIT = (__INIT__)) 0251 0252 /** 0253 * @brief Store data in the Independent Data (ID) register. 0254 * @param __HANDLE__ CRC handle 0255 * @param __VALUE__ Value to be stored in the ID register 0256 * @note Refer to the Reference Manual to get the authorized __VALUE__ length in bits 0257 * @retval None 0258 */ 0259 #define __HAL_CRC_SET_IDR(__HANDLE__, __VALUE__) (WRITE_REG((__HANDLE__)->Instance->IDR, (__VALUE__))) 0260 0261 /** 0262 * @brief Return the data stored in the Independent Data (ID) register. 0263 * @param __HANDLE__ CRC handle 0264 * @note Refer to the Reference Manual to get the authorized __VALUE__ length in bits 0265 * @retval Value of the ID register 0266 */ 0267 #define __HAL_CRC_GET_IDR(__HANDLE__) (((__HANDLE__)->Instance->IDR) & CRC_IDR_IDR) 0268 /** 0269 * @} 0270 */ 0271 0272 0273 /* Private macros --------------------------------------------------------*/ 0274 /** @defgroup CRC_Private_Macros CRC Private Macros 0275 * @ingroup RTEMSBSPsARMSTM32H7 0276 * @{ 0277 */ 0278 0279 #define IS_DEFAULT_POLYNOMIAL(DEFAULT) (((DEFAULT) == DEFAULT_POLYNOMIAL_ENABLE) || \ 0280 ((DEFAULT) == DEFAULT_POLYNOMIAL_DISABLE)) 0281 0282 #define IS_DEFAULT_INIT_VALUE(VALUE) (((VALUE) == DEFAULT_INIT_VALUE_ENABLE) || \ 0283 ((VALUE) == DEFAULT_INIT_VALUE_DISABLE)) 0284 0285 #define IS_CRC_POL_LENGTH(LENGTH) (((LENGTH) == CRC_POLYLENGTH_32B) || \ 0286 ((LENGTH) == CRC_POLYLENGTH_16B) || \ 0287 ((LENGTH) == CRC_POLYLENGTH_8B) || \ 0288 ((LENGTH) == CRC_POLYLENGTH_7B)) 0289 0290 #define IS_CRC_INPUTDATA_FORMAT(FORMAT) (((FORMAT) == CRC_INPUTDATA_FORMAT_BYTES) || \ 0291 ((FORMAT) == CRC_INPUTDATA_FORMAT_HALFWORDS) || \ 0292 ((FORMAT) == CRC_INPUTDATA_FORMAT_WORDS)) 0293 0294 /** 0295 * @} 0296 */ 0297 0298 /* Include CRC HAL Extended module */ 0299 #include "stm32h7xx_hal_crc_ex.h" 0300 0301 /* Exported functions --------------------------------------------------------*/ 0302 /** @defgroup CRC_Exported_Functions CRC Exported Functions 0303 * @ingroup RTEMSBSPsARMSTM32H7 0304 * @{ 0305 */ 0306 0307 /* Initialization and de-initialization functions ****************************/ 0308 /** @defgroup CRC_Exported_Functions_Group1 Initialization and de-initialization functions 0309 * @ingroup RTEMSBSPsARMSTM32H7 0310 * @{ 0311 */ 0312 HAL_StatusTypeDef HAL_CRC_Init(CRC_HandleTypeDef *hcrc); 0313 HAL_StatusTypeDef HAL_CRC_DeInit(CRC_HandleTypeDef *hcrc); 0314 void HAL_CRC_MspInit(CRC_HandleTypeDef *hcrc); 0315 void HAL_CRC_MspDeInit(CRC_HandleTypeDef *hcrc); 0316 /** 0317 * @} 0318 */ 0319 0320 /* Peripheral Control functions ***********************************************/ 0321 /** @defgroup CRC_Exported_Functions_Group2 Peripheral Control functions 0322 * @ingroup RTEMSBSPsARMSTM32H7 0323 * @{ 0324 */ 0325 uint32_t HAL_CRC_Accumulate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength); 0326 uint32_t HAL_CRC_Calculate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength); 0327 /** 0328 * @} 0329 */ 0330 0331 /* Peripheral State and Error functions ***************************************/ 0332 /** @defgroup CRC_Exported_Functions_Group3 Peripheral State functions 0333 * @ingroup RTEMSBSPsARMSTM32H7 0334 * @{ 0335 */ 0336 HAL_CRC_StateTypeDef HAL_CRC_GetState(const CRC_HandleTypeDef *hcrc); 0337 /** 0338 * @} 0339 */ 0340 0341 /** 0342 * @} 0343 */ 0344 0345 /** 0346 * @} 0347 */ 0348 0349 /** 0350 * @} 0351 */ 0352 0353 #ifdef __cplusplus 0354 } 0355 #endif 0356 0357 #endif /* STM32H7xx_HAL_CRC_H */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |