The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
Kojto
Date:
Tue Feb 14 11:24:20 2017 +0000
Revision:
136:ef9c61f8c49f
Parent:
135:176b8275d35d
Child:
168:b9e159c1930a
Release 136 of the mbed library

Ports for Upcoming Targets


Fixes and Changes

3432: Target STM USBHOST support https://github.com/ARMmbed/mbed-os/pull/3432
3181: NUCLEO_F207ZG extending PeripheralPins.c: all available alternate functions can be used now https://github.com/ARMmbed/mbed-os/pull/3181
3626: NUCLEO_F412ZG : Add USB Device +Host https://github.com/ARMmbed/mbed-os/pull/3626
3628: Fix warnings https://github.com/ARMmbed/mbed-os/pull/3628
3629: STM32: L0 LL layer https://github.com/ARMmbed/mbed-os/pull/3629
3632: IDE Export support for platform VK_RZ_A1H https://github.com/ARMmbed/mbed-os/pull/3632
3642: Missing IRQ pin fix for platform VK_RZ_A1H https://github.com/ARMmbed/mbed-os/pull/3642
3664: Fix ncs36510 sleep definitions https://github.com/ARMmbed/mbed-os/pull/3664
3655: [STM32F4] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3655
3657: [STM32L4] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3657
3658: [STM32F3] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3658
3685: STM32: I2C: reset state machine https://github.com/ARMmbed/mbed-os/pull/3685
3692: uVisor: Standardize available legacy heap and stack https://github.com/ARMmbed/mbed-os/pull/3692
3621: Fix for #2884, LPC824: export to LPCXpresso, target running with wron https://github.com/ARMmbed/mbed-os/pull/3621
3649: [STM32F7] Modify folder structure https://github.com/ARMmbed/mbed-os/pull/3649
3695: Enforce device_name is valid in targets.json https://github.com/ARMmbed/mbed-os/pull/3695
3723: NCS36510: spi_format function bug fix https://github.com/ARMmbed/mbed-os/pull/3723

Who changed what in which revision?

