1 /** 2 ****************************************************************************** 3 * @file stm32f7xx_hal_crc_ex.h 4 * @author MCD Application Team 5 * @version V1.0.1 6 * @date 25-June-2015 7 * @brief Header file of CRC HAL extension module. 8 ****************************************************************************** 9 * @attention 10 * 11 * <h2><center>© COPYRIGHT(c) 2015 STMicroelectronics</center></h2> 12 * 13 * Redistribution and use in source and binary forms, with or without modification, 14 * are permitted provided that the following conditions are met: 15 * 1. Redistributions of source code must retain the above copyright notice, 16 * this list of conditions and the following disclaimer. 17 * 2. Redistributions in binary form must reproduce the above copyright notice, 18 * this list of conditions and the following disclaimer in the documentation 19 * and/or other materials provided with the distribution. 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors 21 * may be used to endorse or promote products derived from this software 22 * without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 34 * 35 ****************************************************************************** 36 */ 37 38 /* Define to prevent recursive inclusion -------------------------------------*/ 39 #ifndef __STM32F7xx_HAL_CRC_EX_H 40 #define __STM32F7xx_HAL_CRC_EX_H 41 42 #ifdef __cplusplus 43 extern "C" { 44 #endif 45 46 /* Includes ------------------------------------------------------------------*/ 47 #include "stm32f7xx_hal_def.h" 48 49 /** @addtogroup STM32F7xx_HAL_Driver 50 * @{ 51 */ 52 53 /** @defgroup CRCEx CRCEx 54 * @{ 55 */ 56 57 /* Exported types ------------------------------------------------------------*/ 58 /* Exported constants --------------------------------------------------------*/ 59 60 /** @defgroup CRCEx_Exported_Constants CRC Extended exported constants 61 * @{ 62 */ 63 64 /** @defgroup CRCEx_Input_Data_Inversion CRC Extended input data inversion modes 65 * @{ 66 */ 67 #define CRC_INPUTDATA_INVERSION_NONE ((uint32_t)0x00000000) 68 #define CRC_INPUTDATA_INVERSION_BYTE ((uint32_t)CRC_CR_REV_IN_0) 69 #define CRC_INPUTDATA_INVERSION_HALFWORD ((uint32_t)CRC_CR_REV_IN_1) 70 #define CRC_INPUTDATA_INVERSION_WORD ((uint32_t)CRC_CR_REV_IN) 71 72 #define IS_CRC_INPUTDATA_INVERSION_MODE(__MODE__) (((__MODE__) == CRC_INPUTDATA_INVERSION_NONE) || \ 73 ((__MODE__) == CRC_INPUTDATA_INVERSION_BYTE) || \ 74 ((__MODE__) == CRC_INPUTDATA_INVERSION_HALFWORD) || \ 75 ((__MODE__) == CRC_INPUTDATA_INVERSION_WORD)) 76 /** 77 * @} 78 */ 79 80 /** @defgroup CRCEx_Output_Data_Inversion CRC Extended output data inversion modes 81 * @{ 82 */ 83 #define CRC_OUTPUTDATA_INVERSION_DISABLE ((uint32_t)0x00000000) 84 #define CRC_OUTPUTDATA_INVERSION_ENABLE ((uint32_t)CRC_CR_REV_OUT) 85 86 #define IS_CRC_OUTPUTDATA_INVERSION_MODE(__MODE__) (((__MODE__) == CRC_OUTPUTDATA_INVERSION_DISABLE) || \ 87 ((__MODE__) == CRC_OUTPUTDATA_INVERSION_ENABLE)) 88 /** 89 * @} 90 */ 91 92 93 /** 94 * @} 95 */ 96 /* Exported macro ------------------------------------------------------------*/ 97 98 /** @defgroup CRCEx_Exported_Macros CRC Extended exported macros 99 * @{ 100 */ 101 102 /** 103 * @brief Set CRC output reversal 104 * @param __HANDLE__ : CRC handle 105 * @retval None. 106 */ 107 #define __HAL_CRC_OUTPUTREVERSAL_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRC_CR_REV_OUT) 108 109 /** 110 * @brief Unset CRC output reversal 111 * @param __HANDLE__ : CRC handle 112 * @retval None. 113 */ 114 #define __HAL_CRC_OUTPUTREVERSAL_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(CRC_CR_REV_OUT)) 115 116 /** 117 * @brief Set CRC non-default polynomial 118 * @param __HANDLE__ : CRC handle 119 * @param __POLYNOMIAL__: 7, 8, 16 or 32-bit polynomial 120 * @retval None. 121 */ 122 #define __HAL_CRC_POLYNOMIAL_CONFIG(__HANDLE__, __POLYNOMIAL__) ((__HANDLE__)->Instance->POL = (__POLYNOMIAL__)) 123 124 /** 125 * @} 126 */ 127 128 129 /** @defgroup CRCEx_Exported_Functions CRC Extended Exported Functions 130 * @{ 131 */ 132 133 /** @defgroup CRCEx_Exported_Functions_Group1 Extended CRC features functions 134 * @{ 135 */ 136 /* Exported functions --------------------------------------------------------*/ 137 /* Initialization and de-initialization functions ****************************/ 138 HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol, uint32_t PolyLength); 139 HAL_StatusTypeDef HAL_CRCEx_Input_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t InputReverseMode); 140 HAL_StatusTypeDef HAL_CRCEx_Output_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t OutputReverseMode); 141 142 /* Peripheral Control functions ***********************************************/ 143 /* Peripheral State and Error functions ***************************************/ 144 145 /** 146 * @} 147 */ 148 149 /** 150 * @} 151 */ 152 153 154 /** 155 * @} 156 */ 157 158 /** 159 * @} 160 */ 161 162 #ifdef __cplusplus 163 } 164 #endif 165 166 #endif /* __STM32F7xx_HAL_CRC_EX_H */ 167 168 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/ 169