STM32L486xx HAL User Manual
stm32l4xx_hal_crc_ex.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_hal_crc_ex.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of CRC HAL extended module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics</center></h2>
00010   *
00011   * Redistribution and use in source and binary forms, with or without modification,
00012   * are permitted provided that the following conditions are met:
00013   *   1. Redistributions of source code must retain the above copyright notice,
00014   *      this list of conditions and the following disclaimer.
00015   *   2. Redistributions in binary form must reproduce the above copyright notice,
00016   *      this list of conditions and the following disclaimer in the documentation
00017   *      and/or other materials provided with the distribution.
00018   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00019   *      may be used to endorse or promote products derived from this software
00020   *      without specific prior written permission.
00021   *
00022   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00023   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00024   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00025   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00026   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00027   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00028   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00030   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00031   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00032   *
00033   ******************************************************************************
00034   */
00035 
00036 /* Define to prevent recursive inclusion -------------------------------------*/
00037 #ifndef __STM32L4xx_HAL_CRC_EX_H
00038 #define __STM32L4xx_HAL_CRC_EX_H
00039 
00040 #ifdef __cplusplus
00041 extern "C" {
00042 #endif
00043 
00044 /* Includes ------------------------------------------------------------------*/
00045 #include "stm32l4xx_hal_def.h"
00046 
00047 /** @addtogroup STM32L4xx_HAL_Driver
00048   * @{
00049   */
00050 
00051 /** @addtogroup CRCEx
00052   * @{
00053   */
00054 
00055 /* Exported types ------------------------------------------------------------*/
00056 /* Exported constants --------------------------------------------------------*/
00057 /** @defgroup CRCEx_Exported_Constants CRC Extended Exported Constants
00058   * @{
00059   */
00060 
00061 /** @defgroup CRCEx_Input_Data_Inversion Input Data Inversion Modes
00062   * @{
00063   */
00064 #define CRC_INPUTDATA_INVERSION_NONE               0x00000000U     /*!< No input data inversion            */
00065 #define CRC_INPUTDATA_INVERSION_BYTE               CRC_CR_REV_IN_0 /*!< Byte-wise input data inversion     */
00066 #define CRC_INPUTDATA_INVERSION_HALFWORD           CRC_CR_REV_IN_1 /*!< HalfWord-wise input data inversion */
00067 #define CRC_INPUTDATA_INVERSION_WORD               CRC_CR_REV_IN   /*!< Word-wise input data inversion     */
00068 /**
00069   * @}
00070   */
00071 
00072 /** @defgroup CRCEx_Output_Data_Inversion Output Data Inversion Modes
00073   * @{
00074   */
00075 #define CRC_OUTPUTDATA_INVERSION_DISABLE         0x00000000U       /*!< No output data inversion       */
00076 #define CRC_OUTPUTDATA_INVERSION_ENABLE          CRC_CR_REV_OUT    /*!< Bit-wise output data inversion */
00077 /**
00078   * @}
00079   */
00080 
00081 /**
00082   * @}
00083   */
00084 
00085 /* Exported macro ------------------------------------------------------------*/
00086 /** @defgroup CRCEx_Exported_Macros CRC Extended Exported Macros
00087   * @{
00088   */
00089 
00090 /**
00091   * @brief  Set CRC output reversal
00092   * @param  __HANDLE__ CRC handle
00093   * @retval None
00094   */
00095 #define  __HAL_CRC_OUTPUTREVERSAL_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRC_CR_REV_OUT)
00096 
00097 /**
00098   * @brief  Unset CRC output reversal
00099   * @param  __HANDLE__ CRC handle
00100   * @retval None
00101   */
00102 #define __HAL_CRC_OUTPUTREVERSAL_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(CRC_CR_REV_OUT))
00103 
00104 /**
00105   * @brief  Set CRC non-default polynomial
00106   * @param  __HANDLE__ CRC handle
00107   * @param  __POLYNOMIAL__ 7, 8, 16 or 32-bit polynomial
00108   * @retval None
00109   */
00110 #define __HAL_CRC_POLYNOMIAL_CONFIG(__HANDLE__, __POLYNOMIAL__) ((__HANDLE__)->Instance->POL = (__POLYNOMIAL__))
00111 
00112 /**
00113   * @}
00114   */
00115 
00116 /* Private macros --------------------------------------------------------*/
00117 /** @defgroup CRCEx_Private_Macros CRC Extended Private Macros
00118   * @{
00119   */
00120 
00121 #define IS_CRC_INPUTDATA_INVERSION_MODE(MODE)     (((MODE) == CRC_INPUTDATA_INVERSION_NONE)     || \
00122                                                    ((MODE) == CRC_INPUTDATA_INVERSION_BYTE)     || \
00123                                                    ((MODE) == CRC_INPUTDATA_INVERSION_HALFWORD) || \
00124                                                    ((MODE) == CRC_INPUTDATA_INVERSION_WORD))
00125 
00126 #define IS_CRC_OUTPUTDATA_INVERSION_MODE(MODE)    (((MODE) == CRC_OUTPUTDATA_INVERSION_DISABLE) || \
00127                                                    ((MODE) == CRC_OUTPUTDATA_INVERSION_ENABLE))
00128 
00129 /**
00130   * @}
00131   */
00132 
00133 /* Exported functions --------------------------------------------------------*/
00134 
00135 /** @addtogroup CRCEx_Exported_Functions
00136   * @{
00137   */
00138 
00139 /** @addtogroup CRCEx_Exported_Functions_Group1
00140   * @{
00141   */
00142 /* Initialization and de-initialization functions  ****************************/
00143 HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol, uint32_t PolyLength);
00144 HAL_StatusTypeDef HAL_CRCEx_Input_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t InputReverseMode);
00145 HAL_StatusTypeDef HAL_CRCEx_Output_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t OutputReverseMode);
00146 
00147 /**
00148   * @}
00149   */
00150 
00151 /**
00152   * @}
00153   */
00154 
00155 /**
00156   * @}
00157   */
00158 
00159 /**
00160   * @}
00161   */
00162 
00163 #ifdef __cplusplus
00164 }
00165 #endif
00166 
00167 #endif /* __STM32L4xx_HAL_CRC_EX_H */
00168 
00169 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/