UserRevisionLine numberNew contents of line
<> 135:176b8275d35d 1 /**
<> 135:176b8275d35d 2 ******************************************************************************
<> 135:176b8275d35d 3 * @file stm32f3xx_ll_crc.h
<> 135:176b8275d35d 4 * @author MCD Application Team
<> 135:176b8275d35d 5 * @version V1.4.0
<> 135:176b8275d35d 6 * @date 16-December-2016
<> 135:176b8275d35d 7 * @brief Header file of CRC LL module.
<> 135:176b8275d35d 8 ******************************************************************************
<> 135:176b8275d35d 9 * @attention
<> 135:176b8275d35d 10 *
<> 135:176b8275d35d 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
<> 135:176b8275d35d 12 *
<> 135:176b8275d35d 13 * Redistribution and use in source and binary forms, with or without modification,
<> 135:176b8275d35d 14 * are permitted provided that the following conditions are met:
<> 135:176b8275d35d 15 * 1. Redistributions of source code must retain the above copyright notice,
<> 135:176b8275d35d 16 * this list of conditions and the following disclaimer.
<> 135:176b8275d35d 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
<> 135:176b8275d35d 18 * this list of conditions and the following disclaimer in the documentation
<> 135:176b8275d35d 19 * and/or other materials provided with the distribution.
<> 135:176b8275d35d 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
<> 135:176b8275d35d 21 * may be used to endorse or promote products derived from this software
<> 135:176b8275d35d 22 * without specific prior written permission.
<> 135:176b8275d35d 23 *
<> 135:176b8275d35d 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
<> 135:176b8275d35d 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
<> 135:176b8275d35d 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
<> 135:176b8275d35d 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
<> 135:176b8275d35d 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
<> 135:176b8275d35d 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
<> 135:176b8275d35d 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
<> 135:176b8275d35d 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
<> 135:176b8275d35d 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
<> 135:176b8275d35d 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<> 135:176b8275d35d 34 *
<> 135:176b8275d35d 35 ******************************************************************************
<> 135:176b8275d35d 36 */
<> 135:176b8275d35d 37
<> 135:176b8275d35d 38 /* Define to prevent recursive inclusion -------------------------------------*/
<> 135:176b8275d35d 39 #ifndef __STM32F3xx_LL_CRC_H
<> 135:176b8275d35d 40 #define __STM32F3xx_LL_CRC_H
<> 135:176b8275d35d 41
<> 135:176b8275d35d 42 #ifdef __cplusplus
<> 135:176b8275d35d 43 extern "C" {
<> 135:176b8275d35d 44 #endif
<> 135:176b8275d35d 45
<> 135:176b8275d35d 46 /* Includes ------------------------------------------------------------------*/
<> 135:176b8275d35d 47 #include "stm32f3xx.h"
<> 135:176b8275d35d 48
<> 135:176b8275d35d 49 /** @addtogroup STM32F3xx_LL_Driver
<> 135:176b8275d35d 50 * @{
<> 135:176b8275d35d 51 */
<> 135:176b8275d35d 52
<> 135:176b8275d35d 53 #if defined(CRC)
<> 135:176b8275d35d 54
<> 135:176b8275d35d 55 /** @defgroup CRC_LL CRC
<> 135:176b8275d35d 56 * @{
<> 135:176b8275d35d 57 */
<> 135:176b8275d35d 58
<> 135:176b8275d35d 59 /* Private types -------------------------------------------------------------*/
<> 135:176b8275d35d 60 /* Private variables ---------------------------------------------------------*/
<> 135:176b8275d35d 61 /* Private constants ---------------------------------------------------------*/
<> 135:176b8275d35d 62 /* Private macros ------------------------------------------------------------*/
<> 135:176b8275d35d 63
<> 135:176b8275d35d 64 /* Exported types ------------------------------------------------------------*/
<> 135:176b8275d35d 65 /* Exported constants --------------------------------------------------------*/
<> 135:176b8275d35d 66 /** @defgroup CRC_LL_Exported_Constants CRC Exported Constants
<> 135:176b8275d35d 67 * @{
<> 135:176b8275d35d 68 */
<> 135:176b8275d35d 69
<> 135:176b8275d35d 70 /** @defgroup CRC_LL_EC_POLYLENGTH Polynomial length
<> 135:176b8275d35d 71 * @{
<> 135:176b8275d35d 72 */
<> 135:176b8275d35d 73 #define LL_CRC_POLYLENGTH_32B (uint32_t)0x00000000U /*!< 32 bits Polynomial size */
<> 135:176b8275d35d 74 #define LL_CRC_POLYLENGTH_16B CRC_CR_POLYSIZE_0 /*!< 16 bits Polynomial size */
<> 135:176b8275d35d 75 #define LL_CRC_POLYLENGTH_8B CRC_CR_POLYSIZE_1 /*!< 8 bits Polynomial size */
<> 135:176b8275d35d 76 #define LL_CRC_POLYLENGTH_7B (CRC_CR_POLYSIZE_1 | CRC_CR_POLYSIZE_0) /*!< 7 bits Polynomial size */
<> 135:176b8275d35d 77 /**
<> 135:176b8275d35d 78 * @}
<> 135:176b8275d35d 79 */
<> 135:176b8275d35d 80
<> 135:176b8275d35d 81 /** @defgroup CRC_LL_EC_INDATA_REVERSE Input Data Reverse
<> 135:176b8275d35d 82 * @{
<> 135:176b8275d35d 83 */
<> 135:176b8275d35d 84 #define LL_CRC_INDATA_REVERSE_NONE (uint32_t)0x00000000U /*!< Input Data bit order not affected */
<> 135:176b8275d35d 85 #define LL_CRC_INDATA_REVERSE_BYTE CRC_CR_REV_IN_0 /*!< Input Data bit reversal done by byte */
<> 135:176b8275d35d 86 #define LL_CRC_INDATA_REVERSE_HALFWORD CRC_CR_REV_IN_1 /*!< Input Data bit reversal done by half-word */
<> 135:176b8275d35d 87 #define LL_CRC_INDATA_REVERSE_WORD (CRC_CR_REV_IN_1 | CRC_CR_REV_IN_0) /*!< Input Data bit reversal done by word */
<> 135:176b8275d35d 88 /**
<> 135:176b8275d35d 89 * @}
<> 135:176b8275d35d 90 */
<> 135:176b8275d35d 91
<> 135:176b8275d35d 92 /** @defgroup CRC_LL_EC_OUTDATA_REVERSE Output Data Reverse
<> 135:176b8275d35d 93 * @{
<> 135:176b8275d35d 94 */
<> 135:176b8275d35d 95 #define LL_CRC_OUTDATA_REVERSE_NONE (uint32_t)0x00000000U /*!< Output Data bit order not affected */
<> 135:176b8275d35d 96 #define LL_CRC_OUTDATA_REVERSE_BIT CRC_CR_REV_OUT /*!< Output Data bit reversal done by bit */
<> 135:176b8275d35d 97 /**
<> 135:176b8275d35d 98 * @}
<> 135:176b8275d35d 99 */
<> 135:176b8275d35d 100
<> 135:176b8275d35d 101 /** @defgroup CRC_LL_EC_Default_Polynomial_Value Default CRC generating polynomial value
<> 135:176b8275d35d 102 * @brief Normal representation of this polynomial value is
<> 135:176b8275d35d 103 * 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 .
<> 135:176b8275d35d 104 * @{
<> 135:176b8275d35d 105 */
<> 135:176b8275d35d 106 #define LL_CRC_DEFAULT_CRC32_POLY (uint32_t)0x04C11DB7U /*!< Default CRC generating polynomial value */
<> 135:176b8275d35d 107 /**
<> 135:176b8275d35d 108 * @}
<> 135:176b8275d35d 109 */
<> 135:176b8275d35d 110
<> 135:176b8275d35d 111 /** @defgroup CRC_LL_EC_Default_InitValue Default CRC computation initialization value
<> 135:176b8275d35d 112 * @{
<> 135:176b8275d35d 113 */
<> 135:176b8275d35d 114 #define LL_CRC_DEFAULT_CRC_INITVALUE (uint32_t)0xFFFFFFFFU /*!< Default CRC computation initialization value */
<> 135:176b8275d35d 115 /**
<> 135:176b8275d35d 116 * @}
<> 135:176b8275d35d 117 */
<> 135:176b8275d35d 118
<> 135:176b8275d35d 119 /**
<> 135:176b8275d35d 120 * @}
<> 135:176b8275d35d 121 */
<> 135:176b8275d35d 122
<> 135:176b8275d35d 123 /* Exported macro ------------------------------------------------------------*/
<> 135:176b8275d35d 124 /** @defgroup CRC_LL_Exported_Macros CRC Exported Macros
<> 135:176b8275d35d 125 * @{
<> 135:176b8275d35d 126 */
<> 135:176b8275d35d 127
<> 135:176b8275d35d 128 /** @defgroup CRC_LL_EM_WRITE_READ Common Write and read registers Macros
<> 135:176b8275d35d 129 * @{
<> 135:176b8275d35d 130 */
<> 135:176b8275d35d 131
<> 135:176b8275d35d 132 /**
<> 135:176b8275d35d 133 * @brief Write a value in CRC register
<> 135:176b8275d35d 134 * @param __INSTANCE__ CRC Instance
<> 135:176b8275d35d 135 * @param __REG__ Register to be written
<> 135:176b8275d35d 136 * @param __VALUE__ Value to be written in the register
<> 135:176b8275d35d 137 * @retval None
<> 135:176b8275d35d 138 */
<> 135:176b8275d35d 139 #define LL_CRC_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
<> 135:176b8275d35d 140
<> 135:176b8275d35d 141 /**
<> 135:176b8275d35d 142 * @brief Read a value in CRC register
<> 135:176b8275d35d 143 * @param __INSTANCE__ CRC Instance
<> 135:176b8275d35d 144 * @param __REG__ Register to be read
<> 135:176b8275d35d 145 * @retval Register value
<> 135:176b8275d35d 146 */
<> 135:176b8275d35d 147 #define LL_CRC_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
<> 135:176b8275d35d 148 /**
<> 135:176b8275d35d 149 * @}
<> 135:176b8275d35d 150 */
<> 135:176b8275d35d 151
<> 135:176b8275d35d 152 /**
<> 135:176b8275d35d 153 * @}
<> 135:176b8275d35d 154 */
<> 135:176b8275d35d 155
<> 135:176b8275d35d 156
<> 135:176b8275d35d 157 /* Exported functions --------------------------------------------------------*/
<> 135:176b8275d35d 158 /** @defgroup CRC_LL_Exported_Functions CRC Exported Functions
<> 135:176b8275d35d 159 * @{
<> 135:176b8275d35d 160 */
<> 135:176b8275d35d 161
<> 135:176b8275d35d 162 /** @defgroup CRC_LL_EF_Configuration CRC Configuration functions
<> 135:176b8275d35d 163 * @{
<> 135:176b8275d35d 164 */
<> 135:176b8275d35d 165
<> 135:176b8275d35d 166 /**
<> 135:176b8275d35d 167 * @brief Reset the CRC calculation unit.
<> 135:176b8275d35d 168 * @note If Programmable Initial CRC value feature
<> 135:176b8275d35d 169 * is available, also set the Data Register to the value stored in the
<> 135:176b8275d35d 170 * CRC_INIT register, otherwise, reset Data Register to its default value.
<> 135:176b8275d35d 171 * @rmtoll CR RESET LL_CRC_ResetCRCCalculationUnit
<> 135:176b8275d35d 172 * @param CRCx CRC Instance
<> 135:176b8275d35d 173 * @retval None
<> 135:176b8275d35d 174 */
<> 135:176b8275d35d 175 __STATIC_INLINE void LL_CRC_ResetCRCCalculationUnit(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 176 {
<> 135:176b8275d35d 177 SET_BIT(CRCx->CR, CRC_CR_RESET);
<> 135:176b8275d35d 178 }
<> 135:176b8275d35d 179
<> 135:176b8275d35d 180 /**
<> 135:176b8275d35d 181 * @brief Configure size of the polynomial.
<> 135:176b8275d35d 182 * @rmtoll CR POLYSIZE LL_CRC_SetPolynomialSize
<> 135:176b8275d35d 183 * @param CRCx CRC Instance
<> 135:176b8275d35d 184 * @param PolySize This parameter can be one of the following values:
<> 135:176b8275d35d 185 * @arg @ref LL_CRC_POLYLENGTH_32B
<> 135:176b8275d35d 186 * @arg @ref LL_CRC_POLYLENGTH_16B
<> 135:176b8275d35d 187 * @arg @ref LL_CRC_POLYLENGTH_8B
<> 135:176b8275d35d 188 * @arg @ref LL_CRC_POLYLENGTH_7B
<> 135:176b8275d35d 189 * @retval None
<> 135:176b8275d35d 190 */
<> 135:176b8275d35d 191 __STATIC_INLINE void LL_CRC_SetPolynomialSize(CRC_TypeDef *CRCx, uint32_t PolySize)
<> 135:176b8275d35d 192 {
<> 135:176b8275d35d 193 MODIFY_REG(CRCx->CR, CRC_CR_POLYSIZE, PolySize);
<> 135:176b8275d35d 194 }
<> 135:176b8275d35d 195
<> 135:176b8275d35d 196 /**
<> 135:176b8275d35d 197 * @brief Return size of the polynomial.
<> 135:176b8275d35d 198 * @rmtoll CR POLYSIZE LL_CRC_GetPolynomialSize
<> 135:176b8275d35d 199 * @param CRCx CRC Instance
<> 135:176b8275d35d 200 * @retval Returned value can be one of the following values:
<> 135:176b8275d35d 201 * @arg @ref LL_CRC_POLYLENGTH_32B
<> 135:176b8275d35d 202 * @arg @ref LL_CRC_POLYLENGTH_16B
<> 135:176b8275d35d 203 * @arg @ref LL_CRC_POLYLENGTH_8B
<> 135:176b8275d35d 204 * @arg @ref LL_CRC_POLYLENGTH_7B
<> 135:176b8275d35d 205 */
<> 135:176b8275d35d 206 __STATIC_INLINE uint32_t LL_CRC_GetPolynomialSize(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 207 {
<> 135:176b8275d35d 208 return (uint32_t)(READ_BIT(CRCx->CR, CRC_CR_POLYSIZE));
<> 135:176b8275d35d 209 }
<> 135:176b8275d35d 210
<> 135:176b8275d35d 211 /**
<> 135:176b8275d35d 212 * @brief Configure the reversal of the bit order of the input data
<> 135:176b8275d35d 213 * @rmtoll CR REV_IN LL_CRC_SetInputDataReverseMode
<> 135:176b8275d35d 214 * @param CRCx CRC Instance
<> 135:176b8275d35d 215 * @param ReverseMode This parameter can be one of the following values:
<> 135:176b8275d35d 216 * @arg @ref LL_CRC_INDATA_REVERSE_NONE
<> 135:176b8275d35d 217 * @arg @ref LL_CRC_INDATA_REVERSE_BYTE
<> 135:176b8275d35d 218 * @arg @ref LL_CRC_INDATA_REVERSE_HALFWORD
<> 135:176b8275d35d 219 * @arg @ref LL_CRC_INDATA_REVERSE_WORD
<> 135:176b8275d35d 220 * @retval None
<> 135:176b8275d35d 221 */
<> 135:176b8275d35d 222 __STATIC_INLINE void LL_CRC_SetInputDataReverseMode(CRC_TypeDef *CRCx, uint32_t ReverseMode)
<> 135:176b8275d35d 223 {
<> 135:176b8275d35d 224 MODIFY_REG(CRCx->CR, CRC_CR_REV_IN, ReverseMode);
<> 135:176b8275d35d 225 }
<> 135:176b8275d35d 226
<> 135:176b8275d35d 227 /**
<> 135:176b8275d35d 228 * @brief Return type of reversal for input data bit order
<> 135:176b8275d35d 229 * @rmtoll CR REV_IN LL_CRC_GetInputDataReverseMode
<> 135:176b8275d35d 230 * @param CRCx CRC Instance
<> 135:176b8275d35d 231 * @retval Returned value can be one of the following values:
<> 135:176b8275d35d 232 * @arg @ref LL_CRC_INDATA_REVERSE_NONE
<> 135:176b8275d35d 233 * @arg @ref LL_CRC_INDATA_REVERSE_BYTE
<> 135:176b8275d35d 234 * @arg @ref LL_CRC_INDATA_REVERSE_HALFWORD
<> 135:176b8275d35d 235 * @arg @ref LL_CRC_INDATA_REVERSE_WORD
<> 135:176b8275d35d 236 */
<> 135:176b8275d35d 237 __STATIC_INLINE uint32_t LL_CRC_GetInputDataReverseMode(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 238 {
<> 135:176b8275d35d 239 return (uint32_t)(READ_BIT(CRCx->CR, CRC_CR_REV_IN));
<> 135:176b8275d35d 240 }
<> 135:176b8275d35d 241
<> 135:176b8275d35d 242 /**
<> 135:176b8275d35d 243 * @brief Configure the reversal of the bit order of the Output data
<> 135:176b8275d35d 244 * @rmtoll CR REV_OUT LL_CRC_SetOutputDataReverseMode
<> 135:176b8275d35d 245 * @param CRCx CRC Instance
<> 135:176b8275d35d 246 * @param ReverseMode This parameter can be one of the following values:
<> 135:176b8275d35d 247 * @arg @ref LL_CRC_OUTDATA_REVERSE_NONE
<> 135:176b8275d35d 248 * @arg @ref LL_CRC_OUTDATA_REVERSE_BIT
<> 135:176b8275d35d 249 * @retval None
<> 135:176b8275d35d 250 */
<> 135:176b8275d35d 251 __STATIC_INLINE void LL_CRC_SetOutputDataReverseMode(CRC_TypeDef *CRCx, uint32_t ReverseMode)
<> 135:176b8275d35d 252 {
<> 135:176b8275d35d 253 MODIFY_REG(CRCx->CR, CRC_CR_REV_OUT, ReverseMode);
<> 135:176b8275d35d 254 }
<> 135:176b8275d35d 255
<> 135:176b8275d35d 256 /**
<> 135:176b8275d35d 257 * @brief Configure the reversal of the bit order of the Output data
<> 135:176b8275d35d 258 * @rmtoll CR REV_OUT LL_CRC_GetOutputDataReverseMode
<> 135:176b8275d35d 259 * @param CRCx CRC Instance
<> 135:176b8275d35d 260 * @retval Returned value can be one of the following values:
<> 135:176b8275d35d 261 * @arg @ref LL_CRC_OUTDATA_REVERSE_NONE
<> 135:176b8275d35d 262 * @arg @ref LL_CRC_OUTDATA_REVERSE_BIT
<> 135:176b8275d35d 263 */
<> 135:176b8275d35d 264 __STATIC_INLINE uint32_t LL_CRC_GetOutputDataReverseMode(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 265 {
<> 135:176b8275d35d 266 return (uint32_t)(READ_BIT(CRCx->CR, CRC_CR_REV_OUT));
<> 135:176b8275d35d 267 }
<> 135:176b8275d35d 268
<> 135:176b8275d35d 269 /**
<> 135:176b8275d35d 270 * @brief Initialize the Programmable initial CRC value.
<> 135:176b8275d35d 271 * @note If the CRC size is less than 32 bits, the least significant bits
<> 135:176b8275d35d 272 * are used to write the correct value
<> 135:176b8275d35d 273 * @note LL_CRC_DEFAULT_CRC_INITVALUE could be used as value for InitCrc parameter.
<> 135:176b8275d35d 274 * @rmtoll INIT INIT LL_CRC_SetInitialData
<> 135:176b8275d35d 275 * @param CRCx CRC Instance
<> 135:176b8275d35d 276 * @param InitCrc Value to be programmed in Programmable initial CRC value register
<> 135:176b8275d35d 277 * @retval None
<> 135:176b8275d35d 278 */
<> 135:176b8275d35d 279 __STATIC_INLINE void LL_CRC_SetInitialData(CRC_TypeDef *CRCx, uint32_t InitCrc)
<> 135:176b8275d35d 280 {
<> 135:176b8275d35d 281 WRITE_REG(CRCx->INIT, InitCrc);
<> 135:176b8275d35d 282 }
<> 135:176b8275d35d 283
<> 135:176b8275d35d 284 /**
<> 135:176b8275d35d 285 * @brief Return current Initial CRC value.
<> 135:176b8275d35d 286 * @note If the CRC size is less than 32 bits, the least significant bits
<> 135:176b8275d35d 287 * are used to read the correct value
<> 135:176b8275d35d 288 * @rmtoll INIT INIT LL_CRC_GetInitialData
<> 135:176b8275d35d 289 * @param CRCx CRC Instance
<> 135:176b8275d35d 290 * @retval Value programmed in Programmable initial CRC value register
<> 135:176b8275d35d 291 */
<> 135:176b8275d35d 292 __STATIC_INLINE uint32_t LL_CRC_GetInitialData(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 293 {
<> 135:176b8275d35d 294 return (uint32_t)(READ_REG(CRCx->INIT));
<> 135:176b8275d35d 295 }
<> 135:176b8275d35d 296
<> 135:176b8275d35d 297 /**
<> 135:176b8275d35d 298 * @brief Initialize the Programmable polynomial value
<> 135:176b8275d35d 299 * (coefficients of the polynomial to be used for CRC calculation).
<> 135:176b8275d35d 300 * @note LL_CRC_DEFAULT_CRC32_POLY could be used as value for PolynomCoef parameter.
<> 135:176b8275d35d 301 * @note Please check Reference Manual and existing Errata Sheets,
<> 135:176b8275d35d 302 * regarding possible limitations for Polynomial values usage.
<> 135:176b8275d35d 303 * For example, for a polynomial of degree 7, X^7 + X^6 + X^5 + X^2 + 1 is written 0x65
<> 135:176b8275d35d 304 * @rmtoll POL POL LL_CRC_SetPolynomialCoef
<> 135:176b8275d35d 305 * @param CRCx CRC Instance
<> 135:176b8275d35d 306 * @param PolynomCoef Value to be programmed in Programmable Polynomial value register
<> 135:176b8275d35d 307 * @retval None
<> 135:176b8275d35d 308 */
<> 135:176b8275d35d 309 __STATIC_INLINE void LL_CRC_SetPolynomialCoef(CRC_TypeDef *CRCx, uint32_t PolynomCoef)
<> 135:176b8275d35d 310 {
<> 135:176b8275d35d 311 WRITE_REG(CRCx->POL, PolynomCoef);
<> 135:176b8275d35d 312 }
<> 135:176b8275d35d 313
<> 135:176b8275d35d 314 /**
<> 135:176b8275d35d 315 * @brief Return current Programmable polynomial value
<> 135:176b8275d35d 316 * @note Please check Reference Manual and existing Errata Sheets,
<> 135:176b8275d35d 317 * regarding possible limitations for Polynomial values usage.
<> 135:176b8275d35d 318 * For example, for a polynomial of degree 7, X^7 + X^6 + X^5 + X^2 + 1 is written 0x65
<> 135:176b8275d35d 319 * @rmtoll POL POL LL_CRC_GetPolynomialCoef
<> 135:176b8275d35d 320 * @param CRCx CRC Instance
<> 135:176b8275d35d 321 * @retval Value programmed in Programmable Polynomial value register
<> 135:176b8275d35d 322 */
<> 135:176b8275d35d 323 __STATIC_INLINE uint32_t LL_CRC_GetPolynomialCoef(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 324 {
<> 135:176b8275d35d 325 return (uint32_t)(READ_REG(CRCx->POL));
<> 135:176b8275d35d 326 }
<> 135:176b8275d35d 327
<> 135:176b8275d35d 328 /**
<> 135:176b8275d35d 329 * @}
<> 135:176b8275d35d 330 */
<> 135:176b8275d35d 331
<> 135:176b8275d35d 332 /** @defgroup CRC_LL_EF_Data_Management Data_Management
<> 135:176b8275d35d 333 * @{
<> 135:176b8275d35d 334 */
<> 135:176b8275d35d 335
<> 135:176b8275d35d 336 /**
<> 135:176b8275d35d 337 * @brief Write given 32-bit data to the CRC calculator
<> 135:176b8275d35d 338 * @rmtoll DR DR LL_CRC_FeedData32
<> 135:176b8275d35d 339 * @param CRCx CRC Instance
<> 135:176b8275d35d 340 * @param InData value to be provided to CRC calculator between between Min_Data=0 and Max_Data=0xFFFFFFFF
<> 135:176b8275d35d 341 * @retval None
<> 135:176b8275d35d 342 */
<> 135:176b8275d35d 343 __STATIC_INLINE void LL_CRC_FeedData32(CRC_TypeDef *CRCx, uint32_t InData)
<> 135:176b8275d35d 344 {
<> 135:176b8275d35d 345 WRITE_REG(CRCx->DR, InData);
<> 135:176b8275d35d 346 }
<> 135:176b8275d35d 347
<> 135:176b8275d35d 348 /**
<> 135:176b8275d35d 349 * @brief Write given 16-bit data to the CRC calculator
<> 135:176b8275d35d 350 * @rmtoll DR DR LL_CRC_FeedData16
<> 135:176b8275d35d 351 * @param CRCx CRC Instance
<> 135:176b8275d35d 352 * @param InData 16 bit value to be provided to CRC calculator between between Min_Data=0 and Max_Data=0xFFFF
<> 135:176b8275d35d 353 * @retval None
<> 135:176b8275d35d 354 */
<> 135:176b8275d35d 355 __STATIC_INLINE void LL_CRC_FeedData16(CRC_TypeDef *CRCx, uint16_t InData)
<> 135:176b8275d35d 356 {
<> 135:176b8275d35d 357 *(uint16_t __IO *)(&CRCx->DR) = (uint16_t) InData;
<> 135:176b8275d35d 358 }
<> 135:176b8275d35d 359
<> 135:176b8275d35d 360 /**
<> 135:176b8275d35d 361 * @brief Write given 8-bit data to the CRC calculator
<> 135:176b8275d35d 362 * @rmtoll DR DR LL_CRC_FeedData8
<> 135:176b8275d35d 363 * @param CRCx CRC Instance
<> 135:176b8275d35d 364 * @param InData 8 bit value to be provided to CRC calculator between between Min_Data=0 and Max_Data=0xFF
<> 135:176b8275d35d 365 * @retval None
<> 135:176b8275d35d 366 */
<> 135:176b8275d35d 367 __STATIC_INLINE void LL_CRC_FeedData8(CRC_TypeDef *CRCx, uint8_t InData)
<> 135:176b8275d35d 368 {
<> 135:176b8275d35d 369 *(uint8_t __IO *)(&CRCx->DR) = (uint8_t) InData;
<> 135:176b8275d35d 370 }
<> 135:176b8275d35d 371
<> 135:176b8275d35d 372 /**
<> 135:176b8275d35d 373 * @brief Return current CRC calculation result. 32 bits value is returned.
<> 135:176b8275d35d 374 * @rmtoll DR DR LL_CRC_ReadData32
<> 135:176b8275d35d 375 * @param CRCx CRC Instance
<> 135:176b8275d35d 376 * @retval Current CRC calculation result as stored in CRC_DR register (32 bits).
<> 135:176b8275d35d 377 */
<> 135:176b8275d35d 378 __STATIC_INLINE uint32_t LL_CRC_ReadData32(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 379 {
<> 135:176b8275d35d 380 return (uint32_t)(READ_REG(CRCx->DR));
<> 135:176b8275d35d 381 }
<> 135:176b8275d35d 382
<> 135:176b8275d35d 383 /**
<> 135:176b8275d35d 384 * @brief Return current CRC calculation result. 16 bits value is returned.
<> 135:176b8275d35d 385 * @note This function is expected to be used in a 16 bits CRC polynomial size context.
<> 135:176b8275d35d 386 * @rmtoll DR DR LL_CRC_ReadData16
<> 135:176b8275d35d 387 * @param CRCx CRC Instance
<> 135:176b8275d35d 388 * @retval Current CRC calculation result as stored in CRC_DR register (16 bits).
<> 135:176b8275d35d 389 */
<> 135:176b8275d35d 390 __STATIC_INLINE uint16_t LL_CRC_ReadData16(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 391 {
<> 135:176b8275d35d 392 return (uint16_t)READ_REG(CRCx->DR);
<> 135:176b8275d35d 393 }
<> 135:176b8275d35d 394
<> 135:176b8275d35d 395 /**
<> 135:176b8275d35d 396 * @brief Return current CRC calculation result. 8 bits value is returned.
<> 135:176b8275d35d 397 * @note This function is expected to be used in a 8 bits CRC polynomial size context.
<> 135:176b8275d35d 398 * @rmtoll DR DR LL_CRC_ReadData8
<> 135:176b8275d35d 399 * @param CRCx CRC Instance
<> 135:176b8275d35d 400 * @retval Current CRC calculation result as stored in CRC_DR register (8 bits).
<> 135:176b8275d35d 401 */
<> 135:176b8275d35d 402 __STATIC_INLINE uint8_t LL_CRC_ReadData8(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 403 {
<> 135:176b8275d35d 404 return (uint8_t)READ_REG(CRCx->DR);
<> 135:176b8275d35d 405 }
<> 135:176b8275d35d 406
<> 135:176b8275d35d 407 /**
<> 135:176b8275d35d 408 * @brief Return current CRC calculation result. 7 bits value is returned.
<> 135:176b8275d35d 409 * @note This function is expected to be used in a 7 bits CRC polynomial size context.
<> 135:176b8275d35d 410 * @rmtoll DR DR LL_CRC_ReadData7
<> 135:176b8275d35d 411 * @param CRCx CRC Instance
<> 135:176b8275d35d 412 * @retval Current CRC calculation result as stored in CRC_DR register (7 bits).
<> 135:176b8275d35d 413 */
<> 135:176b8275d35d 414 __STATIC_INLINE uint8_t LL_CRC_ReadData7(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 415 {
<> 135:176b8275d35d 416 return (uint8_t)(READ_REG(CRCx->DR) & 0x7FU);
<> 135:176b8275d35d 417 }
<> 135:176b8275d35d 418
<> 135:176b8275d35d 419 /**
<> 135:176b8275d35d 420 * @brief Return data stored in the Independent Data(IDR) register.
<> 135:176b8275d35d 421 * @note This register can be used as a temporary storage location for one byte.
<> 135:176b8275d35d 422 * @rmtoll IDR IDR LL_CRC_Read_IDR
<> 135:176b8275d35d 423 * @param CRCx CRC Instance
<> 135:176b8275d35d 424 * @retval Value stored in CRC_IDR register (General-purpose 8-bit data register).
<> 135:176b8275d35d 425 */
<> 135:176b8275d35d 426 __STATIC_INLINE uint32_t LL_CRC_Read_IDR(CRC_TypeDef *CRCx)
<> 135:176b8275d35d 427 {
<> 135:176b8275d35d 428 return (uint32_t)(READ_REG(CRCx->IDR));
<> 135:176b8275d35d 429 }
<> 135:176b8275d35d 430
<> 135:176b8275d35d 431 /**
<> 135:176b8275d35d 432 * @brief Store data in the Independent Data(IDR) register.
<> 135:176b8275d35d 433 * @note This register can be used as a temporary storage location for one byte.
<> 135:176b8275d35d 434 * @rmtoll IDR IDR LL_CRC_Write_IDR
<> 135:176b8275d35d 435 * @param CRCx CRC Instance
<> 135:176b8275d35d 436 * @param InData value to be stored in CRC_IDR register (8-bit) between between Min_Data=0 and Max_Data=0xFF
<> 135:176b8275d35d 437 * @retval None
<> 135:176b8275d35d 438 */
<> 135:176b8275d35d 439 __STATIC_INLINE void LL_CRC_Write_IDR(CRC_TypeDef *CRCx, uint32_t InData)
<> 135:176b8275d35d 440 {
<> 135:176b8275d35d 441 *((uint8_t __IO *)(&CRCx->IDR)) = (uint8_t) InData;
<> 135:176b8275d35d 442 }
<> 135:176b8275d35d 443 /**
<> 135:176b8275d35d 444 * @}
<> 135:176b8275d35d 445 */
<> 135:176b8275d35d 446
<> 135:176b8275d35d 447 #if defined(USE_FULL_LL_DRIVER)
<> 135:176b8275d35d 448 /** @defgroup CRC_LL_EF_Init Initialization and de-initialization functions
<> 135:176b8275d35d 449 * @{
<> 135:176b8275d35d 450 */
<> 135:176b8275d35d 451
<> 135:176b8275d35d 452 ErrorStatus LL_CRC_DeInit(CRC_TypeDef *CRCx);
<> 135:176b8275d35d 453
<> 135:176b8275d35d 454 /**
<> 135:176b8275d35d 455 * @}
<> 135:176b8275d35d 456 */
<> 135:176b8275d35d 457 #endif /* USE_FULL_LL_DRIVER */
<> 135:176b8275d35d 458
<> 135:176b8275d35d 459 /**
<> 135:176b8275d35d 460 * @}
<> 135:176b8275d35d 461 */
<> 135:176b8275d35d 462
<> 135:176b8275d35d 463 /**
<> 135:176b8275d35d 464 * @}
<> 135:176b8275d35d 465 */
<> 135:176b8275d35d 466
<> 135:176b8275d35d 467 #endif /* defined(CRC) */
<> 135:176b8275d35d 468
<> 135:176b8275d35d 469 /**
<> 135:176b8275d35d 470 * @}
<> 135:176b8275d35d 471 */
<> 135:176b8275d35d 472
<> 135:176b8275d35d 473 #ifdef __cplusplus
<> 135:176b8275d35d 474 }
<> 135:176b8275d35d 475 #endif
<> 135:176b8275d35d 476
<> 135:176b8275d35d 477 #endif /* __STM32F3xx_LL_CRC_H */
<> 135:176b8275d35d 478
<> 135:176b8275d35d 479 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/