TUKS MCU Introductory course / TUKS-COURSE-TIMER
Committer:
elmot
Date:
Fri Feb 24 21:13:56 2017 +0000
Revision:
1:d0dfbce63a89
Ready-to-copy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
elmot 1:d0dfbce63a89 1 /**
elmot 1:d0dfbce63a89 2 ******************************************************************************
elmot 1:d0dfbce63a89 3 * @file stm32l4xx_ll_crs.h
elmot 1:d0dfbce63a89 4 * @author MCD Application Team
elmot 1:d0dfbce63a89 5 * @version V1.5.1
elmot 1:d0dfbce63a89 6 * @date 31-May-2016
elmot 1:d0dfbce63a89 7 * @brief Header file of CRS LL module.
elmot 1:d0dfbce63a89 8 ******************************************************************************
elmot 1:d0dfbce63a89 9 * @attention
elmot 1:d0dfbce63a89 10 *
elmot 1:d0dfbce63a89 11 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
elmot 1:d0dfbce63a89 12 *
elmot 1:d0dfbce63a89 13 * Redistribution and use in source and binary forms, with or without modification,
elmot 1:d0dfbce63a89 14 * are permitted provided that the following conditions are met:
elmot 1:d0dfbce63a89 15 * 1. Redistributions of source code must retain the above copyright notice,
elmot 1:d0dfbce63a89 16 * this list of conditions and the following disclaimer.
elmot 1:d0dfbce63a89 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
elmot 1:d0dfbce63a89 18 * this list of conditions and the following disclaimer in the documentation
elmot 1:d0dfbce63a89 19 * and/or other materials provided with the distribution.
elmot 1:d0dfbce63a89 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
elmot 1:d0dfbce63a89 21 * may be used to endorse or promote products derived from this software
elmot 1:d0dfbce63a89 22 * without specific prior written permission.
elmot 1:d0dfbce63a89 23 *
elmot 1:d0dfbce63a89 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
elmot 1:d0dfbce63a89 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
elmot 1:d0dfbce63a89 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
elmot 1:d0dfbce63a89 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
elmot 1:d0dfbce63a89 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
elmot 1:d0dfbce63a89 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
elmot 1:d0dfbce63a89 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
elmot 1:d0dfbce63a89 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
elmot 1:d0dfbce63a89 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
elmot 1:d0dfbce63a89 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
elmot 1:d0dfbce63a89 34 *
elmot 1:d0dfbce63a89 35 ******************************************************************************
elmot 1:d0dfbce63a89 36 */
elmot 1:d0dfbce63a89 37
elmot 1:d0dfbce63a89 38 /* Define to prevent recursive inclusion -------------------------------------*/
elmot 1:d0dfbce63a89 39 #ifndef __STM32L4xx_LL_CRS_H
elmot 1:d0dfbce63a89 40 #define __STM32L4xx_LL_CRS_H
elmot 1:d0dfbce63a89 41
elmot 1:d0dfbce63a89 42 #ifdef __cplusplus
elmot 1:d0dfbce63a89 43 extern "C" {
elmot 1:d0dfbce63a89 44 #endif
elmot 1:d0dfbce63a89 45
elmot 1:d0dfbce63a89 46 /* Includes ------------------------------------------------------------------*/
elmot 1:d0dfbce63a89 47 #include "stm32l4xx.h"
elmot 1:d0dfbce63a89 48
elmot 1:d0dfbce63a89 49 /** @addtogroup STM32L4xx_LL_Driver
elmot 1:d0dfbce63a89 50 * @{
elmot 1:d0dfbce63a89 51 */
elmot 1:d0dfbce63a89 52
elmot 1:d0dfbce63a89 53 #if defined(CRS)
elmot 1:d0dfbce63a89 54
elmot 1:d0dfbce63a89 55 /** @defgroup CRS_LL CRS
elmot 1:d0dfbce63a89 56 * @{
elmot 1:d0dfbce63a89 57 */
elmot 1:d0dfbce63a89 58
elmot 1:d0dfbce63a89 59 /* Private types -------------------------------------------------------------*/
elmot 1:d0dfbce63a89 60 /* Private variables ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 61
elmot 1:d0dfbce63a89 62 /* Private constants ---------------------------------------------------------*/
elmot 1:d0dfbce63a89 63 /** @defgroup CRS_LL_Private_Constants CRS Private Constants
elmot 1:d0dfbce63a89 64 * @{
elmot 1:d0dfbce63a89 65 */
elmot 1:d0dfbce63a89 66
elmot 1:d0dfbce63a89 67 /* Defines used for the bit position in the register and perform offsets*/
elmot 1:d0dfbce63a89 68 #define CRS_POSITION_TRIM (uint32_t)POSITION_VAL(CRS_CR_TRIM) /* bit position in CR reg */
elmot 1:d0dfbce63a89 69 #define CRS_POSITION_FECAP (uint32_t)POSITION_VAL(CRS_ISR_FECAP) /* bit position in ISR reg */
elmot 1:d0dfbce63a89 70 #define CRS_POSITION_FELIM (uint32_t)POSITION_VAL(CRS_CFGR_FELIM) /* bit position in CFGR reg */
elmot 1:d0dfbce63a89 71
elmot 1:d0dfbce63a89 72
elmot 1:d0dfbce63a89 73 /**
elmot 1:d0dfbce63a89 74 * @}
elmot 1:d0dfbce63a89 75 */
elmot 1:d0dfbce63a89 76
elmot 1:d0dfbce63a89 77 /* Private macros ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 78
elmot 1:d0dfbce63a89 79 /* Exported types ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 80 /* Exported constants --------------------------------------------------------*/
elmot 1:d0dfbce63a89 81 /** @defgroup CRS_LL_Exported_Constants CRS Exported Constants
elmot 1:d0dfbce63a89 82 * @{
elmot 1:d0dfbce63a89 83 */
elmot 1:d0dfbce63a89 84
elmot 1:d0dfbce63a89 85 /** @defgroup CRS_LL_EC_GET_FLAG Get Flags Defines
elmot 1:d0dfbce63a89 86 * @brief Flags defines which can be used with LL_CRS_ReadReg function
elmot 1:d0dfbce63a89 87 * @{
elmot 1:d0dfbce63a89 88 */
elmot 1:d0dfbce63a89 89 #define LL_CRS_ISR_SYNCOKF CRS_ISR_SYNCOKF
elmot 1:d0dfbce63a89 90 #define LL_CRS_ISR_SYNCWARNF CRS_ISR_SYNCWARNF
elmot 1:d0dfbce63a89 91 #define LL_CRS_ISR_ERRF CRS_ISR_ERRF
elmot 1:d0dfbce63a89 92 #define LL_CRS_ISR_ESYNCF CRS_ISR_ESYNCF
elmot 1:d0dfbce63a89 93 #define LL_CRS_ISR_SYNCERR CRS_ISR_SYNCERR
elmot 1:d0dfbce63a89 94 #define LL_CRS_ISR_SYNCMISS CRS_ISR_SYNCMISS
elmot 1:d0dfbce63a89 95 #define LL_CRS_ISR_TRIMOVF CRS_ISR_TRIMOVF
elmot 1:d0dfbce63a89 96 /**
elmot 1:d0dfbce63a89 97 * @}
elmot 1:d0dfbce63a89 98 */
elmot 1:d0dfbce63a89 99
elmot 1:d0dfbce63a89 100 /** @defgroup CRS_LL_EC_IT IT Defines
elmot 1:d0dfbce63a89 101 * @brief IT defines which can be used with LL_CRS_ReadReg and LL_CRS_WriteReg functions
elmot 1:d0dfbce63a89 102 * @{
elmot 1:d0dfbce63a89 103 */
elmot 1:d0dfbce63a89 104 #define LL_CRS_CR_SYNCOKIE CRS_CR_SYNCOKIE
elmot 1:d0dfbce63a89 105 #define LL_CRS_CR_SYNCWARNIE CRS_CR_SYNCWARNIE
elmot 1:d0dfbce63a89 106 #define LL_CRS_CR_ERRIE CRS_CR_ERRIE
elmot 1:d0dfbce63a89 107 #define LL_CRS_CR_ESYNCIE CRS_CR_ESYNCIE
elmot 1:d0dfbce63a89 108 /**
elmot 1:d0dfbce63a89 109 * @}
elmot 1:d0dfbce63a89 110 */
elmot 1:d0dfbce63a89 111
elmot 1:d0dfbce63a89 112 /** @defgroup CRS_LL_EC_SYNC_DIV Synchronization Signal Divider
elmot 1:d0dfbce63a89 113 * @{
elmot 1:d0dfbce63a89 114 */
elmot 1:d0dfbce63a89 115 #define LL_CRS_SYNC_DIV_1 ((uint32_t)0x00U) /*!< Synchro Signal not divided (default) */
elmot 1:d0dfbce63a89 116 #define LL_CRS_SYNC_DIV_2 CRS_CFGR_SYNCDIV_0 /*!< Synchro Signal divided by 2 */
elmot 1:d0dfbce63a89 117 #define LL_CRS_SYNC_DIV_4 CRS_CFGR_SYNCDIV_1 /*!< Synchro Signal divided by 4 */
elmot 1:d0dfbce63a89 118 #define LL_CRS_SYNC_DIV_8 (CRS_CFGR_SYNCDIV_1 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 8 */
elmot 1:d0dfbce63a89 119 #define LL_CRS_SYNC_DIV_16 CRS_CFGR_SYNCDIV_2 /*!< Synchro Signal divided by 16 */
elmot 1:d0dfbce63a89 120 #define LL_CRS_SYNC_DIV_32 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_0) /*!< Synchro Signal divided by 32 */
elmot 1:d0dfbce63a89 121 #define LL_CRS_SYNC_DIV_64 (CRS_CFGR_SYNCDIV_2 | CRS_CFGR_SYNCDIV_1) /*!< Synchro Signal divided by 64 */
elmot 1:d0dfbce63a89 122 #define LL_CRS_SYNC_DIV_128 CRS_CFGR_SYNCDIV /*!< Synchro Signal divided by 128 */
elmot 1:d0dfbce63a89 123 /**
elmot 1:d0dfbce63a89 124 * @}
elmot 1:d0dfbce63a89 125 */
elmot 1:d0dfbce63a89 126
elmot 1:d0dfbce63a89 127 /** @defgroup CRS_LL_EC_SYNC_SOURCE Synchronization Signal Source
elmot 1:d0dfbce63a89 128 * @{
elmot 1:d0dfbce63a89 129 */
elmot 1:d0dfbce63a89 130 #define LL_CRS_SYNC_SOURCE_GPIO ((uint32_t)0x00U) /*!< Synchro Signal soucre GPIO */
elmot 1:d0dfbce63a89 131 #define LL_CRS_SYNC_SOURCE_LSE CRS_CFGR_SYNCSRC_0 /*!< Synchro Signal source LSE */
elmot 1:d0dfbce63a89 132 #define LL_CRS_SYNC_SOURCE_USB CRS_CFGR_SYNCSRC_1 /*!< Synchro Signal source USB SOF (default)*/
elmot 1:d0dfbce63a89 133 /**
elmot 1:d0dfbce63a89 134 * @}
elmot 1:d0dfbce63a89 135 */
elmot 1:d0dfbce63a89 136
elmot 1:d0dfbce63a89 137 /** @defgroup CRS_LL_EC_SYNC_POLARITY Synchronization Signal Polarity
elmot 1:d0dfbce63a89 138 * @{
elmot 1:d0dfbce63a89 139 */
elmot 1:d0dfbce63a89 140 #define LL_CRS_SYNC_POLARITY_RISING ((uint32_t)0x00U) /*!< Synchro Active on rising edge (default) */
elmot 1:d0dfbce63a89 141 #define LL_CRS_SYNC_POLARITY_FALLING CRS_CFGR_SYNCPOL /*!< Synchro Active on falling edge */
elmot 1:d0dfbce63a89 142 /**
elmot 1:d0dfbce63a89 143 * @}
elmot 1:d0dfbce63a89 144 */
elmot 1:d0dfbce63a89 145
elmot 1:d0dfbce63a89 146 /** @defgroup CRS_LL_EC_FREQERRORDIR Frequency Error Direction
elmot 1:d0dfbce63a89 147 * @{
elmot 1:d0dfbce63a89 148 */
elmot 1:d0dfbce63a89 149 #define LL_CRS_FREQ_ERROR_DIR_UP ((uint32_t)0x00U) /*!< Upcounting direction, the actual frequency is above the target */
elmot 1:d0dfbce63a89 150 #define LL_CRS_FREQ_ERROR_DIR_DOWN ((uint32_t)CRS_ISR_FEDIR) /*!< Downcounting direction, the actual frequency is below the target */
elmot 1:d0dfbce63a89 151 /**
elmot 1:d0dfbce63a89 152 * @}
elmot 1:d0dfbce63a89 153 */
elmot 1:d0dfbce63a89 154
elmot 1:d0dfbce63a89 155 /** @defgroup CRS_LL_EC_DEFAULTVALUES Default Values
elmot 1:d0dfbce63a89 156 * @{
elmot 1:d0dfbce63a89 157 */
elmot 1:d0dfbce63a89 158 /**
elmot 1:d0dfbce63a89 159 * @brief Reset value of the RELOAD field
elmot 1:d0dfbce63a89 160 * @note The reset value of the RELOAD field corresponds to a target frequency of 48 MHz
elmot 1:d0dfbce63a89 161 * and a synchronization signal frequency of 1 kHz (SOF signal from USB)
elmot 1:d0dfbce63a89 162 */
elmot 1:d0dfbce63a89 163 #define LL_CRS_RELOADVALUE_DEFAULT ((uint32_t)0xBB7FU)
elmot 1:d0dfbce63a89 164
elmot 1:d0dfbce63a89 165 /**
elmot 1:d0dfbce63a89 166 * @brief Reset value of Frequency error limit.
elmot 1:d0dfbce63a89 167 */
elmot 1:d0dfbce63a89 168 #define LL_CRS_ERRORLIMIT_DEFAULT ((uint32_t)0x22U)
elmot 1:d0dfbce63a89 169
elmot 1:d0dfbce63a89 170 /**
elmot 1:d0dfbce63a89 171 * @brief Reset value of the HSI48 Calibration field
elmot 1:d0dfbce63a89 172 * @note The default value is 32, which corresponds to the middle of the trimming interval.
elmot 1:d0dfbce63a89 173 * The trimming step is around 67 kHz between two consecutive TRIM steps.
elmot 1:d0dfbce63a89 174 * A higher TRIM value corresponds to a higher output frequency
elmot 1:d0dfbce63a89 175 */
elmot 1:d0dfbce63a89 176 #define LL_CRS_HSI48CALIBRATION_DEFAULT ((uint32_t)0x20U)
elmot 1:d0dfbce63a89 177 /**
elmot 1:d0dfbce63a89 178 * @}
elmot 1:d0dfbce63a89 179 */
elmot 1:d0dfbce63a89 180
elmot 1:d0dfbce63a89 181 /**
elmot 1:d0dfbce63a89 182 * @}
elmot 1:d0dfbce63a89 183 */
elmot 1:d0dfbce63a89 184
elmot 1:d0dfbce63a89 185 /* Exported macro ------------------------------------------------------------*/
elmot 1:d0dfbce63a89 186 /** @defgroup CRS_LL_Exported_Macros CRS Exported Macros
elmot 1:d0dfbce63a89 187 * @{
elmot 1:d0dfbce63a89 188 */
elmot 1:d0dfbce63a89 189
elmot 1:d0dfbce63a89 190 /** @defgroup CRS_LL_EM_WRITE_READ Common Write and read registers Macros
elmot 1:d0dfbce63a89 191 * @{
elmot 1:d0dfbce63a89 192 */
elmot 1:d0dfbce63a89 193
elmot 1:d0dfbce63a89 194 /**
elmot 1:d0dfbce63a89 195 * @brief Write a value in CRS register
elmot 1:d0dfbce63a89 196 * @param __INSTANCE__ CRS Instance
elmot 1:d0dfbce63a89 197 * @param __REG__ Register to be written
elmot 1:d0dfbce63a89 198 * @param __VALUE__ Value to be written in the register
elmot 1:d0dfbce63a89 199 * @retval None
elmot 1:d0dfbce63a89 200 */
elmot 1:d0dfbce63a89 201 #define LL_CRS_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
elmot 1:d0dfbce63a89 202
elmot 1:d0dfbce63a89 203 /**
elmot 1:d0dfbce63a89 204 * @brief Read a value in CRS register
elmot 1:d0dfbce63a89 205 * @param __INSTANCE__ CRS Instance
elmot 1:d0dfbce63a89 206 * @param __REG__ Register to be read
elmot 1:d0dfbce63a89 207 * @retval Register value
elmot 1:d0dfbce63a89 208 */
elmot 1:d0dfbce63a89 209 #define LL_CRS_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
elmot 1:d0dfbce63a89 210 /**
elmot 1:d0dfbce63a89 211 * @}
elmot 1:d0dfbce63a89 212 */
elmot 1:d0dfbce63a89 213
elmot 1:d0dfbce63a89 214 /** @defgroup CRS_LL_EM_Exported_Macros_Calculate_Reload Exported_Macros_Calculate_Reload
elmot 1:d0dfbce63a89 215 * @{
elmot 1:d0dfbce63a89 216 */
elmot 1:d0dfbce63a89 217
elmot 1:d0dfbce63a89 218 /**
elmot 1:d0dfbce63a89 219 * @brief Macro to calculate reload value to be set in CRS register according to target and sync frequencies
elmot 1:d0dfbce63a89 220 * @note The RELOAD value should be selected according to the ratio between
elmot 1:d0dfbce63a89 221 * the target frequency and the frequency of the synchronization source after
elmot 1:d0dfbce63a89 222 * prescaling. It is then decreased by one in order to reach the expected
elmot 1:d0dfbce63a89 223 * synchronization on the zero value. The formula is the following:
elmot 1:d0dfbce63a89 224 * RELOAD = (fTARGET / fSYNC) -1
elmot 1:d0dfbce63a89 225 * @param __FTARGET__ Target frequency (value in Hz)
elmot 1:d0dfbce63a89 226 * @param __FSYNC__ Synchronization signal frequency (value in Hz)
elmot 1:d0dfbce63a89 227 * @retval Reload value (in Hz)
elmot 1:d0dfbce63a89 228 */
elmot 1:d0dfbce63a89 229 #define __LL_CRS_CALC_CALCULATE_RELOADVALUE(__FTARGET__, __FSYNC__) (((__FTARGET__) / (__FSYNC__)) - 1U)
elmot 1:d0dfbce63a89 230
elmot 1:d0dfbce63a89 231 /**
elmot 1:d0dfbce63a89 232 * @}
elmot 1:d0dfbce63a89 233 */
elmot 1:d0dfbce63a89 234
elmot 1:d0dfbce63a89 235 /**
elmot 1:d0dfbce63a89 236 * @}
elmot 1:d0dfbce63a89 237 */
elmot 1:d0dfbce63a89 238
elmot 1:d0dfbce63a89 239 /* Exported functions --------------------------------------------------------*/
elmot 1:d0dfbce63a89 240 /** @defgroup CRS_LL_Exported_Functions CRS Exported Functions
elmot 1:d0dfbce63a89 241 * @{
elmot 1:d0dfbce63a89 242 */
elmot 1:d0dfbce63a89 243
elmot 1:d0dfbce63a89 244 /** @defgroup CRS_LL_EF_Configuration Configuration
elmot 1:d0dfbce63a89 245 * @{
elmot 1:d0dfbce63a89 246 */
elmot 1:d0dfbce63a89 247
elmot 1:d0dfbce63a89 248 /**
elmot 1:d0dfbce63a89 249 * @brief Enable Frequency error counter
elmot 1:d0dfbce63a89 250 * @note When this bit is set, the CRS_CFGR register is write-protected and cannot be modified
elmot 1:d0dfbce63a89 251 * @rmtoll CR CEN LL_CRS_EnableFreqErrorCounter
elmot 1:d0dfbce63a89 252 * @retval None
elmot 1:d0dfbce63a89 253 */
elmot 1:d0dfbce63a89 254 __STATIC_INLINE void LL_CRS_EnableFreqErrorCounter(void)
elmot 1:d0dfbce63a89 255 {
elmot 1:d0dfbce63a89 256 SET_BIT(CRS->CR, CRS_CR_CEN);
elmot 1:d0dfbce63a89 257 }
elmot 1:d0dfbce63a89 258
elmot 1:d0dfbce63a89 259 /**
elmot 1:d0dfbce63a89 260 * @brief Disable Frequency error counter
elmot 1:d0dfbce63a89 261 * @rmtoll CR CEN LL_CRS_DisableFreqErrorCounter
elmot 1:d0dfbce63a89 262 * @retval None
elmot 1:d0dfbce63a89 263 */
elmot 1:d0dfbce63a89 264 __STATIC_INLINE void LL_CRS_DisableFreqErrorCounter(void)
elmot 1:d0dfbce63a89 265 {
elmot 1:d0dfbce63a89 266 CLEAR_BIT(CRS->CR, CRS_CR_CEN);
elmot 1:d0dfbce63a89 267 }
elmot 1:d0dfbce63a89 268
elmot 1:d0dfbce63a89 269 /**
elmot 1:d0dfbce63a89 270 * @brief Check if Frequency error counter is enabled or not
elmot 1:d0dfbce63a89 271 * @rmtoll CR CEN LL_CRS_IsEnabledFreqErrorCounter
elmot 1:d0dfbce63a89 272 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 273 */
elmot 1:d0dfbce63a89 274 __STATIC_INLINE uint32_t LL_CRS_IsEnabledFreqErrorCounter(void)
elmot 1:d0dfbce63a89 275 {
elmot 1:d0dfbce63a89 276 return (READ_BIT(CRS->CR, CRS_CR_CEN) == (CRS_CR_CEN));
elmot 1:d0dfbce63a89 277 }
elmot 1:d0dfbce63a89 278
elmot 1:d0dfbce63a89 279 /**
elmot 1:d0dfbce63a89 280 * @brief Enable Automatic trimming counter
elmot 1:d0dfbce63a89 281 * @rmtoll CR AUTOTRIMEN LL_CRS_EnableAutoTrimming
elmot 1:d0dfbce63a89 282 * @retval None
elmot 1:d0dfbce63a89 283 */
elmot 1:d0dfbce63a89 284 __STATIC_INLINE void LL_CRS_EnableAutoTrimming(void)
elmot 1:d0dfbce63a89 285 {
elmot 1:d0dfbce63a89 286 SET_BIT(CRS->CR, CRS_CR_AUTOTRIMEN);
elmot 1:d0dfbce63a89 287 }
elmot 1:d0dfbce63a89 288
elmot 1:d0dfbce63a89 289 /**
elmot 1:d0dfbce63a89 290 * @brief Disable Automatic trimming counter
elmot 1:d0dfbce63a89 291 * @rmtoll CR AUTOTRIMEN LL_CRS_DisableAutoTrimming
elmot 1:d0dfbce63a89 292 * @retval None
elmot 1:d0dfbce63a89 293 */
elmot 1:d0dfbce63a89 294 __STATIC_INLINE void LL_CRS_DisableAutoTrimming(void)
elmot 1:d0dfbce63a89 295 {
elmot 1:d0dfbce63a89 296 CLEAR_BIT(CRS->CR, CRS_CR_AUTOTRIMEN);
elmot 1:d0dfbce63a89 297 }
elmot 1:d0dfbce63a89 298
elmot 1:d0dfbce63a89 299 /**
elmot 1:d0dfbce63a89 300 * @brief Check if Automatic trimming is enabled or not
elmot 1:d0dfbce63a89 301 * @rmtoll CR AUTOTRIMEN LL_CRS_IsEnabledAutoTrimming
elmot 1:d0dfbce63a89 302 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 303 */
elmot 1:d0dfbce63a89 304 __STATIC_INLINE uint32_t LL_CRS_IsEnabledAutoTrimming(void)
elmot 1:d0dfbce63a89 305 {
elmot 1:d0dfbce63a89 306 return (READ_BIT(CRS->CR, CRS_CR_AUTOTRIMEN) == (CRS_CR_AUTOTRIMEN));
elmot 1:d0dfbce63a89 307 }
elmot 1:d0dfbce63a89 308
elmot 1:d0dfbce63a89 309 /**
elmot 1:d0dfbce63a89 310 * @brief Set HSI48 oscillator smooth trimming
elmot 1:d0dfbce63a89 311 * @note When the AUTOTRIMEN bit is set, this field is controlled by hardware and is read-only
elmot 1:d0dfbce63a89 312 * @rmtoll CR TRIM LL_CRS_SetHSI48SmoothTrimming
elmot 1:d0dfbce63a89 313 * @param Value a number between Min_Data = 0 and Max_Data = 63
elmot 1:d0dfbce63a89 314 * @note Default value can be set thanks to @ref LL_CRS_HSI48CALIBRATION_DEFAULT
elmot 1:d0dfbce63a89 315 * @retval None
elmot 1:d0dfbce63a89 316 */
elmot 1:d0dfbce63a89 317 __STATIC_INLINE void LL_CRS_SetHSI48SmoothTrimming(uint32_t Value)
elmot 1:d0dfbce63a89 318 {
elmot 1:d0dfbce63a89 319 MODIFY_REG(CRS->CR, CRS_CR_TRIM, Value << CRS_POSITION_TRIM);
elmot 1:d0dfbce63a89 320 }
elmot 1:d0dfbce63a89 321
elmot 1:d0dfbce63a89 322 /**
elmot 1:d0dfbce63a89 323 * @brief Get HSI48 oscillator smooth trimming
elmot 1:d0dfbce63a89 324 * @rmtoll CR TRIM LL_CRS_GetHSI48SmoothTrimming
elmot 1:d0dfbce63a89 325 * @retval a number between Min_Data = 0 and Max_Data = 63
elmot 1:d0dfbce63a89 326 */
elmot 1:d0dfbce63a89 327 __STATIC_INLINE uint32_t LL_CRS_GetHSI48SmoothTrimming(void)
elmot 1:d0dfbce63a89 328 {
elmot 1:d0dfbce63a89 329 return (uint32_t)(READ_BIT(CRS->CR, CRS_CR_TRIM) >> CRS_POSITION_TRIM);
elmot 1:d0dfbce63a89 330 }
elmot 1:d0dfbce63a89 331
elmot 1:d0dfbce63a89 332 /**
elmot 1:d0dfbce63a89 333 * @brief Set counter reload value
elmot 1:d0dfbce63a89 334 * @rmtoll CFGR RELOAD LL_CRS_SetReloadCounter
elmot 1:d0dfbce63a89 335 * @param Value a number between Min_Data = 0 and Max_Data = 0xFFFF
elmot 1:d0dfbce63a89 336 * @note Default value can be set thanks to @ref LL_CRS_RELOADVALUE_DEFAULT
elmot 1:d0dfbce63a89 337 * Otherwise it can be calculated in using macro @ref __LL_CRS_CALC_CALCULATE_RELOADVALUE (_FTARGET_, _FSYNC_)
elmot 1:d0dfbce63a89 338 * @retval None
elmot 1:d0dfbce63a89 339 */
elmot 1:d0dfbce63a89 340 __STATIC_INLINE void LL_CRS_SetReloadCounter(uint32_t Value)
elmot 1:d0dfbce63a89 341 {
elmot 1:d0dfbce63a89 342 MODIFY_REG(CRS->CFGR, CRS_CFGR_RELOAD, Value);
elmot 1:d0dfbce63a89 343 }
elmot 1:d0dfbce63a89 344
elmot 1:d0dfbce63a89 345 /**
elmot 1:d0dfbce63a89 346 * @brief Get counter reload value
elmot 1:d0dfbce63a89 347 * @rmtoll CFGR RELOAD LL_CRS_GetReloadCounter
elmot 1:d0dfbce63a89 348 * @retval a number between Min_Data = 0 and Max_Data = 0xFFFF
elmot 1:d0dfbce63a89 349 */
elmot 1:d0dfbce63a89 350 __STATIC_INLINE uint32_t LL_CRS_GetReloadCounter(void)
elmot 1:d0dfbce63a89 351 {
elmot 1:d0dfbce63a89 352 return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_RELOAD));
elmot 1:d0dfbce63a89 353 }
elmot 1:d0dfbce63a89 354
elmot 1:d0dfbce63a89 355 /**
elmot 1:d0dfbce63a89 356 * @brief Set frequency error limit
elmot 1:d0dfbce63a89 357 * @rmtoll CFGR FELIM LL_CRS_SetFreqErrorLimit
elmot 1:d0dfbce63a89 358 * @param Value a number between Min_Data = 0 and Max_Data = 255
elmot 1:d0dfbce63a89 359 * @note Default value can be set thanks to @ref LL_CRS_ERRORLIMIT_DEFAULT
elmot 1:d0dfbce63a89 360 * @retval None
elmot 1:d0dfbce63a89 361 */
elmot 1:d0dfbce63a89 362 __STATIC_INLINE void LL_CRS_SetFreqErrorLimit(uint32_t Value)
elmot 1:d0dfbce63a89 363 {
elmot 1:d0dfbce63a89 364 MODIFY_REG(CRS->CFGR, CRS_CFGR_FELIM, Value << CRS_POSITION_FELIM);
elmot 1:d0dfbce63a89 365 }
elmot 1:d0dfbce63a89 366
elmot 1:d0dfbce63a89 367 /**
elmot 1:d0dfbce63a89 368 * @brief Get frequency error limit
elmot 1:d0dfbce63a89 369 * @rmtoll CFGR FELIM LL_CRS_GetFreqErrorLimit
elmot 1:d0dfbce63a89 370 * @retval A number between Min_Data = 0 and Max_Data = 255
elmot 1:d0dfbce63a89 371 */
elmot 1:d0dfbce63a89 372 __STATIC_INLINE uint32_t LL_CRS_GetFreqErrorLimit(void)
elmot 1:d0dfbce63a89 373 {
elmot 1:d0dfbce63a89 374 return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_FELIM) >> CRS_POSITION_FELIM);
elmot 1:d0dfbce63a89 375 }
elmot 1:d0dfbce63a89 376
elmot 1:d0dfbce63a89 377 /**
elmot 1:d0dfbce63a89 378 * @brief Set division factor for SYNC signal
elmot 1:d0dfbce63a89 379 * @rmtoll CFGR SYNCDIV LL_CRS_SetSyncDivider
elmot 1:d0dfbce63a89 380 * @param Divider This parameter can be one of the following values:
elmot 1:d0dfbce63a89 381 * @arg @ref LL_CRS_SYNC_DIV_1
elmot 1:d0dfbce63a89 382 * @arg @ref LL_CRS_SYNC_DIV_2
elmot 1:d0dfbce63a89 383 * @arg @ref LL_CRS_SYNC_DIV_4
elmot 1:d0dfbce63a89 384 * @arg @ref LL_CRS_SYNC_DIV_8
elmot 1:d0dfbce63a89 385 * @arg @ref LL_CRS_SYNC_DIV_16
elmot 1:d0dfbce63a89 386 * @arg @ref LL_CRS_SYNC_DIV_32
elmot 1:d0dfbce63a89 387 * @arg @ref LL_CRS_SYNC_DIV_64
elmot 1:d0dfbce63a89 388 * @arg @ref LL_CRS_SYNC_DIV_128
elmot 1:d0dfbce63a89 389 * @retval None
elmot 1:d0dfbce63a89 390 */
elmot 1:d0dfbce63a89 391 __STATIC_INLINE void LL_CRS_SetSyncDivider(uint32_t Divider)
elmot 1:d0dfbce63a89 392 {
elmot 1:d0dfbce63a89 393 MODIFY_REG(CRS->CFGR, CRS_CFGR_SYNCDIV, Divider);
elmot 1:d0dfbce63a89 394 }
elmot 1:d0dfbce63a89 395
elmot 1:d0dfbce63a89 396 /**
elmot 1:d0dfbce63a89 397 * @brief Get division factor for SYNC signal
elmot 1:d0dfbce63a89 398 * @rmtoll CFGR SYNCDIV LL_CRS_GetSyncDivider
elmot 1:d0dfbce63a89 399 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 400 * @arg @ref LL_CRS_SYNC_DIV_1
elmot 1:d0dfbce63a89 401 * @arg @ref LL_CRS_SYNC_DIV_2
elmot 1:d0dfbce63a89 402 * @arg @ref LL_CRS_SYNC_DIV_4
elmot 1:d0dfbce63a89 403 * @arg @ref LL_CRS_SYNC_DIV_8
elmot 1:d0dfbce63a89 404 * @arg @ref LL_CRS_SYNC_DIV_16
elmot 1:d0dfbce63a89 405 * @arg @ref LL_CRS_SYNC_DIV_32
elmot 1:d0dfbce63a89 406 * @arg @ref LL_CRS_SYNC_DIV_64
elmot 1:d0dfbce63a89 407 * @arg @ref LL_CRS_SYNC_DIV_128
elmot 1:d0dfbce63a89 408 */
elmot 1:d0dfbce63a89 409 __STATIC_INLINE uint32_t LL_CRS_GetSyncDivider(void)
elmot 1:d0dfbce63a89 410 {
elmot 1:d0dfbce63a89 411 return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_SYNCDIV));
elmot 1:d0dfbce63a89 412 }
elmot 1:d0dfbce63a89 413
elmot 1:d0dfbce63a89 414 /**
elmot 1:d0dfbce63a89 415 * @brief Set SYNC signal source
elmot 1:d0dfbce63a89 416 * @rmtoll CFGR SYNCSRC LL_CRS_SetSyncSignalSource
elmot 1:d0dfbce63a89 417 * @param Source This parameter can be one of the following values:
elmot 1:d0dfbce63a89 418 * @arg @ref LL_CRS_SYNC_SOURCE_GPIO
elmot 1:d0dfbce63a89 419 * @arg @ref LL_CRS_SYNC_SOURCE_LSE
elmot 1:d0dfbce63a89 420 * @arg @ref LL_CRS_SYNC_SOURCE_USB
elmot 1:d0dfbce63a89 421 * @retval None
elmot 1:d0dfbce63a89 422 */
elmot 1:d0dfbce63a89 423 __STATIC_INLINE void LL_CRS_SetSyncSignalSource(uint32_t Source)
elmot 1:d0dfbce63a89 424 {
elmot 1:d0dfbce63a89 425 MODIFY_REG(CRS->CFGR, CRS_CFGR_SYNCSRC, Source);
elmot 1:d0dfbce63a89 426 }
elmot 1:d0dfbce63a89 427
elmot 1:d0dfbce63a89 428 /**
elmot 1:d0dfbce63a89 429 * @brief Get SYNC signal source
elmot 1:d0dfbce63a89 430 * @rmtoll CFGR SYNCSRC LL_CRS_GetSyncSignalSource
elmot 1:d0dfbce63a89 431 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 432 * @arg @ref LL_CRS_SYNC_SOURCE_GPIO
elmot 1:d0dfbce63a89 433 * @arg @ref LL_CRS_SYNC_SOURCE_LSE
elmot 1:d0dfbce63a89 434 * @arg @ref LL_CRS_SYNC_SOURCE_USB
elmot 1:d0dfbce63a89 435 */
elmot 1:d0dfbce63a89 436 __STATIC_INLINE uint32_t LL_CRS_GetSyncSignalSource(void)
elmot 1:d0dfbce63a89 437 {
elmot 1:d0dfbce63a89 438 return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_SYNCSRC));
elmot 1:d0dfbce63a89 439 }
elmot 1:d0dfbce63a89 440
elmot 1:d0dfbce63a89 441 /**
elmot 1:d0dfbce63a89 442 * @brief Set input polarity for the SYNC signal source
elmot 1:d0dfbce63a89 443 * @rmtoll CFGR SYNCPOL LL_CRS_SetSyncPolarity
elmot 1:d0dfbce63a89 444 * @param Polarity This parameter can be one of the following values:
elmot 1:d0dfbce63a89 445 * @arg @ref LL_CRS_SYNC_POLARITY_RISING
elmot 1:d0dfbce63a89 446 * @arg @ref LL_CRS_SYNC_POLARITY_FALLING
elmot 1:d0dfbce63a89 447 * @retval None
elmot 1:d0dfbce63a89 448 */
elmot 1:d0dfbce63a89 449 __STATIC_INLINE void LL_CRS_SetSyncPolarity(uint32_t Polarity)
elmot 1:d0dfbce63a89 450 {
elmot 1:d0dfbce63a89 451 MODIFY_REG(CRS->CFGR, CRS_CFGR_SYNCPOL, Polarity);
elmot 1:d0dfbce63a89 452 }
elmot 1:d0dfbce63a89 453
elmot 1:d0dfbce63a89 454 /**
elmot 1:d0dfbce63a89 455 * @brief Get input polarity for the SYNC signal source
elmot 1:d0dfbce63a89 456 * @rmtoll CFGR SYNCPOL LL_CRS_GetSyncPolarity
elmot 1:d0dfbce63a89 457 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 458 * @arg @ref LL_CRS_SYNC_POLARITY_RISING
elmot 1:d0dfbce63a89 459 * @arg @ref LL_CRS_SYNC_POLARITY_FALLING
elmot 1:d0dfbce63a89 460 */
elmot 1:d0dfbce63a89 461 __STATIC_INLINE uint32_t LL_CRS_GetSyncPolarity(void)
elmot 1:d0dfbce63a89 462 {
elmot 1:d0dfbce63a89 463 return (uint32_t)(READ_BIT(CRS->CFGR, CRS_CFGR_SYNCPOL));
elmot 1:d0dfbce63a89 464 }
elmot 1:d0dfbce63a89 465
elmot 1:d0dfbce63a89 466 /**
elmot 1:d0dfbce63a89 467 * @brief Configure CRS for the synchronization
elmot 1:d0dfbce63a89 468 * @rmtoll CR TRIM LL_CRS_ConfigSynchronization\n
elmot 1:d0dfbce63a89 469 * CFGR RELOAD LL_CRS_ConfigSynchronization\n
elmot 1:d0dfbce63a89 470 * CFGR FELIM LL_CRS_ConfigSynchronization\n
elmot 1:d0dfbce63a89 471 * CFGR SYNCDIV LL_CRS_ConfigSynchronization\n
elmot 1:d0dfbce63a89 472 * CFGR SYNCSRC LL_CRS_ConfigSynchronization\n
elmot 1:d0dfbce63a89 473 * CFGR SYNCPOL LL_CRS_ConfigSynchronization
elmot 1:d0dfbce63a89 474 * @param HSI48CalibrationValue a number between Min_Data = 0 and Max_Data = 63
elmot 1:d0dfbce63a89 475 * @param ErrorLimitValue a number between Min_Data = 0 and Max_Data = 0xFFFF
elmot 1:d0dfbce63a89 476 * @param ReloadValue a number between Min_Data = 0 and Max_Data = 255
elmot 1:d0dfbce63a89 477 * @param Settings This parameter can be a combination of the following values:
elmot 1:d0dfbce63a89 478 * @arg @ref LL_CRS_SYNC_DIV_1 or @ref LL_CRS_SYNC_DIV_2 or @ref LL_CRS_SYNC_DIV_4 or @ref LL_CRS_SYNC_DIV_8
elmot 1:d0dfbce63a89 479 * or @ref LL_CRS_SYNC_DIV_16 or @ref LL_CRS_SYNC_DIV_32 or @ref LL_CRS_SYNC_DIV_64 or @ref LL_CRS_SYNC_DIV_128
elmot 1:d0dfbce63a89 480 * @arg @ref LL_CRS_SYNC_SOURCE_GPIO or @ref LL_CRS_SYNC_SOURCE_LSE or @ref LL_CRS_SYNC_SOURCE_USB
elmot 1:d0dfbce63a89 481 * @arg @ref LL_CRS_SYNC_POLARITY_RISING or @ref LL_CRS_SYNC_POLARITY_FALLING
elmot 1:d0dfbce63a89 482 * @retval None
elmot 1:d0dfbce63a89 483 */
elmot 1:d0dfbce63a89 484 __STATIC_INLINE void LL_CRS_ConfigSynchronization(uint32_t HSI48CalibrationValue, uint32_t ErrorLimitValue, uint32_t ReloadValue, uint32_t Settings)
elmot 1:d0dfbce63a89 485 {
elmot 1:d0dfbce63a89 486 MODIFY_REG(CRS->CR, CRS_CR_TRIM, HSI48CalibrationValue);
elmot 1:d0dfbce63a89 487 MODIFY_REG(CRS->CFGR,
elmot 1:d0dfbce63a89 488 CRS_CFGR_RELOAD | CRS_CFGR_FELIM | CRS_CFGR_SYNCDIV | CRS_CFGR_SYNCSRC | CRS_CFGR_SYNCPOL,
elmot 1:d0dfbce63a89 489 ReloadValue | (ErrorLimitValue << CRS_POSITION_FELIM) | Settings);
elmot 1:d0dfbce63a89 490 }
elmot 1:d0dfbce63a89 491
elmot 1:d0dfbce63a89 492 /**
elmot 1:d0dfbce63a89 493 * @}
elmot 1:d0dfbce63a89 494 */
elmot 1:d0dfbce63a89 495
elmot 1:d0dfbce63a89 496 /** @defgroup CRS_LL_EF_CRS_Management CRS_Management
elmot 1:d0dfbce63a89 497 * @{
elmot 1:d0dfbce63a89 498 */
elmot 1:d0dfbce63a89 499
elmot 1:d0dfbce63a89 500 /**
elmot 1:d0dfbce63a89 501 * @brief Generate software SYNC event
elmot 1:d0dfbce63a89 502 * @rmtoll CR SWSYNC LL_CRS_GenerateEvent_SWSYNC
elmot 1:d0dfbce63a89 503 * @retval None
elmot 1:d0dfbce63a89 504 */
elmot 1:d0dfbce63a89 505 __STATIC_INLINE void LL_CRS_GenerateEvent_SWSYNC(void)
elmot 1:d0dfbce63a89 506 {
elmot 1:d0dfbce63a89 507 SET_BIT(CRS->CR, CRS_CR_SWSYNC);
elmot 1:d0dfbce63a89 508 }
elmot 1:d0dfbce63a89 509
elmot 1:d0dfbce63a89 510 /**
elmot 1:d0dfbce63a89 511 * @brief Get the frequency error direction latched in the time of the last
elmot 1:d0dfbce63a89 512 * SYNC event
elmot 1:d0dfbce63a89 513 * @rmtoll ISR FEDIR LL_CRS_GetFreqErrorDirection
elmot 1:d0dfbce63a89 514 * @retval Returned value can be one of the following values:
elmot 1:d0dfbce63a89 515 * @arg @ref LL_CRS_FREQ_ERROR_DIR_UP
elmot 1:d0dfbce63a89 516 * @arg @ref LL_CRS_FREQ_ERROR_DIR_DOWN
elmot 1:d0dfbce63a89 517 */
elmot 1:d0dfbce63a89 518 __STATIC_INLINE uint32_t LL_CRS_GetFreqErrorDirection(void)
elmot 1:d0dfbce63a89 519 {
elmot 1:d0dfbce63a89 520 return (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FEDIR));
elmot 1:d0dfbce63a89 521 }
elmot 1:d0dfbce63a89 522
elmot 1:d0dfbce63a89 523 /**
elmot 1:d0dfbce63a89 524 * @brief Get the frequency error counter value latched in the time of the last SYNC event
elmot 1:d0dfbce63a89 525 * @rmtoll ISR FECAP LL_CRS_GetFreqErrorCapture
elmot 1:d0dfbce63a89 526 * @retval A number between Min_Data = 0x0000 and Max_Data = 0xFFFF
elmot 1:d0dfbce63a89 527 */
elmot 1:d0dfbce63a89 528 __STATIC_INLINE uint32_t LL_CRS_GetFreqErrorCapture(void)
elmot 1:d0dfbce63a89 529 {
elmot 1:d0dfbce63a89 530 return (uint32_t)(READ_BIT(CRS->ISR, CRS_ISR_FECAP) >> CRS_POSITION_FECAP);
elmot 1:d0dfbce63a89 531 }
elmot 1:d0dfbce63a89 532
elmot 1:d0dfbce63a89 533 /**
elmot 1:d0dfbce63a89 534 * @}
elmot 1:d0dfbce63a89 535 */
elmot 1:d0dfbce63a89 536
elmot 1:d0dfbce63a89 537 /** @defgroup CRS_LL_EF_FLAG_Management FLAG_Management
elmot 1:d0dfbce63a89 538 * @{
elmot 1:d0dfbce63a89 539 */
elmot 1:d0dfbce63a89 540
elmot 1:d0dfbce63a89 541 /**
elmot 1:d0dfbce63a89 542 * @brief Check if SYNC event OK signal occurred or not
elmot 1:d0dfbce63a89 543 * @rmtoll ISR SYNCOKF LL_CRS_IsActiveFlag_SYNCOK
elmot 1:d0dfbce63a89 544 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 545 */
elmot 1:d0dfbce63a89 546 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCOK(void)
elmot 1:d0dfbce63a89 547 {
elmot 1:d0dfbce63a89 548 return (READ_BIT(CRS->ISR, CRS_ISR_SYNCOKF) == (CRS_ISR_SYNCOKF));
elmot 1:d0dfbce63a89 549 }
elmot 1:d0dfbce63a89 550
elmot 1:d0dfbce63a89 551 /**
elmot 1:d0dfbce63a89 552 * @brief Check if SYNC warning signal occurred or not
elmot 1:d0dfbce63a89 553 * @rmtoll ISR SYNCWARNF LL_CRS_IsActiveFlag_SYNCWARN
elmot 1:d0dfbce63a89 554 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 555 */
elmot 1:d0dfbce63a89 556 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCWARN(void)
elmot 1:d0dfbce63a89 557 {
elmot 1:d0dfbce63a89 558 return (READ_BIT(CRS->ISR, CRS_ISR_SYNCWARNF) == (CRS_ISR_SYNCWARNF));
elmot 1:d0dfbce63a89 559 }
elmot 1:d0dfbce63a89 560
elmot 1:d0dfbce63a89 561 /**
elmot 1:d0dfbce63a89 562 * @brief Check if Synchronization or trimming error signal occurred or not
elmot 1:d0dfbce63a89 563 * @rmtoll ISR ERRF LL_CRS_IsActiveFlag_ERR
elmot 1:d0dfbce63a89 564 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 565 */
elmot 1:d0dfbce63a89 566 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_ERR(void)
elmot 1:d0dfbce63a89 567 {
elmot 1:d0dfbce63a89 568 return (READ_BIT(CRS->ISR, CRS_ISR_ERRF) == (CRS_ISR_ERRF));
elmot 1:d0dfbce63a89 569 }
elmot 1:d0dfbce63a89 570
elmot 1:d0dfbce63a89 571 /**
elmot 1:d0dfbce63a89 572 * @brief Check if Expected SYNC signal occurred or not
elmot 1:d0dfbce63a89 573 * @rmtoll ISR ESYNCF LL_CRS_IsActiveFlag_ESYNC
elmot 1:d0dfbce63a89 574 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 575 */
elmot 1:d0dfbce63a89 576 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_ESYNC(void)
elmot 1:d0dfbce63a89 577 {
elmot 1:d0dfbce63a89 578 return (READ_BIT(CRS->ISR, CRS_ISR_ESYNCF) == (CRS_ISR_ESYNCF));
elmot 1:d0dfbce63a89 579 }
elmot 1:d0dfbce63a89 580
elmot 1:d0dfbce63a89 581 /**
elmot 1:d0dfbce63a89 582 * @brief Check if SYNC error signal occurred or not
elmot 1:d0dfbce63a89 583 * @rmtoll ISR SYNCERR LL_CRS_IsActiveFlag_SYNCERR
elmot 1:d0dfbce63a89 584 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 585 */
elmot 1:d0dfbce63a89 586 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCERR(void)
elmot 1:d0dfbce63a89 587 {
elmot 1:d0dfbce63a89 588 return (READ_BIT(CRS->ISR, CRS_ISR_SYNCERR) == (CRS_ISR_SYNCERR));
elmot 1:d0dfbce63a89 589 }
elmot 1:d0dfbce63a89 590
elmot 1:d0dfbce63a89 591 /**
elmot 1:d0dfbce63a89 592 * @brief Check if SYNC missed error signal occurred or not
elmot 1:d0dfbce63a89 593 * @rmtoll ISR SYNCMISS LL_CRS_IsActiveFlag_SYNCMISS
elmot 1:d0dfbce63a89 594 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 595 */
elmot 1:d0dfbce63a89 596 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_SYNCMISS(void)
elmot 1:d0dfbce63a89 597 {
elmot 1:d0dfbce63a89 598 return (READ_BIT(CRS->ISR, CRS_ISR_SYNCMISS) == (CRS_ISR_SYNCMISS));
elmot 1:d0dfbce63a89 599 }
elmot 1:d0dfbce63a89 600
elmot 1:d0dfbce63a89 601 /**
elmot 1:d0dfbce63a89 602 * @brief Check if Trimming overflow or underflow occurred or not
elmot 1:d0dfbce63a89 603 * @rmtoll ISR TRIMOVF LL_CRS_IsActiveFlag_TRIMOVF
elmot 1:d0dfbce63a89 604 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 605 */
elmot 1:d0dfbce63a89 606 __STATIC_INLINE uint32_t LL_CRS_IsActiveFlag_TRIMOVF(void)
elmot 1:d0dfbce63a89 607 {
elmot 1:d0dfbce63a89 608 return (READ_BIT(CRS->ISR, CRS_ISR_TRIMOVF) == (CRS_ISR_TRIMOVF));
elmot 1:d0dfbce63a89 609 }
elmot 1:d0dfbce63a89 610
elmot 1:d0dfbce63a89 611 /**
elmot 1:d0dfbce63a89 612 * @brief Clear the SYNC event OK flag
elmot 1:d0dfbce63a89 613 * @rmtoll ICR SYNCOKC LL_CRS_ClearFlag_SYNCOK
elmot 1:d0dfbce63a89 614 * @retval None
elmot 1:d0dfbce63a89 615 */
elmot 1:d0dfbce63a89 616 __STATIC_INLINE void LL_CRS_ClearFlag_SYNCOK(void)
elmot 1:d0dfbce63a89 617 {
elmot 1:d0dfbce63a89 618 WRITE_REG(CRS->ICR, CRS_ICR_SYNCOKC);
elmot 1:d0dfbce63a89 619 }
elmot 1:d0dfbce63a89 620
elmot 1:d0dfbce63a89 621 /**
elmot 1:d0dfbce63a89 622 * @brief Clear the SYNC warning flag
elmot 1:d0dfbce63a89 623 * @rmtoll ICR SYNCWARNC LL_CRS_ClearFlag_SYNCWARN
elmot 1:d0dfbce63a89 624 * @retval None
elmot 1:d0dfbce63a89 625 */
elmot 1:d0dfbce63a89 626 __STATIC_INLINE void LL_CRS_ClearFlag_SYNCWARN(void)
elmot 1:d0dfbce63a89 627 {
elmot 1:d0dfbce63a89 628 WRITE_REG(CRS->ICR, CRS_ICR_SYNCWARNC);
elmot 1:d0dfbce63a89 629 }
elmot 1:d0dfbce63a89 630
elmot 1:d0dfbce63a89 631 /**
elmot 1:d0dfbce63a89 632 * @brief Clear TRIMOVF, SYNCMISS and SYNCERR bits and consequently also
elmot 1:d0dfbce63a89 633 * the ERR flag
elmot 1:d0dfbce63a89 634 * @rmtoll ICR ERRC LL_CRS_ClearFlag_ERR
elmot 1:d0dfbce63a89 635 * @retval None
elmot 1:d0dfbce63a89 636 */
elmot 1:d0dfbce63a89 637 __STATIC_INLINE void LL_CRS_ClearFlag_ERR(void)
elmot 1:d0dfbce63a89 638 {
elmot 1:d0dfbce63a89 639 WRITE_REG(CRS->ICR, CRS_ICR_ERRC);
elmot 1:d0dfbce63a89 640 }
elmot 1:d0dfbce63a89 641
elmot 1:d0dfbce63a89 642 /**
elmot 1:d0dfbce63a89 643 * @brief Clear Expected SYNC flag
elmot 1:d0dfbce63a89 644 * @rmtoll ICR ESYNCC LL_CRS_ClearFlag_ESYNC
elmot 1:d0dfbce63a89 645 * @retval None
elmot 1:d0dfbce63a89 646 */
elmot 1:d0dfbce63a89 647 __STATIC_INLINE void LL_CRS_ClearFlag_ESYNC(void)
elmot 1:d0dfbce63a89 648 {
elmot 1:d0dfbce63a89 649 WRITE_REG(CRS->ICR, CRS_ICR_ESYNCC);
elmot 1:d0dfbce63a89 650 }
elmot 1:d0dfbce63a89 651
elmot 1:d0dfbce63a89 652 /**
elmot 1:d0dfbce63a89 653 * @}
elmot 1:d0dfbce63a89 654 */
elmot 1:d0dfbce63a89 655
elmot 1:d0dfbce63a89 656 /** @defgroup CRS_LL_EF_IT_Management IT_Management
elmot 1:d0dfbce63a89 657 * @{
elmot 1:d0dfbce63a89 658 */
elmot 1:d0dfbce63a89 659
elmot 1:d0dfbce63a89 660 /**
elmot 1:d0dfbce63a89 661 * @brief Enable SYNC event OK interrupt
elmot 1:d0dfbce63a89 662 * @rmtoll CR SYNCOKIE LL_CRS_EnableIT_SYNCOK
elmot 1:d0dfbce63a89 663 * @retval None
elmot 1:d0dfbce63a89 664 */
elmot 1:d0dfbce63a89 665 __STATIC_INLINE void LL_CRS_EnableIT_SYNCOK(void)
elmot 1:d0dfbce63a89 666 {
elmot 1:d0dfbce63a89 667 SET_BIT(CRS->CR, CRS_CR_SYNCOKIE);
elmot 1:d0dfbce63a89 668 }
elmot 1:d0dfbce63a89 669
elmot 1:d0dfbce63a89 670 /**
elmot 1:d0dfbce63a89 671 * @brief Disable SYNC event OK interrupt
elmot 1:d0dfbce63a89 672 * @rmtoll CR SYNCOKIE LL_CRS_DisableIT_SYNCOK
elmot 1:d0dfbce63a89 673 * @retval None
elmot 1:d0dfbce63a89 674 */
elmot 1:d0dfbce63a89 675 __STATIC_INLINE void LL_CRS_DisableIT_SYNCOK(void)
elmot 1:d0dfbce63a89 676 {
elmot 1:d0dfbce63a89 677 CLEAR_BIT(CRS->CR, CRS_CR_SYNCOKIE);
elmot 1:d0dfbce63a89 678 }
elmot 1:d0dfbce63a89 679
elmot 1:d0dfbce63a89 680 /**
elmot 1:d0dfbce63a89 681 * @brief Check if SYNC event OK interrupt is enabled or not
elmot 1:d0dfbce63a89 682 * @rmtoll CR SYNCOKIE LL_CRS_IsEnabledIT_SYNCOK
elmot 1:d0dfbce63a89 683 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 684 */
elmot 1:d0dfbce63a89 685 __STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_SYNCOK(void)
elmot 1:d0dfbce63a89 686 {
elmot 1:d0dfbce63a89 687 return (READ_BIT(CRS->CR, CRS_CR_SYNCOKIE) == (CRS_CR_SYNCOKIE));
elmot 1:d0dfbce63a89 688 }
elmot 1:d0dfbce63a89 689
elmot 1:d0dfbce63a89 690 /**
elmot 1:d0dfbce63a89 691 * @brief Enable SYNC warning interrupt
elmot 1:d0dfbce63a89 692 * @rmtoll CR SYNCWARNIE LL_CRS_EnableIT_SYNCWARN
elmot 1:d0dfbce63a89 693 * @retval None
elmot 1:d0dfbce63a89 694 */
elmot 1:d0dfbce63a89 695 __STATIC_INLINE void LL_CRS_EnableIT_SYNCWARN(void)
elmot 1:d0dfbce63a89 696 {
elmot 1:d0dfbce63a89 697 SET_BIT(CRS->CR, CRS_CR_SYNCWARNIE);
elmot 1:d0dfbce63a89 698 }
elmot 1:d0dfbce63a89 699
elmot 1:d0dfbce63a89 700 /**
elmot 1:d0dfbce63a89 701 * @brief Disable SYNC warning interrupt
elmot 1:d0dfbce63a89 702 * @rmtoll CR SYNCWARNIE LL_CRS_DisableIT_SYNCWARN
elmot 1:d0dfbce63a89 703 * @retval None
elmot 1:d0dfbce63a89 704 */
elmot 1:d0dfbce63a89 705 __STATIC_INLINE void LL_CRS_DisableIT_SYNCWARN(void)
elmot 1:d0dfbce63a89 706 {
elmot 1:d0dfbce63a89 707 CLEAR_BIT(CRS->CR, CRS_CR_SYNCWARNIE);
elmot 1:d0dfbce63a89 708 }
elmot 1:d0dfbce63a89 709
elmot 1:d0dfbce63a89 710 /**
elmot 1:d0dfbce63a89 711 * @brief Check if SYNC warning interrupt is enabled or not
elmot 1:d0dfbce63a89 712 * @rmtoll CR SYNCWARNIE LL_CRS_IsEnabledIT_SYNCWARN
elmot 1:d0dfbce63a89 713 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 714 */
elmot 1:d0dfbce63a89 715 __STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_SYNCWARN(void)
elmot 1:d0dfbce63a89 716 {
elmot 1:d0dfbce63a89 717 return (READ_BIT(CRS->CR, CRS_CR_SYNCWARNIE) == (CRS_CR_SYNCWARNIE));
elmot 1:d0dfbce63a89 718 }
elmot 1:d0dfbce63a89 719
elmot 1:d0dfbce63a89 720 /**
elmot 1:d0dfbce63a89 721 * @brief Enable Synchronization or trimming error interrupt
elmot 1:d0dfbce63a89 722 * @rmtoll CR ERRIE LL_CRS_EnableIT_ERR
elmot 1:d0dfbce63a89 723 * @retval None
elmot 1:d0dfbce63a89 724 */
elmot 1:d0dfbce63a89 725 __STATIC_INLINE void LL_CRS_EnableIT_ERR(void)
elmot 1:d0dfbce63a89 726 {
elmot 1:d0dfbce63a89 727 SET_BIT(CRS->CR, CRS_CR_ERRIE);
elmot 1:d0dfbce63a89 728 }
elmot 1:d0dfbce63a89 729
elmot 1:d0dfbce63a89 730 /**
elmot 1:d0dfbce63a89 731 * @brief Disable Synchronization or trimming error interrupt
elmot 1:d0dfbce63a89 732 * @rmtoll CR ERRIE LL_CRS_DisableIT_ERR
elmot 1:d0dfbce63a89 733 * @retval None
elmot 1:d0dfbce63a89 734 */
elmot 1:d0dfbce63a89 735 __STATIC_INLINE void LL_CRS_DisableIT_ERR(void)
elmot 1:d0dfbce63a89 736 {
elmot 1:d0dfbce63a89 737 CLEAR_BIT(CRS->CR, CRS_CR_ERRIE);
elmot 1:d0dfbce63a89 738 }
elmot 1:d0dfbce63a89 739
elmot 1:d0dfbce63a89 740 /**
elmot 1:d0dfbce63a89 741 * @brief Check if Synchronization or trimming error interrupt is enabled or not
elmot 1:d0dfbce63a89 742 * @rmtoll CR ERRIE LL_CRS_IsEnabledIT_ERR
elmot 1:d0dfbce63a89 743 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 744 */
elmot 1:d0dfbce63a89 745 __STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_ERR(void)
elmot 1:d0dfbce63a89 746 {
elmot 1:d0dfbce63a89 747 return (READ_BIT(CRS->CR, CRS_CR_ERRIE) == (CRS_CR_ERRIE));
elmot 1:d0dfbce63a89 748 }
elmot 1:d0dfbce63a89 749
elmot 1:d0dfbce63a89 750 /**
elmot 1:d0dfbce63a89 751 * @brief Enable Expected SYNC interrupt
elmot 1:d0dfbce63a89 752 * @rmtoll CR ESYNCIE LL_CRS_EnableIT_ESYNC
elmot 1:d0dfbce63a89 753 * @retval None
elmot 1:d0dfbce63a89 754 */
elmot 1:d0dfbce63a89 755 __STATIC_INLINE void LL_CRS_EnableIT_ESYNC(void)
elmot 1:d0dfbce63a89 756 {
elmot 1:d0dfbce63a89 757 SET_BIT(CRS->CR, CRS_CR_ESYNCIE);
elmot 1:d0dfbce63a89 758 }
elmot 1:d0dfbce63a89 759
elmot 1:d0dfbce63a89 760 /**
elmot 1:d0dfbce63a89 761 * @brief Disable Expected SYNC interrupt
elmot 1:d0dfbce63a89 762 * @rmtoll CR ESYNCIE LL_CRS_DisableIT_ESYNC
elmot 1:d0dfbce63a89 763 * @retval None
elmot 1:d0dfbce63a89 764 */
elmot 1:d0dfbce63a89 765 __STATIC_INLINE void LL_CRS_DisableIT_ESYNC(void)
elmot 1:d0dfbce63a89 766 {
elmot 1:d0dfbce63a89 767 CLEAR_BIT(CRS->CR, CRS_CR_ESYNCIE);
elmot 1:d0dfbce63a89 768 }
elmot 1:d0dfbce63a89 769
elmot 1:d0dfbce63a89 770 /**
elmot 1:d0dfbce63a89 771 * @brief Check if Expected SYNC interrupt is enabled or not
elmot 1:d0dfbce63a89 772 * @rmtoll CR ESYNCIE LL_CRS_IsEnabledIT_ESYNC
elmot 1:d0dfbce63a89 773 * @retval State of bit (1 or 0).
elmot 1:d0dfbce63a89 774 */
elmot 1:d0dfbce63a89 775 __STATIC_INLINE uint32_t LL_CRS_IsEnabledIT_ESYNC(void)
elmot 1:d0dfbce63a89 776 {
elmot 1:d0dfbce63a89 777 return (READ_BIT(CRS->CR, CRS_CR_ESYNCIE) == (CRS_CR_ESYNCIE));
elmot 1:d0dfbce63a89 778 }
elmot 1:d0dfbce63a89 779
elmot 1:d0dfbce63a89 780 /**
elmot 1:d0dfbce63a89 781 * @}
elmot 1:d0dfbce63a89 782 */
elmot 1:d0dfbce63a89 783
elmot 1:d0dfbce63a89 784 #if defined(USE_FULL_LL_DRIVER)
elmot 1:d0dfbce63a89 785 /** @defgroup CRS_LL_EF_Init Initialization and de-initialization functions
elmot 1:d0dfbce63a89 786 * @{
elmot 1:d0dfbce63a89 787 */
elmot 1:d0dfbce63a89 788
elmot 1:d0dfbce63a89 789 ErrorStatus LL_CRS_DeInit(void);
elmot 1:d0dfbce63a89 790
elmot 1:d0dfbce63a89 791 /**
elmot 1:d0dfbce63a89 792 * @}
elmot 1:d0dfbce63a89 793 */
elmot 1:d0dfbce63a89 794 #endif /* USE_FULL_LL_DRIVER */
elmot 1:d0dfbce63a89 795
elmot 1:d0dfbce63a89 796 /**
elmot 1:d0dfbce63a89 797 * @}
elmot 1:d0dfbce63a89 798 */
elmot 1:d0dfbce63a89 799
elmot 1:d0dfbce63a89 800 /**
elmot 1:d0dfbce63a89 801 * @}
elmot 1:d0dfbce63a89 802 */
elmot 1:d0dfbce63a89 803
elmot 1:d0dfbce63a89 804 #endif /* defined(CRS) */
elmot 1:d0dfbce63a89 805
elmot 1:d0dfbce63a89 806 /**
elmot 1:d0dfbce63a89 807 * @}
elmot 1:d0dfbce63a89 808 */
elmot 1:d0dfbce63a89 809
elmot 1:d0dfbce63a89 810 #ifdef __cplusplus
elmot 1:d0dfbce63a89 811 }
elmot 1:d0dfbce63a89 812 #endif
elmot 1:d0dfbce63a89 813
elmot 1:d0dfbce63a89 814 #endif /* __STM32L4xx_LL_CRS_H */
elmot 1:d0dfbce63a89 815
elmot 1:d0dfbce63a89 816 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/