Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:35

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_crc_ex.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of CRC HAL extended 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_EX_H
0021 #define STM32H7xx_HAL_CRC_EX_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 CRCEx
0035   * @{
0036   */
0037 
0038 /* Exported types ------------------------------------------------------------*/
0039 /* Exported constants --------------------------------------------------------*/
0040 /** @defgroup CRCEx_Exported_Constants CRC Extended Exported Constants
0041   * @ingroup RTEMSBSPsARMSTM32H7
0042   * @{
0043   */
0044 
0045 /** @defgroup CRCEx_Input_Data_Inversion Input Data Inversion Modes
0046   * @ingroup RTEMSBSPsARMSTM32H7
0047   * @{
0048   */
0049 #define CRC_INPUTDATA_INVERSION_NONE               0x00000000U     /*!< No input data inversion            */
0050 #define CRC_INPUTDATA_INVERSION_BYTE               CRC_CR_REV_IN_0 /*!< Byte-wise input data inversion     */
0051 #define CRC_INPUTDATA_INVERSION_HALFWORD           CRC_CR_REV_IN_1 /*!< HalfWord-wise input data inversion */
0052 #define CRC_INPUTDATA_INVERSION_WORD               CRC_CR_REV_IN   /*!< Word-wise input data inversion     */
0053 /**
0054   * @}
0055   */
0056 
0057 /** @defgroup CRCEx_Output_Data_Inversion Output Data Inversion Modes
0058   * @ingroup RTEMSBSPsARMSTM32H7
0059   * @{
0060   */
0061 #define CRC_OUTPUTDATA_INVERSION_DISABLE         0x00000000U       /*!< No output data inversion       */
0062 #define CRC_OUTPUTDATA_INVERSION_ENABLE          CRC_CR_REV_OUT    /*!< Bit-wise output data inversion */
0063 /**
0064   * @}
0065   */
0066 
0067 /**
0068   * @}
0069   */
0070 
0071 /* Exported macro ------------------------------------------------------------*/
0072 /** @defgroup CRCEx_Exported_Macros CRC Extended Exported Macros
0073   * @ingroup RTEMSBSPsARMSTM32H7
0074   * @{
0075   */
0076 
0077 /**
0078   * @brief  Set CRC output reversal
0079   * @param  __HANDLE__ CRC handle
0080   * @retval None
0081   */
0082 #define  __HAL_CRC_OUTPUTREVERSAL_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRC_CR_REV_OUT)
0083 
0084 /**
0085   * @brief  Unset CRC output reversal
0086   * @param  __HANDLE__ CRC handle
0087   * @retval None
0088   */
0089 #define __HAL_CRC_OUTPUTREVERSAL_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(CRC_CR_REV_OUT))
0090 
0091 /**
0092   * @brief  Set CRC non-default polynomial
0093   * @param  __HANDLE__ CRC handle
0094   * @param  __POLYNOMIAL__ 7, 8, 16 or 32-bit polynomial
0095   * @retval None
0096   */
0097 #define __HAL_CRC_POLYNOMIAL_CONFIG(__HANDLE__, __POLYNOMIAL__) ((__HANDLE__)->Instance->POL = (__POLYNOMIAL__))
0098 
0099 /**
0100   * @}
0101   */
0102 
0103 /* Private macros --------------------------------------------------------*/
0104 /** @defgroup CRCEx_Private_Macros CRC Extended Private Macros
0105   * @ingroup RTEMSBSPsARMSTM32H7
0106   * @{
0107   */
0108 
0109 #define IS_CRC_INPUTDATA_INVERSION_MODE(MODE)     (((MODE) == CRC_INPUTDATA_INVERSION_NONE)     || \
0110                                                    ((MODE) == CRC_INPUTDATA_INVERSION_BYTE)     || \
0111                                                    ((MODE) == CRC_INPUTDATA_INVERSION_HALFWORD) || \
0112                                                    ((MODE) == CRC_INPUTDATA_INVERSION_WORD))
0113 
0114 #define IS_CRC_OUTPUTDATA_INVERSION_MODE(MODE)    (((MODE) == CRC_OUTPUTDATA_INVERSION_DISABLE) || \
0115                                                    ((MODE) == CRC_OUTPUTDATA_INVERSION_ENABLE))
0116 
0117 /**
0118   * @}
0119   */
0120 
0121 /* Exported functions --------------------------------------------------------*/
0122 
0123 /** @addtogroup CRCEx_Exported_Functions
0124   * @{
0125   */
0126 
0127 /** @addtogroup CRCEx_Exported_Functions_Group1
0128   * @{
0129   */
0130 /* Initialization and de-initialization functions  ****************************/
0131 HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol, uint32_t PolyLength);
0132 HAL_StatusTypeDef HAL_CRCEx_Input_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t InputReverseMode);
0133 HAL_StatusTypeDef HAL_CRCEx_Output_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t OutputReverseMode);
0134 
0135 /**
0136   * @}
0137   */
0138 
0139 /**
0140   * @}
0141   */
0142 
0143 /**
0144   * @}
0145   */
0146 
0147 /**
0148   * @}
0149   */
0150 
0151 #ifdef __cplusplus
0152 }
0153 #endif
0154 
0155 #endif /* STM32H7xx_HAL_CRC_EX_H */