stm32l0xx_hal_crc_ex.h 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. /**
  2. ******************************************************************************
  3. * @file stm32l0xx_hal_crc_ex.h
  4. * @author MCD Application Team
  5. * @brief Header file of CRC HAL extended module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * Copyright (c) 2016 STMicroelectronics.
  10. * All rights reserved.
  11. *
  12. * This software is licensed under terms that can be found in the LICENSE file
  13. * in the root directory of this software component.
  14. * If no LICENSE file comes with this software, it is provided AS-IS.
  15. *
  16. ******************************************************************************
  17. */
  18. /* Define to prevent recursive inclusion -------------------------------------*/
  19. #ifndef STM32L0xx_HAL_CRC_EX_H
  20. #define STM32L0xx_HAL_CRC_EX_H
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. /* Includes ------------------------------------------------------------------*/
  25. #include "stm32l0xx_hal_def.h"
  26. /** @addtogroup STM32L0xx_HAL_Driver
  27. * @{
  28. */
  29. /** @addtogroup CRCEx
  30. * @{
  31. */
  32. /* Exported types ------------------------------------------------------------*/
  33. /* Exported constants --------------------------------------------------------*/
  34. /** @defgroup CRCEx_Exported_Constants CRC Extended Exported Constants
  35. * @{
  36. */
  37. /** @defgroup CRCEx_Input_Data_Inversion Input Data Inversion Modes
  38. * @{
  39. */
  40. #define CRC_INPUTDATA_INVERSION_NONE 0x00000000U /*!< No input data inversion */
  41. #define CRC_INPUTDATA_INVERSION_BYTE CRC_CR_REV_IN_0 /*!< Byte-wise input data inversion */
  42. #define CRC_INPUTDATA_INVERSION_HALFWORD CRC_CR_REV_IN_1 /*!< HalfWord-wise input data inversion */
  43. #define CRC_INPUTDATA_INVERSION_WORD CRC_CR_REV_IN /*!< Word-wise input data inversion */
  44. /**
  45. * @}
  46. */
  47. /** @defgroup CRCEx_Output_Data_Inversion Output Data Inversion Modes
  48. * @{
  49. */
  50. #define CRC_OUTPUTDATA_INVERSION_DISABLE 0x00000000U /*!< No output data inversion */
  51. #define CRC_OUTPUTDATA_INVERSION_ENABLE CRC_CR_REV_OUT /*!< Bit-wise output data inversion */
  52. /**
  53. * @}
  54. */
  55. /**
  56. * @}
  57. */
  58. /* Exported macro ------------------------------------------------------------*/
  59. /** @defgroup CRCEx_Exported_Macros CRC Extended Exported Macros
  60. * @{
  61. */
  62. /**
  63. * @brief Set CRC output reversal
  64. * @param __HANDLE__ CRC handle
  65. * @retval None
  66. */
  67. #define __HAL_CRC_OUTPUTREVERSAL_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR |= CRC_CR_REV_OUT)
  68. /**
  69. * @brief Unset CRC output reversal
  70. * @param __HANDLE__ CRC handle
  71. * @retval None
  72. */
  73. #define __HAL_CRC_OUTPUTREVERSAL_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR &= ~(CRC_CR_REV_OUT))
  74. /**
  75. * @brief Set CRC non-default polynomial
  76. * @param __HANDLE__ CRC handle
  77. * @param __POLYNOMIAL__ 7, 8, 16 or 32-bit polynomial
  78. * @retval None
  79. */
  80. #define __HAL_CRC_POLYNOMIAL_CONFIG(__HANDLE__, __POLYNOMIAL__) ((__HANDLE__)->Instance->POL = (__POLYNOMIAL__))
  81. /**
  82. * @}
  83. */
  84. /* Private macros --------------------------------------------------------*/
  85. /** @defgroup CRCEx_Private_Macros CRC Extended Private Macros
  86. * @{
  87. */
  88. #define IS_CRC_INPUTDATA_INVERSION_MODE(MODE) (((MODE) == CRC_INPUTDATA_INVERSION_NONE) || \
  89. ((MODE) == CRC_INPUTDATA_INVERSION_BYTE) || \
  90. ((MODE) == CRC_INPUTDATA_INVERSION_HALFWORD) || \
  91. ((MODE) == CRC_INPUTDATA_INVERSION_WORD))
  92. #define IS_CRC_OUTPUTDATA_INVERSION_MODE(MODE) (((MODE) == CRC_OUTPUTDATA_INVERSION_DISABLE) || \
  93. ((MODE) == CRC_OUTPUTDATA_INVERSION_ENABLE))
  94. /**
  95. * @}
  96. */
  97. /* Exported functions --------------------------------------------------------*/
  98. /** @addtogroup CRCEx_Exported_Functions
  99. * @{
  100. */
  101. /** @addtogroup CRCEx_Exported_Functions_Group1
  102. * @{
  103. */
  104. /* Initialization and de-initialization functions ****************************/
  105. HAL_StatusTypeDef HAL_CRCEx_Polynomial_Set(CRC_HandleTypeDef *hcrc, uint32_t Pol, uint32_t PolyLength);
  106. HAL_StatusTypeDef HAL_CRCEx_Input_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t InputReverseMode);
  107. HAL_StatusTypeDef HAL_CRCEx_Output_Data_Reverse(CRC_HandleTypeDef *hcrc, uint32_t OutputReverseMode);
  108. /**
  109. * @}
  110. */
  111. /**
  112. * @}
  113. */
  114. /**
  115. * @}
  116. */
  117. /**
  118. * @}
  119. */
  120. #ifdef __cplusplus
  121. }
  122. #endif
  123. #endif /* STM32L0xx_HAL_CRC_EX_H */