mbed library sources

Dependents:   frdm_kl05z_gpio_test

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Fri Mar 21 11:45:09 2014 +0000
Revision:
130:1dec54e4aec3
Synchronized with git revision e5c9ff6781a4e277a5a454e5a0b037f76e31739d

Full URL: https://github.com/mbedmicro/mbed/commit/e5c9ff6781a4e277a5a454e5a0b037f76e31739d/

STM32F0-Discovery (STM32F051R8) initial port

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 130:1dec54e4aec3 1 /**
mbed_official 130:1dec54e4aec3 2 ******************************************************************************
mbed_official 130:1dec54e4aec3 3 * @file stm32f0xx_crs.c
mbed_official 130:1dec54e4aec3 4 * @author MCD Application Team
mbed_official 130:1dec54e4aec3 5 * @version V1.3.0
mbed_official 130:1dec54e4aec3 6 * @date 16-January-2014
mbed_official 130:1dec54e4aec3 7 * @brief This file provides firmware functions to manage the following
mbed_official 130:1dec54e4aec3 8 * functionalities of CRS peripheral applicable only on STM32F042 and
mbed_official 130:1dec54e4aec3 9 * STM32F072 devices:
mbed_official 130:1dec54e4aec3 10 * + Configuration of the CRS peripheral
mbed_official 130:1dec54e4aec3 11 * + Interrupts and flags management
mbed_official 130:1dec54e4aec3 12 *
mbed_official 130:1dec54e4aec3 13 *
mbed_official 130:1dec54e4aec3 14 * @verbatim
mbed_official 130:1dec54e4aec3 15 ===============================================================================
mbed_official 130:1dec54e4aec3 16 ##### How to use this driver #####
mbed_official 130:1dec54e4aec3 17 ===============================================================================
mbed_official 130:1dec54e4aec3 18 [..]
mbed_official 130:1dec54e4aec3 19
mbed_official 130:1dec54e4aec3 20 (+) Enable CRS AHB clock using RCC_APB1eriphClockCmd(RCC_APB1Periph_CRS, ENABLE)
mbed_official 130:1dec54e4aec3 21 function
mbed_official 130:1dec54e4aec3 22
mbed_official 130:1dec54e4aec3 23
mbed_official 130:1dec54e4aec3 24 @endverbatim
mbed_official 130:1dec54e4aec3 25 *
mbed_official 130:1dec54e4aec3 26 ******************************************************************************
mbed_official 130:1dec54e4aec3 27 * @attention
mbed_official 130:1dec54e4aec3 28 *
mbed_official 130:1dec54e4aec3 29 * <h2><center>&copy; COPYRIGHT(c) 2014 STMicroelectronics</center></h2>
mbed_official 130:1dec54e4aec3 30 *
mbed_official 130:1dec54e4aec3 31 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 130:1dec54e4aec3 32 * are permitted provided that the following conditions are met:
mbed_official 130:1dec54e4aec3 33 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 130:1dec54e4aec3 34 * this list of conditions and the following disclaimer.
mbed_official 130:1dec54e4aec3 35 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 130:1dec54e4aec3 36 * this list of conditions and the following disclaimer in the documentation
mbed_official 130:1dec54e4aec3 37 * and/or other materials provided with the distribution.
mbed_official 130:1dec54e4aec3 38 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 130:1dec54e4aec3 39 * may be used to endorse or promote products derived from this software
mbed_official 130:1dec54e4aec3 40 * without specific prior written permission.
mbed_official 130:1dec54e4aec3 41 *
mbed_official 130:1dec54e4aec3 42 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 130:1dec54e4aec3 43 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 130:1dec54e4aec3 44 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 130:1dec54e4aec3 45 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 130:1dec54e4aec3 46 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 130:1dec54e4aec3 47 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 130:1dec54e4aec3 48 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 130:1dec54e4aec3 49 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 130:1dec54e4aec3 50 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 130:1dec54e4aec3 51 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 130:1dec54e4aec3 52 *
mbed_official 130:1dec54e4aec3 53 ******************************************************************************
mbed_official 130:1dec54e4aec3 54 */
mbed_official 130:1dec54e4aec3 55
mbed_official 130:1dec54e4aec3 56 /* Includes ------------------------------------------------------------------*/
mbed_official 130:1dec54e4aec3 57 #include "stm32f0xx_crs.h"
mbed_official 130:1dec54e4aec3 58 #include "stm32f0xx_rcc.h"
mbed_official 130:1dec54e4aec3 59
mbed_official 130:1dec54e4aec3 60 /** @addtogroup STM32F0xx_StdPeriph_Driver
mbed_official 130:1dec54e4aec3 61 * @{
mbed_official 130:1dec54e4aec3 62 */
mbed_official 130:1dec54e4aec3 63
mbed_official 130:1dec54e4aec3 64 /** @defgroup CRS
mbed_official 130:1dec54e4aec3 65 * @brief CRS driver modules
mbed_official 130:1dec54e4aec3 66 * @{
mbed_official 130:1dec54e4aec3 67 */
mbed_official 130:1dec54e4aec3 68
mbed_official 130:1dec54e4aec3 69 /* Private typedef -----------------------------------------------------------*/
mbed_official 130:1dec54e4aec3 70 /* Private define ------------------------------------------------------------*/
mbed_official 130:1dec54e4aec3 71 /* CRS Flag Mask */
mbed_official 130:1dec54e4aec3 72 #define FLAG_MASK ((uint32_t)0x700)
mbed_official 130:1dec54e4aec3 73
mbed_official 130:1dec54e4aec3 74 /* Private macro -------------------------------------------------------------*/
mbed_official 130:1dec54e4aec3 75 /* Private variables ---------------------------------------------------------*/
mbed_official 130:1dec54e4aec3 76 /* Private function prototypes -----------------------------------------------*/
mbed_official 130:1dec54e4aec3 77 /* Private functions ---------------------------------------------------------*/
mbed_official 130:1dec54e4aec3 78
mbed_official 130:1dec54e4aec3 79 /** @defgroup CRS_Private_Functions
mbed_official 130:1dec54e4aec3 80 * @{
mbed_official 130:1dec54e4aec3 81 */
mbed_official 130:1dec54e4aec3 82
mbed_official 130:1dec54e4aec3 83 /** @defgroup CRS_Group1 Configuration of the CRS functions
mbed_official 130:1dec54e4aec3 84 * @brief Configuration of the CRS functions
mbed_official 130:1dec54e4aec3 85 *
mbed_official 130:1dec54e4aec3 86 @verbatim
mbed_official 130:1dec54e4aec3 87 ===============================================================================
mbed_official 130:1dec54e4aec3 88 ##### CRS configuration functions #####
mbed_official 130:1dec54e4aec3 89 ===============================================================================
mbed_official 130:1dec54e4aec3 90
mbed_official 130:1dec54e4aec3 91 @endverbatim
mbed_official 130:1dec54e4aec3 92 * @{
mbed_official 130:1dec54e4aec3 93 */
mbed_official 130:1dec54e4aec3 94
mbed_official 130:1dec54e4aec3 95 /**
mbed_official 130:1dec54e4aec3 96 * @brief Deinitializes CRS peripheral registers to their default reset values.
mbed_official 130:1dec54e4aec3 97 * @param None
mbed_official 130:1dec54e4aec3 98 * @retval None
mbed_official 130:1dec54e4aec3 99 */
mbed_official 130:1dec54e4aec3 100 void CRS_DeInit(void)
mbed_official 130:1dec54e4aec3 101 {
mbed_official 130:1dec54e4aec3 102 RCC_APB1PeriphResetCmd(RCC_APB1Periph_CRS, ENABLE);
mbed_official 130:1dec54e4aec3 103 RCC_APB1PeriphResetCmd(RCC_APB1Periph_CRS, DISABLE);
mbed_official 130:1dec54e4aec3 104 }
mbed_official 130:1dec54e4aec3 105
mbed_official 130:1dec54e4aec3 106 /**
mbed_official 130:1dec54e4aec3 107 * @brief Adjusts the Internal High Speed 48 oscillator (HSI 48) calibration value.
mbed_official 130:1dec54e4aec3 108 * @note The calibration is used to compensate for the variations in voltage
mbed_official 130:1dec54e4aec3 109 * and temperature that influence the frequency of the internal HSI48 RC.
mbed_official 130:1dec54e4aec3 110 * @note This function can be called only when the AUTOTRIMEN bit is reset.
mbed_official 130:1dec54e4aec3 111 * @param CRS_HSI48CalibrationValue:
mbed_official 130:1dec54e4aec3 112 * @retval None
mbed_official 130:1dec54e4aec3 113 */
mbed_official 130:1dec54e4aec3 114 void CRS_AdjustHSI48CalibrationValue(uint8_t CRS_HSI48CalibrationValue)
mbed_official 130:1dec54e4aec3 115 {
mbed_official 130:1dec54e4aec3 116 /* Clear TRIM[5:0] bits */
mbed_official 130:1dec54e4aec3 117 CRS->CR &= ~CRS_CR_TRIM;
mbed_official 130:1dec54e4aec3 118
mbed_official 130:1dec54e4aec3 119 /* Set the TRIM[5:0] bits according to CRS_HSI48CalibrationValue value */
mbed_official 130:1dec54e4aec3 120 CRS->CR |= (uint32_t)((uint32_t)CRS_HSI48CalibrationValue << 8);
mbed_official 130:1dec54e4aec3 121
mbed_official 130:1dec54e4aec3 122 }
mbed_official 130:1dec54e4aec3 123
mbed_official 130:1dec54e4aec3 124 /**
mbed_official 130:1dec54e4aec3 125 * @brief Enables or disables the oscillator clock for frequency error counter.
mbed_official 130:1dec54e4aec3 126 * @note when the CEN bit is set the CRS_CFGR register becomes write-protected.
mbed_official 130:1dec54e4aec3 127 * @param NewState: new state of the frequency error counter.
mbed_official 130:1dec54e4aec3 128 * This parameter can be: ENABLE or DISABLE.
mbed_official 130:1dec54e4aec3 129 * @retval None
mbed_official 130:1dec54e4aec3 130 */
mbed_official 130:1dec54e4aec3 131 void CRS_FrequencyErrorCounterCmd(FunctionalState NewState)
mbed_official 130:1dec54e4aec3 132 {
mbed_official 130:1dec54e4aec3 133 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 130:1dec54e4aec3 134
mbed_official 130:1dec54e4aec3 135 if (NewState != DISABLE)
mbed_official 130:1dec54e4aec3 136 {
mbed_official 130:1dec54e4aec3 137 CRS->CR |= CRS_CR_CEN;
mbed_official 130:1dec54e4aec3 138 }
mbed_official 130:1dec54e4aec3 139 else
mbed_official 130:1dec54e4aec3 140 {
mbed_official 130:1dec54e4aec3 141 CRS->CR &= ~CRS_CR_CEN;
mbed_official 130:1dec54e4aec3 142 }
mbed_official 130:1dec54e4aec3 143 }
mbed_official 130:1dec54e4aec3 144
mbed_official 130:1dec54e4aec3 145 /**
mbed_official 130:1dec54e4aec3 146 * @brief Enables or disables the automatic hardware adjustement of TRIM bits.
mbed_official 130:1dec54e4aec3 147 * @note When the AUTOTRIMEN bit is set the CRS_CFGR register becomes write-protected.
mbed_official 130:1dec54e4aec3 148 * @param NewState: new state of the automatic trimming.
mbed_official 130:1dec54e4aec3 149 * This parameter can be: ENABLE or DISABLE.
mbed_official 130:1dec54e4aec3 150 * @retval None
mbed_official 130:1dec54e4aec3 151 */
mbed_official 130:1dec54e4aec3 152 void CRS_AutomaticCalibrationCmd(FunctionalState NewState)
mbed_official 130:1dec54e4aec3 153 {
mbed_official 130:1dec54e4aec3 154 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 130:1dec54e4aec3 155
mbed_official 130:1dec54e4aec3 156 if (NewState != DISABLE)
mbed_official 130:1dec54e4aec3 157 {
mbed_official 130:1dec54e4aec3 158 CRS->CR |= CRS_CR_AUTOTRIMEN;
mbed_official 130:1dec54e4aec3 159 }
mbed_official 130:1dec54e4aec3 160 else
mbed_official 130:1dec54e4aec3 161 {
mbed_official 130:1dec54e4aec3 162 CRS->CR &= ~CRS_CR_AUTOTRIMEN;
mbed_official 130:1dec54e4aec3 163 }
mbed_official 130:1dec54e4aec3 164 }
mbed_official 130:1dec54e4aec3 165
mbed_official 130:1dec54e4aec3 166 /**
mbed_official 130:1dec54e4aec3 167 * @brief Generate the software synchronization event
mbed_official 130:1dec54e4aec3 168 * @param None
mbed_official 130:1dec54e4aec3 169 * @retval None
mbed_official 130:1dec54e4aec3 170 */
mbed_official 130:1dec54e4aec3 171 void CRS_SoftwareSynchronizationGenerate(void)
mbed_official 130:1dec54e4aec3 172 {
mbed_official 130:1dec54e4aec3 173 CRS->CR |= CRS_CR_SWSYNC;
mbed_official 130:1dec54e4aec3 174 }
mbed_official 130:1dec54e4aec3 175
mbed_official 130:1dec54e4aec3 176 /**
mbed_official 130:1dec54e4aec3 177 * @brief Adjusts the Internal High Speed 48 oscillator (HSI 48) calibration value.
mbed_official 130:1dec54e4aec3 178 * @note The calibration is used to compensate for the variations in voltage
mbed_official 130:1dec54e4aec3 179 * and temperature that influence the frequency of the internal HSI48 RC.
mbed_official 130:1dec54e4aec3 180 * @note This function can be called only when the CEN bit is reset.
mbed_official 130:1dec54e4aec3 181 * @param CRS_ReloadValue: specifies the HSI calibration trimming value.
mbed_official 130:1dec54e4aec3 182 * This parameter must be a number between 0 and .
mbed_official 130:1dec54e4aec3 183 * @retval None
mbed_official 130:1dec54e4aec3 184 */
mbed_official 130:1dec54e4aec3 185 void CRS_FrequencyErrorCounterReload(uint32_t CRS_ReloadValue)
mbed_official 130:1dec54e4aec3 186 {
mbed_official 130:1dec54e4aec3 187
mbed_official 130:1dec54e4aec3 188 /* Clear RELOAD[15:0] bits */
mbed_official 130:1dec54e4aec3 189 CRS->CFGR &= ~CRS_CFGR_RELOAD;
mbed_official 130:1dec54e4aec3 190
mbed_official 130:1dec54e4aec3 191 /* Set the RELOAD[15:0] bits according to CRS_ReloadValue value */
mbed_official 130:1dec54e4aec3 192 CRS->CFGR |= (uint32_t)CRS_ReloadValue;
mbed_official 130:1dec54e4aec3 193
mbed_official 130:1dec54e4aec3 194 }
mbed_official 130:1dec54e4aec3 195
mbed_official 130:1dec54e4aec3 196 /**
mbed_official 130:1dec54e4aec3 197 * @brief
mbed_official 130:1dec54e4aec3 198 * @note This function can be called only when the CEN bit is reset.
mbed_official 130:1dec54e4aec3 199 * @param CRS_ErrorLimitValue: specifies the HSI calibration trimming value.
mbed_official 130:1dec54e4aec3 200 * This parameter must be a number between 0 and .
mbed_official 130:1dec54e4aec3 201 * @retval None
mbed_official 130:1dec54e4aec3 202 */
mbed_official 130:1dec54e4aec3 203 void CRS_FrequencyErrorLimitConfig(uint8_t CRS_ErrorLimitValue)
mbed_official 130:1dec54e4aec3 204 {
mbed_official 130:1dec54e4aec3 205 /* Clear FELIM[7:0] bits */
mbed_official 130:1dec54e4aec3 206 CRS->CFGR &= ~CRS_CFGR_FELIM;
mbed_official 130:1dec54e4aec3 207
mbed_official 130:1dec54e4aec3 208 /* Set the FELIM[7:0] bits according to CRS_ErrorLimitValue value */
mbed_official 130:1dec54e4aec3 209 CRS->CFGR |= (uint32_t)CRS_ErrorLimitValue;
mbed_official 130:1dec54e4aec3 210 }
mbed_official 130:1dec54e4aec3 211
mbed_official 130:1dec54e4aec3 212 /**
mbed_official 130:1dec54e4aec3 213 * @brief
mbed_official 130:1dec54e4aec3 214 * @note This function can be called only when the CEN bit is reset.
mbed_official 130:1dec54e4aec3 215 * @param CRS_Prescaler: specifies the HSI calibration trimming value.
mbed_official 130:1dec54e4aec3 216 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 217 * @arg CRS_SYNC_Div1:
mbed_official 130:1dec54e4aec3 218 * @arg CRS_SYNC_Div2:
mbed_official 130:1dec54e4aec3 219 * @arg CRS_SYNC_Div4:
mbed_official 130:1dec54e4aec3 220 * @arg CRS_SYNC_Div8:
mbed_official 130:1dec54e4aec3 221 * @arg CRS_SYNC_Div16:
mbed_official 130:1dec54e4aec3 222 * @arg CRS_SYNC_Div32:
mbed_official 130:1dec54e4aec3 223 * @arg CRS_SYNC_Div64:
mbed_official 130:1dec54e4aec3 224 * @arg CRS_SYNC_Div128:
mbed_official 130:1dec54e4aec3 225 * @retval None
mbed_official 130:1dec54e4aec3 226 */
mbed_official 130:1dec54e4aec3 227 void CRS_SynchronizationPrescalerConfig(uint32_t CRS_Prescaler)
mbed_official 130:1dec54e4aec3 228 {
mbed_official 130:1dec54e4aec3 229 /* Check the parameters */
mbed_official 130:1dec54e4aec3 230 assert_param(IS_CRS_SYNC_DIV(CRS_Prescaler));
mbed_official 130:1dec54e4aec3 231
mbed_official 130:1dec54e4aec3 232 /* Clear SYNCDIV[2:0] bits */
mbed_official 130:1dec54e4aec3 233 CRS->CFGR &= ~CRS_CFGR_SYNCDIV;
mbed_official 130:1dec54e4aec3 234
mbed_official 130:1dec54e4aec3 235 /* Set the CRS_CFGR_SYNCDIV[2:0] bits according to CRS_Prescaler value */
mbed_official 130:1dec54e4aec3 236 CRS->CFGR |= CRS_Prescaler;
mbed_official 130:1dec54e4aec3 237 }
mbed_official 130:1dec54e4aec3 238
mbed_official 130:1dec54e4aec3 239 /**
mbed_official 130:1dec54e4aec3 240 * @brief
mbed_official 130:1dec54e4aec3 241 * @note This function can be called only when the CEN bit is reset.
mbed_official 130:1dec54e4aec3 242 * @param CRS_Source: .
mbed_official 130:1dec54e4aec3 243 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 244 * @arg CRS_SYNCSource_GPIO:
mbed_official 130:1dec54e4aec3 245 * @arg CRS_SYNCSource_LSE:
mbed_official 130:1dec54e4aec3 246 * @arg CRS_SYNCSource_USB:
mbed_official 130:1dec54e4aec3 247 * @retval None
mbed_official 130:1dec54e4aec3 248 */
mbed_official 130:1dec54e4aec3 249 void CRS_SynchronizationSourceConfig(uint32_t CRS_Source)
mbed_official 130:1dec54e4aec3 250 {
mbed_official 130:1dec54e4aec3 251 /* Check the parameters */
mbed_official 130:1dec54e4aec3 252 assert_param(IS_CRS_SYNC_SOURCE(CRS_Source));
mbed_official 130:1dec54e4aec3 253
mbed_official 130:1dec54e4aec3 254 /* Clear SYNCSRC[1:0] bits */
mbed_official 130:1dec54e4aec3 255 CRS->CFGR &= ~CRS_CFGR_SYNCSRC;
mbed_official 130:1dec54e4aec3 256
mbed_official 130:1dec54e4aec3 257 /* Set the SYNCSRC[1:0] bits according to CRS_Source value */
mbed_official 130:1dec54e4aec3 258 CRS->CFGR |= CRS_Source;
mbed_official 130:1dec54e4aec3 259 }
mbed_official 130:1dec54e4aec3 260
mbed_official 130:1dec54e4aec3 261 /**
mbed_official 130:1dec54e4aec3 262 * @brief
mbed_official 130:1dec54e4aec3 263 * @note This function can be called only when the CEN bit is reset.
mbed_official 130:1dec54e4aec3 264 * @param CRS_Polarity: .
mbed_official 130:1dec54e4aec3 265 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 266 * @arg CRS_SYNCPolarity_Rising:
mbed_official 130:1dec54e4aec3 267 * @arg CRS_SYNCPolarity_Falling:
mbed_official 130:1dec54e4aec3 268 * @retval None
mbed_official 130:1dec54e4aec3 269 */
mbed_official 130:1dec54e4aec3 270 void CRS_SynchronizationPolarityConfig(uint32_t CRS_Polarity)
mbed_official 130:1dec54e4aec3 271 {
mbed_official 130:1dec54e4aec3 272 /* Check the parameters */
mbed_official 130:1dec54e4aec3 273 assert_param(IS_CRS_SYNC_POLARITY(CRS_Polarity));
mbed_official 130:1dec54e4aec3 274
mbed_official 130:1dec54e4aec3 275 /* Clear SYNCSPOL bit */
mbed_official 130:1dec54e4aec3 276 CRS->CFGR &= ~CRS_CFGR_SYNCPOL;
mbed_official 130:1dec54e4aec3 277
mbed_official 130:1dec54e4aec3 278 /* Set the SYNCSPOL bits according to CRS_Polarity value */
mbed_official 130:1dec54e4aec3 279 CRS->CFGR |= CRS_Polarity;
mbed_official 130:1dec54e4aec3 280 }
mbed_official 130:1dec54e4aec3 281
mbed_official 130:1dec54e4aec3 282 /**
mbed_official 130:1dec54e4aec3 283 * @brief Returns the Relaod value.
mbed_official 130:1dec54e4aec3 284 * @param None
mbed_official 130:1dec54e4aec3 285 * @retval The reload value
mbed_official 130:1dec54e4aec3 286 */
mbed_official 130:1dec54e4aec3 287 uint32_t CRS_GetReloadValue(void)
mbed_official 130:1dec54e4aec3 288 {
mbed_official 130:1dec54e4aec3 289 return ((uint32_t)(CRS->CFGR & CRS_CFGR_RELOAD));
mbed_official 130:1dec54e4aec3 290 }
mbed_official 130:1dec54e4aec3 291
mbed_official 130:1dec54e4aec3 292 /**
mbed_official 130:1dec54e4aec3 293 * @brief Returns the HSI48 Calibration value.
mbed_official 130:1dec54e4aec3 294 * @param None
mbed_official 130:1dec54e4aec3 295 * @retval The reload value
mbed_official 130:1dec54e4aec3 296 */
mbed_official 130:1dec54e4aec3 297 uint32_t CRS_GetHSI48CalibrationValue(void)
mbed_official 130:1dec54e4aec3 298 {
mbed_official 130:1dec54e4aec3 299 return (((uint32_t)(CRS->CR & CRS_CR_TRIM)) >> 8);
mbed_official 130:1dec54e4aec3 300 }
mbed_official 130:1dec54e4aec3 301
mbed_official 130:1dec54e4aec3 302 /**
mbed_official 130:1dec54e4aec3 303 * @brief Returns the frequency error capture.
mbed_official 130:1dec54e4aec3 304 * @param None
mbed_official 130:1dec54e4aec3 305 * @retval The frequency error capture value
mbed_official 130:1dec54e4aec3 306 */
mbed_official 130:1dec54e4aec3 307 uint32_t CRS_GetFrequencyErrorValue(void)
mbed_official 130:1dec54e4aec3 308 {
mbed_official 130:1dec54e4aec3 309 return ((uint32_t)(CRS->ISR & CRS_ISR_FECAP));
mbed_official 130:1dec54e4aec3 310 }
mbed_official 130:1dec54e4aec3 311
mbed_official 130:1dec54e4aec3 312 /**
mbed_official 130:1dec54e4aec3 313 * @brief Returns the frequency error direction.
mbed_official 130:1dec54e4aec3 314 * @param None
mbed_official 130:1dec54e4aec3 315 * @retval The frequency error direction. The returned value can be one
mbed_official 130:1dec54e4aec3 316 * of the following values:
mbed_official 130:1dec54e4aec3 317 * - 0x00: Up counting
mbed_official 130:1dec54e4aec3 318 * - 0x8000: Down counting
mbed_official 130:1dec54e4aec3 319 */
mbed_official 130:1dec54e4aec3 320 uint32_t CRS_GetFrequencyErrorDirection(void)
mbed_official 130:1dec54e4aec3 321 {
mbed_official 130:1dec54e4aec3 322 return ((uint32_t)(CRS->ISR & CRS_ISR_FEDIR));
mbed_official 130:1dec54e4aec3 323 }
mbed_official 130:1dec54e4aec3 324
mbed_official 130:1dec54e4aec3 325 /** @defgroup CRS_Group2 Interrupts and flags management functions
mbed_official 130:1dec54e4aec3 326 * @brief Interrupts and flags management functions
mbed_official 130:1dec54e4aec3 327 *
mbed_official 130:1dec54e4aec3 328 @verbatim
mbed_official 130:1dec54e4aec3 329 ===============================================================================
mbed_official 130:1dec54e4aec3 330 ##### Interrupts and flags management functions #####
mbed_official 130:1dec54e4aec3 331 ===============================================================================
mbed_official 130:1dec54e4aec3 332 @endverbatim
mbed_official 130:1dec54e4aec3 333 * @{
mbed_official 130:1dec54e4aec3 334 */
mbed_official 130:1dec54e4aec3 335 /**
mbed_official 130:1dec54e4aec3 336 * @brief Enables or disables the specified CRS interrupts.
mbed_official 130:1dec54e4aec3 337 * @param CRS_IT: specifies the RCC interrupt sources to be enabled or disabled.
mbed_official 130:1dec54e4aec3 338 * This parameter can be any combination of the following values:
mbed_official 130:1dec54e4aec3 339 * @arg CRS_IT_SYNCOK:
mbed_official 130:1dec54e4aec3 340 * @arg CRS_IT_SYNCWARN:
mbed_official 130:1dec54e4aec3 341 * @arg CRS_IT_ERR:
mbed_official 130:1dec54e4aec3 342 * @arg CRS_IT_ESYNC:
mbed_official 130:1dec54e4aec3 343 * @param NewState: new state of the specified CRS interrupts.
mbed_official 130:1dec54e4aec3 344 * This parameter can be: ENABLE or DISABLE.
mbed_official 130:1dec54e4aec3 345 * @retval None
mbed_official 130:1dec54e4aec3 346 */
mbed_official 130:1dec54e4aec3 347 void CRS_ITConfig(uint32_t CRS_IT, FunctionalState NewState)
mbed_official 130:1dec54e4aec3 348 {
mbed_official 130:1dec54e4aec3 349 /* Check the parameters */
mbed_official 130:1dec54e4aec3 350 assert_param(IS_CRS_IT(CRS_IT));
mbed_official 130:1dec54e4aec3 351 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 130:1dec54e4aec3 352
mbed_official 130:1dec54e4aec3 353 if (NewState != DISABLE)
mbed_official 130:1dec54e4aec3 354 {
mbed_official 130:1dec54e4aec3 355 CRS->CR |= CRS_IT;
mbed_official 130:1dec54e4aec3 356 }
mbed_official 130:1dec54e4aec3 357 else
mbed_official 130:1dec54e4aec3 358 {
mbed_official 130:1dec54e4aec3 359 CRS->CR &= ~CRS_IT;
mbed_official 130:1dec54e4aec3 360 }
mbed_official 130:1dec54e4aec3 361 }
mbed_official 130:1dec54e4aec3 362
mbed_official 130:1dec54e4aec3 363 /**
mbed_official 130:1dec54e4aec3 364 * @brief Checks whether the specified CRS flag is set or not.
mbed_official 130:1dec54e4aec3 365 * @param CRS_FLAG: specifies the flag to check.
mbed_official 130:1dec54e4aec3 366 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 367 * @arg CRS_FLAG_SYNCOK:
mbed_official 130:1dec54e4aec3 368 * @arg CRS_FLAG_SYNCWARN:
mbed_official 130:1dec54e4aec3 369 * @arg CRS_FLAG_ERR:
mbed_official 130:1dec54e4aec3 370 * @arg CRS_FLAG_ESYNC:
mbed_official 130:1dec54e4aec3 371 * @arg CRS_FLAG_TRIMOVF:
mbed_official 130:1dec54e4aec3 372 * @arg CRS_FLAG_SYNCERR:
mbed_official 130:1dec54e4aec3 373 * @arg CRS_FLAG_SYNCMISS:
mbed_official 130:1dec54e4aec3 374 * @retval The new state of CRS_FLAG (SET or RESET).
mbed_official 130:1dec54e4aec3 375 */
mbed_official 130:1dec54e4aec3 376 FlagStatus CRS_GetFlagStatus(uint32_t CRS_FLAG)
mbed_official 130:1dec54e4aec3 377 {
mbed_official 130:1dec54e4aec3 378 /* Check the parameters */
mbed_official 130:1dec54e4aec3 379 assert_param(IS_CRS_FLAG(CRS_FLAG));
mbed_official 130:1dec54e4aec3 380
mbed_official 130:1dec54e4aec3 381 return ((FlagStatus)(CRS->ISR & CRS_FLAG));
mbed_official 130:1dec54e4aec3 382 }
mbed_official 130:1dec54e4aec3 383
mbed_official 130:1dec54e4aec3 384 /**
mbed_official 130:1dec54e4aec3 385 * @brief Clears the CRS specified FLAG.
mbed_official 130:1dec54e4aec3 386 * @param CRS_FLAG: specifies the flag to check.
mbed_official 130:1dec54e4aec3 387 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 388 * @arg CRS_FLAG_SYNCOK:
mbed_official 130:1dec54e4aec3 389 * @arg CRS_FLAG_SYNCWARN:
mbed_official 130:1dec54e4aec3 390 * @arg CRS_FLAG_ERR:
mbed_official 130:1dec54e4aec3 391 * @arg CRS_FLAG_ESYNC:
mbed_official 130:1dec54e4aec3 392 * @arg CRS_FLAG_TRIMOVF:
mbed_official 130:1dec54e4aec3 393 * @arg CRS_FLAG_SYNCERR:
mbed_official 130:1dec54e4aec3 394 * @arg CRS_FLAG_SYNCMISS:
mbed_official 130:1dec54e4aec3 395 * @retval None
mbed_official 130:1dec54e4aec3 396 */
mbed_official 130:1dec54e4aec3 397 void CRS_ClearFlag(uint32_t CRS_FLAG)
mbed_official 130:1dec54e4aec3 398 {
mbed_official 130:1dec54e4aec3 399 /* Check the parameters */
mbed_official 130:1dec54e4aec3 400 assert_param(IS_CRS_FLAG(CRS_FLAG));
mbed_official 130:1dec54e4aec3 401
mbed_official 130:1dec54e4aec3 402 if ((CRS_FLAG & FLAG_MASK)!= 0)
mbed_official 130:1dec54e4aec3 403 {
mbed_official 130:1dec54e4aec3 404 CRS->ICR |= CRS_ICR_ERRC;
mbed_official 130:1dec54e4aec3 405 }
mbed_official 130:1dec54e4aec3 406 else
mbed_official 130:1dec54e4aec3 407 {
mbed_official 130:1dec54e4aec3 408 CRS->ICR |= CRS_FLAG;
mbed_official 130:1dec54e4aec3 409 }
mbed_official 130:1dec54e4aec3 410 }
mbed_official 130:1dec54e4aec3 411
mbed_official 130:1dec54e4aec3 412 /**
mbed_official 130:1dec54e4aec3 413 * @brief Checks whether the specified CRS IT pending bit is set or not.
mbed_official 130:1dec54e4aec3 414 * @param CRS_IT: specifies the IT pending bit to check.
mbed_official 130:1dec54e4aec3 415 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 416 * @arg CRS_IT_SYNCOK:
mbed_official 130:1dec54e4aec3 417 * @arg CRS_IT_SYNCWARN:
mbed_official 130:1dec54e4aec3 418 * @arg CRS_IT_ERR:
mbed_official 130:1dec54e4aec3 419 * @arg CRS_IT_ESYNC:
mbed_official 130:1dec54e4aec3 420 * @arg CRS_IT_TRIMOVF:
mbed_official 130:1dec54e4aec3 421 * @arg CRS_IT_SYNCERR:
mbed_official 130:1dec54e4aec3 422 * @arg CRS_IT_SYNCMISS:
mbed_official 130:1dec54e4aec3 423 * @retval The new state of CRS_IT (SET or RESET).
mbed_official 130:1dec54e4aec3 424 */
mbed_official 130:1dec54e4aec3 425 ITStatus CRS_GetITStatus(uint32_t CRS_IT)
mbed_official 130:1dec54e4aec3 426 {
mbed_official 130:1dec54e4aec3 427 /* Check the parameters */
mbed_official 130:1dec54e4aec3 428 assert_param(IS_CRS_GET_IT(CRS_IT));
mbed_official 130:1dec54e4aec3 429
mbed_official 130:1dec54e4aec3 430 return ((ITStatus)(CRS->ISR & CRS_IT));
mbed_official 130:1dec54e4aec3 431 }
mbed_official 130:1dec54e4aec3 432
mbed_official 130:1dec54e4aec3 433 /**
mbed_official 130:1dec54e4aec3 434 * @brief Clears the CRS specified IT pending bi.
mbed_official 130:1dec54e4aec3 435 * @param CRS_FLAG: specifies the IT pending bi to clear.
mbed_official 130:1dec54e4aec3 436 * This parameter can be one of the following values:
mbed_official 130:1dec54e4aec3 437 * @arg CRS_IT_SYNCOK:
mbed_official 130:1dec54e4aec3 438 * @arg CRS_IT_SYNCWARN:
mbed_official 130:1dec54e4aec3 439 * @arg CRS_IT_ERR:
mbed_official 130:1dec54e4aec3 440 * @arg CRS_IT_ESYNC:
mbed_official 130:1dec54e4aec3 441 * @arg CRS_IT_TRIMOVF:
mbed_official 130:1dec54e4aec3 442 * @arg CRS_IT_SYNCERR:
mbed_official 130:1dec54e4aec3 443 * @arg CRS_IT_SYNCMISS:
mbed_official 130:1dec54e4aec3 444 * @retval None
mbed_official 130:1dec54e4aec3 445 */
mbed_official 130:1dec54e4aec3 446 void CRS_ClearITPendingBit(uint32_t CRS_IT)
mbed_official 130:1dec54e4aec3 447 {
mbed_official 130:1dec54e4aec3 448 /* Check the parameters */
mbed_official 130:1dec54e4aec3 449 assert_param(IS_CRS_CLEAR_IT(CRS_IT));
mbed_official 130:1dec54e4aec3 450
mbed_official 130:1dec54e4aec3 451 if ((CRS_IT & FLAG_MASK)!= 0)
mbed_official 130:1dec54e4aec3 452 {
mbed_official 130:1dec54e4aec3 453 CRS->ICR |= CRS_ICR_ERRC;
mbed_official 130:1dec54e4aec3 454 }
mbed_official 130:1dec54e4aec3 455 else
mbed_official 130:1dec54e4aec3 456 {
mbed_official 130:1dec54e4aec3 457 CRS->ICR |= CRS_IT;
mbed_official 130:1dec54e4aec3 458 }
mbed_official 130:1dec54e4aec3 459 }
mbed_official 130:1dec54e4aec3 460 /**
mbed_official 130:1dec54e4aec3 461 * @}
mbed_official 130:1dec54e4aec3 462 */
mbed_official 130:1dec54e4aec3 463
mbed_official 130:1dec54e4aec3 464 /**
mbed_official 130:1dec54e4aec3 465 * @}
mbed_official 130:1dec54e4aec3 466 */
mbed_official 130:1dec54e4aec3 467
mbed_official 130:1dec54e4aec3 468 /**
mbed_official 130:1dec54e4aec3 469 * @}
mbed_official 130:1dec54e4aec3 470 */
mbed_official 130:1dec54e4aec3 471
mbed_official 130:1dec54e4aec3 472 /**
mbed_official 130:1dec54e4aec3 473 * @}
mbed_official 130:1dec54e4aec3 474 */
mbed_official 130:1dec54e4aec3 475
mbed_official 130:1dec54e4aec3 476 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/