mbed library sources

Dependents:   frdm_kl05z_gpio_test

Fork of mbed-src by mbed official

Committer:
mbed_official
Date:
Wed Mar 19 16:00:09 2014 +0000
Revision:
126:549ba18ddd81
Synchronized with git revision cf8fd1cf86b0cd85131dd24a6ded21cc6fe04827

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

Conflicts:
workspace_tools/targets.py

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 126:549ba18ddd81 1 /**
mbed_official 126:549ba18ddd81 2 ******************************************************************************
mbed_official 126:549ba18ddd81 3 * @file stm32f10x_adc.c
mbed_official 126:549ba18ddd81 4 * @author MCD Application Team
mbed_official 126:549ba18ddd81 5 * @version V3.6.1
mbed_official 126:549ba18ddd81 6 * @date 05-March-2012
mbed_official 126:549ba18ddd81 7 * @brief This file provides all the ADC firmware functions.
mbed_official 126:549ba18ddd81 8 *******************************************************************************
mbed_official 126:549ba18ddd81 9 * Copyright (c) 2014, STMicroelectronics
mbed_official 126:549ba18ddd81 10 * All rights reserved.
mbed_official 126:549ba18ddd81 11 *
mbed_official 126:549ba18ddd81 12 * Redistribution and use in source and binary forms, with or without
mbed_official 126:549ba18ddd81 13 * modification, are permitted provided that the following conditions are met:
mbed_official 126:549ba18ddd81 14 *
mbed_official 126:549ba18ddd81 15 * 1. Redistributions of source code must retain the above copyright notice,
mbed_official 126:549ba18ddd81 16 * this list of conditions and the following disclaimer.
mbed_official 126:549ba18ddd81 17 * 2. Redistributions in binary form must reproduce the above copyright notice,
mbed_official 126:549ba18ddd81 18 * this list of conditions and the following disclaimer in the documentation
mbed_official 126:549ba18ddd81 19 * and/or other materials provided with the distribution.
mbed_official 126:549ba18ddd81 20 * 3. Neither the name of STMicroelectronics nor the names of its contributors
mbed_official 126:549ba18ddd81 21 * may be used to endorse or promote products derived from this software
mbed_official 126:549ba18ddd81 22 * without specific prior written permission.
mbed_official 126:549ba18ddd81 23 *
mbed_official 126:549ba18ddd81 24 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 126:549ba18ddd81 25 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 126:549ba18ddd81 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 126:549ba18ddd81 27 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
mbed_official 126:549ba18ddd81 28 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
mbed_official 126:549ba18ddd81 29 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
mbed_official 126:549ba18ddd81 30 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
mbed_official 126:549ba18ddd81 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
mbed_official 126:549ba18ddd81 32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
mbed_official 126:549ba18ddd81 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 126:549ba18ddd81 34 *******************************************************************************
mbed_official 126:549ba18ddd81 35 */
mbed_official 126:549ba18ddd81 36
mbed_official 126:549ba18ddd81 37 /* Includes ------------------------------------------------------------------*/
mbed_official 126:549ba18ddd81 38 #include "stm32f10x_adc.h"
mbed_official 126:549ba18ddd81 39 #include "stm32f10x_rcc.h"
mbed_official 126:549ba18ddd81 40
mbed_official 126:549ba18ddd81 41 /** @addtogroup STM32F10x_StdPeriph_Driver
mbed_official 126:549ba18ddd81 42 * @{
mbed_official 126:549ba18ddd81 43 */
mbed_official 126:549ba18ddd81 44
mbed_official 126:549ba18ddd81 45 /** @defgroup ADC
mbed_official 126:549ba18ddd81 46 * @brief ADC driver modules
mbed_official 126:549ba18ddd81 47 * @{
mbed_official 126:549ba18ddd81 48 */
mbed_official 126:549ba18ddd81 49
mbed_official 126:549ba18ddd81 50 /** @defgroup ADC_Private_TypesDefinitions
mbed_official 126:549ba18ddd81 51 * @{
mbed_official 126:549ba18ddd81 52 */
mbed_official 126:549ba18ddd81 53
mbed_official 126:549ba18ddd81 54 /**
mbed_official 126:549ba18ddd81 55 * @}
mbed_official 126:549ba18ddd81 56 */
mbed_official 126:549ba18ddd81 57
mbed_official 126:549ba18ddd81 58 /** @defgroup ADC_Private_Defines
mbed_official 126:549ba18ddd81 59 * @{
mbed_official 126:549ba18ddd81 60 */
mbed_official 126:549ba18ddd81 61
mbed_official 126:549ba18ddd81 62 /* ADC DISCNUM mask */
mbed_official 126:549ba18ddd81 63 #define CR1_DISCNUM_Reset ((uint32_t)0xFFFF1FFF)
mbed_official 126:549ba18ddd81 64
mbed_official 126:549ba18ddd81 65 /* ADC DISCEN mask */
mbed_official 126:549ba18ddd81 66 #define CR1_DISCEN_Set ((uint32_t)0x00000800)
mbed_official 126:549ba18ddd81 67 #define CR1_DISCEN_Reset ((uint32_t)0xFFFFF7FF)
mbed_official 126:549ba18ddd81 68
mbed_official 126:549ba18ddd81 69 /* ADC JAUTO mask */
mbed_official 126:549ba18ddd81 70 #define CR1_JAUTO_Set ((uint32_t)0x00000400)
mbed_official 126:549ba18ddd81 71 #define CR1_JAUTO_Reset ((uint32_t)0xFFFFFBFF)
mbed_official 126:549ba18ddd81 72
mbed_official 126:549ba18ddd81 73 /* ADC JDISCEN mask */
mbed_official 126:549ba18ddd81 74 #define CR1_JDISCEN_Set ((uint32_t)0x00001000)
mbed_official 126:549ba18ddd81 75 #define CR1_JDISCEN_Reset ((uint32_t)0xFFFFEFFF)
mbed_official 126:549ba18ddd81 76
mbed_official 126:549ba18ddd81 77 /* ADC AWDCH mask */
mbed_official 126:549ba18ddd81 78 #define CR1_AWDCH_Reset ((uint32_t)0xFFFFFFE0)
mbed_official 126:549ba18ddd81 79
mbed_official 126:549ba18ddd81 80 /* ADC Analog watchdog enable mode mask */
mbed_official 126:549ba18ddd81 81 #define CR1_AWDMode_Reset ((uint32_t)0xFF3FFDFF)
mbed_official 126:549ba18ddd81 82
mbed_official 126:549ba18ddd81 83 /* CR1 register Mask */
mbed_official 126:549ba18ddd81 84 #define CR1_CLEAR_Mask ((uint32_t)0xFFF0FEFF)
mbed_official 126:549ba18ddd81 85
mbed_official 126:549ba18ddd81 86 /* ADC ADON mask */
mbed_official 126:549ba18ddd81 87 #define CR2_ADON_Set ((uint32_t)0x00000001)
mbed_official 126:549ba18ddd81 88 #define CR2_ADON_Reset ((uint32_t)0xFFFFFFFE)
mbed_official 126:549ba18ddd81 89
mbed_official 126:549ba18ddd81 90 /* ADC DMA mask */
mbed_official 126:549ba18ddd81 91 #define CR2_DMA_Set ((uint32_t)0x00000100)
mbed_official 126:549ba18ddd81 92 #define CR2_DMA_Reset ((uint32_t)0xFFFFFEFF)
mbed_official 126:549ba18ddd81 93
mbed_official 126:549ba18ddd81 94 /* ADC RSTCAL mask */
mbed_official 126:549ba18ddd81 95 #define CR2_RSTCAL_Set ((uint32_t)0x00000008)
mbed_official 126:549ba18ddd81 96
mbed_official 126:549ba18ddd81 97 /* ADC CAL mask */
mbed_official 126:549ba18ddd81 98 #define CR2_CAL_Set ((uint32_t)0x00000004)
mbed_official 126:549ba18ddd81 99
mbed_official 126:549ba18ddd81 100 /* ADC SWSTART mask */
mbed_official 126:549ba18ddd81 101 #define CR2_SWSTART_Set ((uint32_t)0x00400000)
mbed_official 126:549ba18ddd81 102
mbed_official 126:549ba18ddd81 103 /* ADC EXTTRIG mask */
mbed_official 126:549ba18ddd81 104 #define CR2_EXTTRIG_Set ((uint32_t)0x00100000)
mbed_official 126:549ba18ddd81 105 #define CR2_EXTTRIG_Reset ((uint32_t)0xFFEFFFFF)
mbed_official 126:549ba18ddd81 106
mbed_official 126:549ba18ddd81 107 /* ADC Software start mask */
mbed_official 126:549ba18ddd81 108 #define CR2_EXTTRIG_SWSTART_Set ((uint32_t)0x00500000)
mbed_official 126:549ba18ddd81 109 #define CR2_EXTTRIG_SWSTART_Reset ((uint32_t)0xFFAFFFFF)
mbed_official 126:549ba18ddd81 110
mbed_official 126:549ba18ddd81 111 /* ADC JEXTSEL mask */
mbed_official 126:549ba18ddd81 112 #define CR2_JEXTSEL_Reset ((uint32_t)0xFFFF8FFF)
mbed_official 126:549ba18ddd81 113
mbed_official 126:549ba18ddd81 114 /* ADC JEXTTRIG mask */
mbed_official 126:549ba18ddd81 115 #define CR2_JEXTTRIG_Set ((uint32_t)0x00008000)
mbed_official 126:549ba18ddd81 116 #define CR2_JEXTTRIG_Reset ((uint32_t)0xFFFF7FFF)
mbed_official 126:549ba18ddd81 117
mbed_official 126:549ba18ddd81 118 /* ADC JSWSTART mask */
mbed_official 126:549ba18ddd81 119 #define CR2_JSWSTART_Set ((uint32_t)0x00200000)
mbed_official 126:549ba18ddd81 120
mbed_official 126:549ba18ddd81 121 /* ADC injected software start mask */
mbed_official 126:549ba18ddd81 122 #define CR2_JEXTTRIG_JSWSTART_Set ((uint32_t)0x00208000)
mbed_official 126:549ba18ddd81 123 #define CR2_JEXTTRIG_JSWSTART_Reset ((uint32_t)0xFFDF7FFF)
mbed_official 126:549ba18ddd81 124
mbed_official 126:549ba18ddd81 125 /* ADC TSPD mask */
mbed_official 126:549ba18ddd81 126 #define CR2_TSVREFE_Set ((uint32_t)0x00800000)
mbed_official 126:549ba18ddd81 127 #define CR2_TSVREFE_Reset ((uint32_t)0xFF7FFFFF)
mbed_official 126:549ba18ddd81 128
mbed_official 126:549ba18ddd81 129 /* CR2 register Mask */
mbed_official 126:549ba18ddd81 130 #define CR2_CLEAR_Mask ((uint32_t)0xFFF1F7FD)
mbed_official 126:549ba18ddd81 131
mbed_official 126:549ba18ddd81 132 /* ADC SQx mask */
mbed_official 126:549ba18ddd81 133 #define SQR3_SQ_Set ((uint32_t)0x0000001F)
mbed_official 126:549ba18ddd81 134 #define SQR2_SQ_Set ((uint32_t)0x0000001F)
mbed_official 126:549ba18ddd81 135 #define SQR1_SQ_Set ((uint32_t)0x0000001F)
mbed_official 126:549ba18ddd81 136
mbed_official 126:549ba18ddd81 137 /* SQR1 register Mask */
mbed_official 126:549ba18ddd81 138 #define SQR1_CLEAR_Mask ((uint32_t)0xFF0FFFFF)
mbed_official 126:549ba18ddd81 139
mbed_official 126:549ba18ddd81 140 /* ADC JSQx mask */
mbed_official 126:549ba18ddd81 141 #define JSQR_JSQ_Set ((uint32_t)0x0000001F)
mbed_official 126:549ba18ddd81 142
mbed_official 126:549ba18ddd81 143 /* ADC JL mask */
mbed_official 126:549ba18ddd81 144 #define JSQR_JL_Set ((uint32_t)0x00300000)
mbed_official 126:549ba18ddd81 145 #define JSQR_JL_Reset ((uint32_t)0xFFCFFFFF)
mbed_official 126:549ba18ddd81 146
mbed_official 126:549ba18ddd81 147 /* ADC SMPx mask */
mbed_official 126:549ba18ddd81 148 #define SMPR1_SMP_Set ((uint32_t)0x00000007)
mbed_official 126:549ba18ddd81 149 #define SMPR2_SMP_Set ((uint32_t)0x00000007)
mbed_official 126:549ba18ddd81 150
mbed_official 126:549ba18ddd81 151 /* ADC JDRx registers offset */
mbed_official 126:549ba18ddd81 152 #define JDR_Offset ((uint8_t)0x28)
mbed_official 126:549ba18ddd81 153
mbed_official 126:549ba18ddd81 154 /* ADC1 DR register base address */
mbed_official 126:549ba18ddd81 155 #define DR_ADDRESS ((uint32_t)0x4001244C)
mbed_official 126:549ba18ddd81 156
mbed_official 126:549ba18ddd81 157 /**
mbed_official 126:549ba18ddd81 158 * @}
mbed_official 126:549ba18ddd81 159 */
mbed_official 126:549ba18ddd81 160
mbed_official 126:549ba18ddd81 161 /** @defgroup ADC_Private_Macros
mbed_official 126:549ba18ddd81 162 * @{
mbed_official 126:549ba18ddd81 163 */
mbed_official 126:549ba18ddd81 164
mbed_official 126:549ba18ddd81 165 /**
mbed_official 126:549ba18ddd81 166 * @}
mbed_official 126:549ba18ddd81 167 */
mbed_official 126:549ba18ddd81 168
mbed_official 126:549ba18ddd81 169 /** @defgroup ADC_Private_Variables
mbed_official 126:549ba18ddd81 170 * @{
mbed_official 126:549ba18ddd81 171 */
mbed_official 126:549ba18ddd81 172
mbed_official 126:549ba18ddd81 173 /**
mbed_official 126:549ba18ddd81 174 * @}
mbed_official 126:549ba18ddd81 175 */
mbed_official 126:549ba18ddd81 176
mbed_official 126:549ba18ddd81 177 /** @defgroup ADC_Private_FunctionPrototypes
mbed_official 126:549ba18ddd81 178 * @{
mbed_official 126:549ba18ddd81 179 */
mbed_official 126:549ba18ddd81 180
mbed_official 126:549ba18ddd81 181 /**
mbed_official 126:549ba18ddd81 182 * @}
mbed_official 126:549ba18ddd81 183 */
mbed_official 126:549ba18ddd81 184
mbed_official 126:549ba18ddd81 185 /** @defgroup ADC_Private_Functions
mbed_official 126:549ba18ddd81 186 * @{
mbed_official 126:549ba18ddd81 187 */
mbed_official 126:549ba18ddd81 188
mbed_official 126:549ba18ddd81 189 /**
mbed_official 126:549ba18ddd81 190 * @brief Deinitializes the ADCx peripheral registers to their default reset values.
mbed_official 126:549ba18ddd81 191 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 192 * @retval None
mbed_official 126:549ba18ddd81 193 */
mbed_official 126:549ba18ddd81 194 void ADC_DeInit(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 195 {
mbed_official 126:549ba18ddd81 196 /* Check the parameters */
mbed_official 126:549ba18ddd81 197 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 198
mbed_official 126:549ba18ddd81 199 if (ADCx == ADC1)
mbed_official 126:549ba18ddd81 200 {
mbed_official 126:549ba18ddd81 201 /* Enable ADC1 reset state */
mbed_official 126:549ba18ddd81 202 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, ENABLE);
mbed_official 126:549ba18ddd81 203 /* Release ADC1 from reset state */
mbed_official 126:549ba18ddd81 204 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC1, DISABLE);
mbed_official 126:549ba18ddd81 205 }
mbed_official 126:549ba18ddd81 206 else if (ADCx == ADC2)
mbed_official 126:549ba18ddd81 207 {
mbed_official 126:549ba18ddd81 208 /* Enable ADC2 reset state */
mbed_official 126:549ba18ddd81 209 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, ENABLE);
mbed_official 126:549ba18ddd81 210 /* Release ADC2 from reset state */
mbed_official 126:549ba18ddd81 211 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC2, DISABLE);
mbed_official 126:549ba18ddd81 212 }
mbed_official 126:549ba18ddd81 213 else
mbed_official 126:549ba18ddd81 214 {
mbed_official 126:549ba18ddd81 215 if (ADCx == ADC3)
mbed_official 126:549ba18ddd81 216 {
mbed_official 126:549ba18ddd81 217 /* Enable ADC3 reset state */
mbed_official 126:549ba18ddd81 218 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3, ENABLE);
mbed_official 126:549ba18ddd81 219 /* Release ADC3 from reset state */
mbed_official 126:549ba18ddd81 220 RCC_APB2PeriphResetCmd(RCC_APB2Periph_ADC3, DISABLE);
mbed_official 126:549ba18ddd81 221 }
mbed_official 126:549ba18ddd81 222 }
mbed_official 126:549ba18ddd81 223 }
mbed_official 126:549ba18ddd81 224
mbed_official 126:549ba18ddd81 225 /**
mbed_official 126:549ba18ddd81 226 * @brief Initializes the ADCx peripheral according to the specified parameters
mbed_official 126:549ba18ddd81 227 * in the ADC_InitStruct.
mbed_official 126:549ba18ddd81 228 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 229 * @param ADC_InitStruct: pointer to an ADC_InitTypeDef structure that contains
mbed_official 126:549ba18ddd81 230 * the configuration information for the specified ADC peripheral.
mbed_official 126:549ba18ddd81 231 * @retval None
mbed_official 126:549ba18ddd81 232 */
mbed_official 126:549ba18ddd81 233 void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct)
mbed_official 126:549ba18ddd81 234 {
mbed_official 126:549ba18ddd81 235 uint32_t tmpreg1 = 0;
mbed_official 126:549ba18ddd81 236 uint8_t tmpreg2 = 0;
mbed_official 126:549ba18ddd81 237 /* Check the parameters */
mbed_official 126:549ba18ddd81 238 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 239 assert_param(IS_ADC_MODE(ADC_InitStruct->ADC_Mode));
mbed_official 126:549ba18ddd81 240 assert_param(IS_FUNCTIONAL_STATE(ADC_InitStruct->ADC_ScanConvMode));
mbed_official 126:549ba18ddd81 241 assert_param(IS_FUNCTIONAL_STATE(ADC_InitStruct->ADC_ContinuousConvMode));
mbed_official 126:549ba18ddd81 242 assert_param(IS_ADC_EXT_TRIG(ADC_InitStruct->ADC_ExternalTrigConv));
mbed_official 126:549ba18ddd81 243 assert_param(IS_ADC_DATA_ALIGN(ADC_InitStruct->ADC_DataAlign));
mbed_official 126:549ba18ddd81 244 assert_param(IS_ADC_REGULAR_LENGTH(ADC_InitStruct->ADC_NbrOfChannel));
mbed_official 126:549ba18ddd81 245
mbed_official 126:549ba18ddd81 246 /*---------------------------- ADCx CR1 Configuration -----------------*/
mbed_official 126:549ba18ddd81 247 /* Get the ADCx CR1 value */
mbed_official 126:549ba18ddd81 248 tmpreg1 = ADCx->CR1;
mbed_official 126:549ba18ddd81 249 /* Clear DUALMOD and SCAN bits */
mbed_official 126:549ba18ddd81 250 tmpreg1 &= CR1_CLEAR_Mask;
mbed_official 126:549ba18ddd81 251 /* Configure ADCx: Dual mode and scan conversion mode */
mbed_official 126:549ba18ddd81 252 /* Set DUALMOD bits according to ADC_Mode value */
mbed_official 126:549ba18ddd81 253 /* Set SCAN bit according to ADC_ScanConvMode value */
mbed_official 126:549ba18ddd81 254 tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_Mode | ((uint32_t)ADC_InitStruct->ADC_ScanConvMode << 8));
mbed_official 126:549ba18ddd81 255 /* Write to ADCx CR1 */
mbed_official 126:549ba18ddd81 256 ADCx->CR1 = tmpreg1;
mbed_official 126:549ba18ddd81 257
mbed_official 126:549ba18ddd81 258 /*---------------------------- ADCx CR2 Configuration -----------------*/
mbed_official 126:549ba18ddd81 259 /* Get the ADCx CR2 value */
mbed_official 126:549ba18ddd81 260 tmpreg1 = ADCx->CR2;
mbed_official 126:549ba18ddd81 261 /* Clear CONT, ALIGN and EXTSEL bits */
mbed_official 126:549ba18ddd81 262 tmpreg1 &= CR2_CLEAR_Mask;
mbed_official 126:549ba18ddd81 263 /* Configure ADCx: external trigger event and continuous conversion mode */
mbed_official 126:549ba18ddd81 264 /* Set ALIGN bit according to ADC_DataAlign value */
mbed_official 126:549ba18ddd81 265 /* Set EXTSEL bits according to ADC_ExternalTrigConv value */
mbed_official 126:549ba18ddd81 266 /* Set CONT bit according to ADC_ContinuousConvMode value */
mbed_official 126:549ba18ddd81 267 tmpreg1 |= (uint32_t)(ADC_InitStruct->ADC_DataAlign | ADC_InitStruct->ADC_ExternalTrigConv |
mbed_official 126:549ba18ddd81 268 ((uint32_t)ADC_InitStruct->ADC_ContinuousConvMode << 1));
mbed_official 126:549ba18ddd81 269 /* Write to ADCx CR2 */
mbed_official 126:549ba18ddd81 270 ADCx->CR2 = tmpreg1;
mbed_official 126:549ba18ddd81 271
mbed_official 126:549ba18ddd81 272 /*---------------------------- ADCx SQR1 Configuration -----------------*/
mbed_official 126:549ba18ddd81 273 /* Get the ADCx SQR1 value */
mbed_official 126:549ba18ddd81 274 tmpreg1 = ADCx->SQR1;
mbed_official 126:549ba18ddd81 275 /* Clear L bits */
mbed_official 126:549ba18ddd81 276 tmpreg1 &= SQR1_CLEAR_Mask;
mbed_official 126:549ba18ddd81 277 /* Configure ADCx: regular channel sequence length */
mbed_official 126:549ba18ddd81 278 /* Set L bits according to ADC_NbrOfChannel value */
mbed_official 126:549ba18ddd81 279 tmpreg2 |= (uint8_t) (ADC_InitStruct->ADC_NbrOfChannel - (uint8_t)1);
mbed_official 126:549ba18ddd81 280 tmpreg1 |= (uint32_t)tmpreg2 << 20;
mbed_official 126:549ba18ddd81 281 /* Write to ADCx SQR1 */
mbed_official 126:549ba18ddd81 282 ADCx->SQR1 = tmpreg1;
mbed_official 126:549ba18ddd81 283 }
mbed_official 126:549ba18ddd81 284
mbed_official 126:549ba18ddd81 285 /**
mbed_official 126:549ba18ddd81 286 * @brief Fills each ADC_InitStruct member with its default value.
mbed_official 126:549ba18ddd81 287 * @param ADC_InitStruct : pointer to an ADC_InitTypeDef structure which will be initialized.
mbed_official 126:549ba18ddd81 288 * @retval None
mbed_official 126:549ba18ddd81 289 */
mbed_official 126:549ba18ddd81 290 void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct)
mbed_official 126:549ba18ddd81 291 {
mbed_official 126:549ba18ddd81 292 /* Reset ADC init structure parameters values */
mbed_official 126:549ba18ddd81 293 /* Initialize the ADC_Mode member */
mbed_official 126:549ba18ddd81 294 ADC_InitStruct->ADC_Mode = ADC_Mode_Independent;
mbed_official 126:549ba18ddd81 295 /* initialize the ADC_ScanConvMode member */
mbed_official 126:549ba18ddd81 296 ADC_InitStruct->ADC_ScanConvMode = DISABLE;
mbed_official 126:549ba18ddd81 297 /* Initialize the ADC_ContinuousConvMode member */
mbed_official 126:549ba18ddd81 298 ADC_InitStruct->ADC_ContinuousConvMode = DISABLE;
mbed_official 126:549ba18ddd81 299 /* Initialize the ADC_ExternalTrigConv member */
mbed_official 126:549ba18ddd81 300 ADC_InitStruct->ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
mbed_official 126:549ba18ddd81 301 /* Initialize the ADC_DataAlign member */
mbed_official 126:549ba18ddd81 302 ADC_InitStruct->ADC_DataAlign = ADC_DataAlign_Right;
mbed_official 126:549ba18ddd81 303 /* Initialize the ADC_NbrOfChannel member */
mbed_official 126:549ba18ddd81 304 ADC_InitStruct->ADC_NbrOfChannel = 1;
mbed_official 126:549ba18ddd81 305 }
mbed_official 126:549ba18ddd81 306
mbed_official 126:549ba18ddd81 307 /**
mbed_official 126:549ba18ddd81 308 * @brief Enables or disables the specified ADC peripheral.
mbed_official 126:549ba18ddd81 309 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 310 * @param NewState: new state of the ADCx peripheral.
mbed_official 126:549ba18ddd81 311 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 312 * @retval None
mbed_official 126:549ba18ddd81 313 */
mbed_official 126:549ba18ddd81 314 void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 315 {
mbed_official 126:549ba18ddd81 316 /* Check the parameters */
mbed_official 126:549ba18ddd81 317 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 318 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 319 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 320 {
mbed_official 126:549ba18ddd81 321 /* Set the ADON bit to wake up the ADC from power down mode */
mbed_official 126:549ba18ddd81 322 ADCx->CR2 |= CR2_ADON_Set;
mbed_official 126:549ba18ddd81 323 }
mbed_official 126:549ba18ddd81 324 else
mbed_official 126:549ba18ddd81 325 {
mbed_official 126:549ba18ddd81 326 /* Disable the selected ADC peripheral */
mbed_official 126:549ba18ddd81 327 ADCx->CR2 &= CR2_ADON_Reset;
mbed_official 126:549ba18ddd81 328 }
mbed_official 126:549ba18ddd81 329 }
mbed_official 126:549ba18ddd81 330
mbed_official 126:549ba18ddd81 331 /**
mbed_official 126:549ba18ddd81 332 * @brief Enables or disables the specified ADC DMA request.
mbed_official 126:549ba18ddd81 333 * @param ADCx: where x can be 1 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 334 * Note: ADC2 hasn't a DMA capability.
mbed_official 126:549ba18ddd81 335 * @param NewState: new state of the selected ADC DMA transfer.
mbed_official 126:549ba18ddd81 336 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 337 * @retval None
mbed_official 126:549ba18ddd81 338 */
mbed_official 126:549ba18ddd81 339 void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 340 {
mbed_official 126:549ba18ddd81 341 /* Check the parameters */
mbed_official 126:549ba18ddd81 342 assert_param(IS_ADC_DMA_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 343 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 344 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 345 {
mbed_official 126:549ba18ddd81 346 /* Enable the selected ADC DMA request */
mbed_official 126:549ba18ddd81 347 ADCx->CR2 |= CR2_DMA_Set;
mbed_official 126:549ba18ddd81 348 }
mbed_official 126:549ba18ddd81 349 else
mbed_official 126:549ba18ddd81 350 {
mbed_official 126:549ba18ddd81 351 /* Disable the selected ADC DMA request */
mbed_official 126:549ba18ddd81 352 ADCx->CR2 &= CR2_DMA_Reset;
mbed_official 126:549ba18ddd81 353 }
mbed_official 126:549ba18ddd81 354 }
mbed_official 126:549ba18ddd81 355
mbed_official 126:549ba18ddd81 356 /**
mbed_official 126:549ba18ddd81 357 * @brief Enables or disables the specified ADC interrupts.
mbed_official 126:549ba18ddd81 358 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 359 * @param ADC_IT: specifies the ADC interrupt sources to be enabled or disabled.
mbed_official 126:549ba18ddd81 360 * This parameter can be any combination of the following values:
mbed_official 126:549ba18ddd81 361 * @arg ADC_IT_EOC: End of conversion interrupt mask
mbed_official 126:549ba18ddd81 362 * @arg ADC_IT_AWD: Analog watchdog interrupt mask
mbed_official 126:549ba18ddd81 363 * @arg ADC_IT_JEOC: End of injected conversion interrupt mask
mbed_official 126:549ba18ddd81 364 * @param NewState: new state of the specified ADC interrupts.
mbed_official 126:549ba18ddd81 365 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 366 * @retval None
mbed_official 126:549ba18ddd81 367 */
mbed_official 126:549ba18ddd81 368 void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState)
mbed_official 126:549ba18ddd81 369 {
mbed_official 126:549ba18ddd81 370 uint8_t itmask = 0;
mbed_official 126:549ba18ddd81 371 /* Check the parameters */
mbed_official 126:549ba18ddd81 372 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 373 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 374 assert_param(IS_ADC_IT(ADC_IT));
mbed_official 126:549ba18ddd81 375 /* Get the ADC IT index */
mbed_official 126:549ba18ddd81 376 itmask = (uint8_t)ADC_IT;
mbed_official 126:549ba18ddd81 377 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 378 {
mbed_official 126:549ba18ddd81 379 /* Enable the selected ADC interrupts */
mbed_official 126:549ba18ddd81 380 ADCx->CR1 |= itmask;
mbed_official 126:549ba18ddd81 381 }
mbed_official 126:549ba18ddd81 382 else
mbed_official 126:549ba18ddd81 383 {
mbed_official 126:549ba18ddd81 384 /* Disable the selected ADC interrupts */
mbed_official 126:549ba18ddd81 385 ADCx->CR1 &= (~(uint32_t)itmask);
mbed_official 126:549ba18ddd81 386 }
mbed_official 126:549ba18ddd81 387 }
mbed_official 126:549ba18ddd81 388
mbed_official 126:549ba18ddd81 389 /**
mbed_official 126:549ba18ddd81 390 * @brief Resets the selected ADC calibration registers.
mbed_official 126:549ba18ddd81 391 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 392 * @retval None
mbed_official 126:549ba18ddd81 393 */
mbed_official 126:549ba18ddd81 394 void ADC_ResetCalibration(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 395 {
mbed_official 126:549ba18ddd81 396 /* Check the parameters */
mbed_official 126:549ba18ddd81 397 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 398 /* Resets the selected ADC calibration registers */
mbed_official 126:549ba18ddd81 399 ADCx->CR2 |= CR2_RSTCAL_Set;
mbed_official 126:549ba18ddd81 400 }
mbed_official 126:549ba18ddd81 401
mbed_official 126:549ba18ddd81 402 /**
mbed_official 126:549ba18ddd81 403 * @brief Gets the selected ADC reset calibration registers status.
mbed_official 126:549ba18ddd81 404 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 405 * @retval The new state of ADC reset calibration registers (SET or RESET).
mbed_official 126:549ba18ddd81 406 */
mbed_official 126:549ba18ddd81 407 FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 408 {
mbed_official 126:549ba18ddd81 409 FlagStatus bitstatus = RESET;
mbed_official 126:549ba18ddd81 410 /* Check the parameters */
mbed_official 126:549ba18ddd81 411 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 412 /* Check the status of RSTCAL bit */
mbed_official 126:549ba18ddd81 413 if ((ADCx->CR2 & CR2_RSTCAL_Set) != (uint32_t)RESET)
mbed_official 126:549ba18ddd81 414 {
mbed_official 126:549ba18ddd81 415 /* RSTCAL bit is set */
mbed_official 126:549ba18ddd81 416 bitstatus = SET;
mbed_official 126:549ba18ddd81 417 }
mbed_official 126:549ba18ddd81 418 else
mbed_official 126:549ba18ddd81 419 {
mbed_official 126:549ba18ddd81 420 /* RSTCAL bit is reset */
mbed_official 126:549ba18ddd81 421 bitstatus = RESET;
mbed_official 126:549ba18ddd81 422 }
mbed_official 126:549ba18ddd81 423 /* Return the RSTCAL bit status */
mbed_official 126:549ba18ddd81 424 return bitstatus;
mbed_official 126:549ba18ddd81 425 }
mbed_official 126:549ba18ddd81 426
mbed_official 126:549ba18ddd81 427 /**
mbed_official 126:549ba18ddd81 428 * @brief Starts the selected ADC calibration process.
mbed_official 126:549ba18ddd81 429 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 430 * @retval None
mbed_official 126:549ba18ddd81 431 */
mbed_official 126:549ba18ddd81 432 void ADC_StartCalibration(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 433 {
mbed_official 126:549ba18ddd81 434 /* Check the parameters */
mbed_official 126:549ba18ddd81 435 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 436 /* Enable the selected ADC calibration process */
mbed_official 126:549ba18ddd81 437 ADCx->CR2 |= CR2_CAL_Set;
mbed_official 126:549ba18ddd81 438 }
mbed_official 126:549ba18ddd81 439
mbed_official 126:549ba18ddd81 440 /**
mbed_official 126:549ba18ddd81 441 * @brief Gets the selected ADC calibration status.
mbed_official 126:549ba18ddd81 442 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 443 * @retval The new state of ADC calibration (SET or RESET).
mbed_official 126:549ba18ddd81 444 */
mbed_official 126:549ba18ddd81 445 FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 446 {
mbed_official 126:549ba18ddd81 447 FlagStatus bitstatus = RESET;
mbed_official 126:549ba18ddd81 448 /* Check the parameters */
mbed_official 126:549ba18ddd81 449 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 450 /* Check the status of CAL bit */
mbed_official 126:549ba18ddd81 451 if ((ADCx->CR2 & CR2_CAL_Set) != (uint32_t)RESET)
mbed_official 126:549ba18ddd81 452 {
mbed_official 126:549ba18ddd81 453 /* CAL bit is set: calibration on going */
mbed_official 126:549ba18ddd81 454 bitstatus = SET;
mbed_official 126:549ba18ddd81 455 }
mbed_official 126:549ba18ddd81 456 else
mbed_official 126:549ba18ddd81 457 {
mbed_official 126:549ba18ddd81 458 /* CAL bit is reset: end of calibration */
mbed_official 126:549ba18ddd81 459 bitstatus = RESET;
mbed_official 126:549ba18ddd81 460 }
mbed_official 126:549ba18ddd81 461 /* Return the CAL bit status */
mbed_official 126:549ba18ddd81 462 return bitstatus;
mbed_official 126:549ba18ddd81 463 }
mbed_official 126:549ba18ddd81 464
mbed_official 126:549ba18ddd81 465 /**
mbed_official 126:549ba18ddd81 466 * @brief Enables or disables the selected ADC software start conversion .
mbed_official 126:549ba18ddd81 467 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 468 * @param NewState: new state of the selected ADC software start conversion.
mbed_official 126:549ba18ddd81 469 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 470 * @retval None
mbed_official 126:549ba18ddd81 471 */
mbed_official 126:549ba18ddd81 472 void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 473 {
mbed_official 126:549ba18ddd81 474 /* Check the parameters */
mbed_official 126:549ba18ddd81 475 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 476 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 477 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 478 {
mbed_official 126:549ba18ddd81 479 /* Enable the selected ADC conversion on external event and start the selected
mbed_official 126:549ba18ddd81 480 ADC conversion */
mbed_official 126:549ba18ddd81 481 ADCx->CR2 |= CR2_EXTTRIG_SWSTART_Set;
mbed_official 126:549ba18ddd81 482 }
mbed_official 126:549ba18ddd81 483 else
mbed_official 126:549ba18ddd81 484 {
mbed_official 126:549ba18ddd81 485 /* Disable the selected ADC conversion on external event and stop the selected
mbed_official 126:549ba18ddd81 486 ADC conversion */
mbed_official 126:549ba18ddd81 487 ADCx->CR2 &= CR2_EXTTRIG_SWSTART_Reset;
mbed_official 126:549ba18ddd81 488 }
mbed_official 126:549ba18ddd81 489 }
mbed_official 126:549ba18ddd81 490
mbed_official 126:549ba18ddd81 491 /**
mbed_official 126:549ba18ddd81 492 * @brief Gets the selected ADC Software start conversion Status.
mbed_official 126:549ba18ddd81 493 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 494 * @retval The new state of ADC software start conversion (SET or RESET).
mbed_official 126:549ba18ddd81 495 */
mbed_official 126:549ba18ddd81 496 FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 497 {
mbed_official 126:549ba18ddd81 498 FlagStatus bitstatus = RESET;
mbed_official 126:549ba18ddd81 499 /* Check the parameters */
mbed_official 126:549ba18ddd81 500 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 501 /* Check the status of SWSTART bit */
mbed_official 126:549ba18ddd81 502 if ((ADCx->CR2 & CR2_SWSTART_Set) != (uint32_t)RESET)
mbed_official 126:549ba18ddd81 503 {
mbed_official 126:549ba18ddd81 504 /* SWSTART bit is set */
mbed_official 126:549ba18ddd81 505 bitstatus = SET;
mbed_official 126:549ba18ddd81 506 }
mbed_official 126:549ba18ddd81 507 else
mbed_official 126:549ba18ddd81 508 {
mbed_official 126:549ba18ddd81 509 /* SWSTART bit is reset */
mbed_official 126:549ba18ddd81 510 bitstatus = RESET;
mbed_official 126:549ba18ddd81 511 }
mbed_official 126:549ba18ddd81 512 /* Return the SWSTART bit status */
mbed_official 126:549ba18ddd81 513 return bitstatus;
mbed_official 126:549ba18ddd81 514 }
mbed_official 126:549ba18ddd81 515
mbed_official 126:549ba18ddd81 516 /**
mbed_official 126:549ba18ddd81 517 * @brief Configures the discontinuous mode for the selected ADC regular
mbed_official 126:549ba18ddd81 518 * group channel.
mbed_official 126:549ba18ddd81 519 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 520 * @param Number: specifies the discontinuous mode regular channel
mbed_official 126:549ba18ddd81 521 * count value. This number must be between 1 and 8.
mbed_official 126:549ba18ddd81 522 * @retval None
mbed_official 126:549ba18ddd81 523 */
mbed_official 126:549ba18ddd81 524 void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number)
mbed_official 126:549ba18ddd81 525 {
mbed_official 126:549ba18ddd81 526 uint32_t tmpreg1 = 0;
mbed_official 126:549ba18ddd81 527 uint32_t tmpreg2 = 0;
mbed_official 126:549ba18ddd81 528 /* Check the parameters */
mbed_official 126:549ba18ddd81 529 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 530 assert_param(IS_ADC_REGULAR_DISC_NUMBER(Number));
mbed_official 126:549ba18ddd81 531 /* Get the old register value */
mbed_official 126:549ba18ddd81 532 tmpreg1 = ADCx->CR1;
mbed_official 126:549ba18ddd81 533 /* Clear the old discontinuous mode channel count */
mbed_official 126:549ba18ddd81 534 tmpreg1 &= CR1_DISCNUM_Reset;
mbed_official 126:549ba18ddd81 535 /* Set the discontinuous mode channel count */
mbed_official 126:549ba18ddd81 536 tmpreg2 = Number - 1;
mbed_official 126:549ba18ddd81 537 tmpreg1 |= tmpreg2 << 13;
mbed_official 126:549ba18ddd81 538 /* Store the new register value */
mbed_official 126:549ba18ddd81 539 ADCx->CR1 = tmpreg1;
mbed_official 126:549ba18ddd81 540 }
mbed_official 126:549ba18ddd81 541
mbed_official 126:549ba18ddd81 542 /**
mbed_official 126:549ba18ddd81 543 * @brief Enables or disables the discontinuous mode on regular group
mbed_official 126:549ba18ddd81 544 * channel for the specified ADC
mbed_official 126:549ba18ddd81 545 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 546 * @param NewState: new state of the selected ADC discontinuous mode
mbed_official 126:549ba18ddd81 547 * on regular group channel.
mbed_official 126:549ba18ddd81 548 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 549 * @retval None
mbed_official 126:549ba18ddd81 550 */
mbed_official 126:549ba18ddd81 551 void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 552 {
mbed_official 126:549ba18ddd81 553 /* Check the parameters */
mbed_official 126:549ba18ddd81 554 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 555 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 556 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 557 {
mbed_official 126:549ba18ddd81 558 /* Enable the selected ADC regular discontinuous mode */
mbed_official 126:549ba18ddd81 559 ADCx->CR1 |= CR1_DISCEN_Set;
mbed_official 126:549ba18ddd81 560 }
mbed_official 126:549ba18ddd81 561 else
mbed_official 126:549ba18ddd81 562 {
mbed_official 126:549ba18ddd81 563 /* Disable the selected ADC regular discontinuous mode */
mbed_official 126:549ba18ddd81 564 ADCx->CR1 &= CR1_DISCEN_Reset;
mbed_official 126:549ba18ddd81 565 }
mbed_official 126:549ba18ddd81 566 }
mbed_official 126:549ba18ddd81 567
mbed_official 126:549ba18ddd81 568 /**
mbed_official 126:549ba18ddd81 569 * @brief Configures for the selected ADC regular channel its corresponding
mbed_official 126:549ba18ddd81 570 * rank in the sequencer and its sample time.
mbed_official 126:549ba18ddd81 571 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 572 * @param ADC_Channel: the ADC channel to configure.
mbed_official 126:549ba18ddd81 573 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 574 * @arg ADC_Channel_0: ADC Channel0 selected
mbed_official 126:549ba18ddd81 575 * @arg ADC_Channel_1: ADC Channel1 selected
mbed_official 126:549ba18ddd81 576 * @arg ADC_Channel_2: ADC Channel2 selected
mbed_official 126:549ba18ddd81 577 * @arg ADC_Channel_3: ADC Channel3 selected
mbed_official 126:549ba18ddd81 578 * @arg ADC_Channel_4: ADC Channel4 selected
mbed_official 126:549ba18ddd81 579 * @arg ADC_Channel_5: ADC Channel5 selected
mbed_official 126:549ba18ddd81 580 * @arg ADC_Channel_6: ADC Channel6 selected
mbed_official 126:549ba18ddd81 581 * @arg ADC_Channel_7: ADC Channel7 selected
mbed_official 126:549ba18ddd81 582 * @arg ADC_Channel_8: ADC Channel8 selected
mbed_official 126:549ba18ddd81 583 * @arg ADC_Channel_9: ADC Channel9 selected
mbed_official 126:549ba18ddd81 584 * @arg ADC_Channel_10: ADC Channel10 selected
mbed_official 126:549ba18ddd81 585 * @arg ADC_Channel_11: ADC Channel11 selected
mbed_official 126:549ba18ddd81 586 * @arg ADC_Channel_12: ADC Channel12 selected
mbed_official 126:549ba18ddd81 587 * @arg ADC_Channel_13: ADC Channel13 selected
mbed_official 126:549ba18ddd81 588 * @arg ADC_Channel_14: ADC Channel14 selected
mbed_official 126:549ba18ddd81 589 * @arg ADC_Channel_15: ADC Channel15 selected
mbed_official 126:549ba18ddd81 590 * @arg ADC_Channel_16: ADC Channel16 selected
mbed_official 126:549ba18ddd81 591 * @arg ADC_Channel_17: ADC Channel17 selected
mbed_official 126:549ba18ddd81 592 * @param Rank: The rank in the regular group sequencer. This parameter must be between 1 to 16.
mbed_official 126:549ba18ddd81 593 * @param ADC_SampleTime: The sample time value to be set for the selected channel.
mbed_official 126:549ba18ddd81 594 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 595 * @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles
mbed_official 126:549ba18ddd81 596 * @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles
mbed_official 126:549ba18ddd81 597 * @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles
mbed_official 126:549ba18ddd81 598 * @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles
mbed_official 126:549ba18ddd81 599 * @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles
mbed_official 126:549ba18ddd81 600 * @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles
mbed_official 126:549ba18ddd81 601 * @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles
mbed_official 126:549ba18ddd81 602 * @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles
mbed_official 126:549ba18ddd81 603 * @retval None
mbed_official 126:549ba18ddd81 604 */
mbed_official 126:549ba18ddd81 605 void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
mbed_official 126:549ba18ddd81 606 {
mbed_official 126:549ba18ddd81 607 uint32_t tmpreg1 = 0, tmpreg2 = 0;
mbed_official 126:549ba18ddd81 608 /* Check the parameters */
mbed_official 126:549ba18ddd81 609 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 610 assert_param(IS_ADC_CHANNEL(ADC_Channel));
mbed_official 126:549ba18ddd81 611 assert_param(IS_ADC_REGULAR_RANK(Rank));
mbed_official 126:549ba18ddd81 612 assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));
mbed_official 126:549ba18ddd81 613 /* if ADC_Channel_10 ... ADC_Channel_17 is selected */
mbed_official 126:549ba18ddd81 614 if (ADC_Channel > ADC_Channel_9)
mbed_official 126:549ba18ddd81 615 {
mbed_official 126:549ba18ddd81 616 /* Get the old register value */
mbed_official 126:549ba18ddd81 617 tmpreg1 = ADCx->SMPR1;
mbed_official 126:549ba18ddd81 618 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 619 tmpreg2 = SMPR1_SMP_Set << (3 * (ADC_Channel - 10));
mbed_official 126:549ba18ddd81 620 /* Clear the old channel sample time */
mbed_official 126:549ba18ddd81 621 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 622 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 623 tmpreg2 = (uint32_t)ADC_SampleTime << (3 * (ADC_Channel - 10));
mbed_official 126:549ba18ddd81 624 /* Set the new channel sample time */
mbed_official 126:549ba18ddd81 625 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 626 /* Store the new register value */
mbed_official 126:549ba18ddd81 627 ADCx->SMPR1 = tmpreg1;
mbed_official 126:549ba18ddd81 628 }
mbed_official 126:549ba18ddd81 629 else /* ADC_Channel include in ADC_Channel_[0..9] */
mbed_official 126:549ba18ddd81 630 {
mbed_official 126:549ba18ddd81 631 /* Get the old register value */
mbed_official 126:549ba18ddd81 632 tmpreg1 = ADCx->SMPR2;
mbed_official 126:549ba18ddd81 633 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 634 tmpreg2 = SMPR2_SMP_Set << (3 * ADC_Channel);
mbed_official 126:549ba18ddd81 635 /* Clear the old channel sample time */
mbed_official 126:549ba18ddd81 636 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 637 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 638 tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel);
mbed_official 126:549ba18ddd81 639 /* Set the new channel sample time */
mbed_official 126:549ba18ddd81 640 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 641 /* Store the new register value */
mbed_official 126:549ba18ddd81 642 ADCx->SMPR2 = tmpreg1;
mbed_official 126:549ba18ddd81 643 }
mbed_official 126:549ba18ddd81 644 /* For Rank 1 to 6 */
mbed_official 126:549ba18ddd81 645 if (Rank < 7)
mbed_official 126:549ba18ddd81 646 {
mbed_official 126:549ba18ddd81 647 /* Get the old register value */
mbed_official 126:549ba18ddd81 648 tmpreg1 = ADCx->SQR3;
mbed_official 126:549ba18ddd81 649 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 650 tmpreg2 = SQR3_SQ_Set << (5 * (Rank - 1));
mbed_official 126:549ba18ddd81 651 /* Clear the old SQx bits for the selected rank */
mbed_official 126:549ba18ddd81 652 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 653 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 654 tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 1));
mbed_official 126:549ba18ddd81 655 /* Set the SQx bits for the selected rank */
mbed_official 126:549ba18ddd81 656 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 657 /* Store the new register value */
mbed_official 126:549ba18ddd81 658 ADCx->SQR3 = tmpreg1;
mbed_official 126:549ba18ddd81 659 }
mbed_official 126:549ba18ddd81 660 /* For Rank 7 to 12 */
mbed_official 126:549ba18ddd81 661 else if (Rank < 13)
mbed_official 126:549ba18ddd81 662 {
mbed_official 126:549ba18ddd81 663 /* Get the old register value */
mbed_official 126:549ba18ddd81 664 tmpreg1 = ADCx->SQR2;
mbed_official 126:549ba18ddd81 665 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 666 tmpreg2 = SQR2_SQ_Set << (5 * (Rank - 7));
mbed_official 126:549ba18ddd81 667 /* Clear the old SQx bits for the selected rank */
mbed_official 126:549ba18ddd81 668 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 669 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 670 tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 7));
mbed_official 126:549ba18ddd81 671 /* Set the SQx bits for the selected rank */
mbed_official 126:549ba18ddd81 672 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 673 /* Store the new register value */
mbed_official 126:549ba18ddd81 674 ADCx->SQR2 = tmpreg1;
mbed_official 126:549ba18ddd81 675 }
mbed_official 126:549ba18ddd81 676 /* For Rank 13 to 16 */
mbed_official 126:549ba18ddd81 677 else
mbed_official 126:549ba18ddd81 678 {
mbed_official 126:549ba18ddd81 679 /* Get the old register value */
mbed_official 126:549ba18ddd81 680 tmpreg1 = ADCx->SQR1;
mbed_official 126:549ba18ddd81 681 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 682 tmpreg2 = SQR1_SQ_Set << (5 * (Rank - 13));
mbed_official 126:549ba18ddd81 683 /* Clear the old SQx bits for the selected rank */
mbed_official 126:549ba18ddd81 684 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 685 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 686 tmpreg2 = (uint32_t)ADC_Channel << (5 * (Rank - 13));
mbed_official 126:549ba18ddd81 687 /* Set the SQx bits for the selected rank */
mbed_official 126:549ba18ddd81 688 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 689 /* Store the new register value */
mbed_official 126:549ba18ddd81 690 ADCx->SQR1 = tmpreg1;
mbed_official 126:549ba18ddd81 691 }
mbed_official 126:549ba18ddd81 692 }
mbed_official 126:549ba18ddd81 693
mbed_official 126:549ba18ddd81 694 /**
mbed_official 126:549ba18ddd81 695 * @brief Enables or disables the ADCx conversion through external trigger.
mbed_official 126:549ba18ddd81 696 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 697 * @param NewState: new state of the selected ADC external trigger start of conversion.
mbed_official 126:549ba18ddd81 698 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 699 * @retval None
mbed_official 126:549ba18ddd81 700 */
mbed_official 126:549ba18ddd81 701 void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 702 {
mbed_official 126:549ba18ddd81 703 /* Check the parameters */
mbed_official 126:549ba18ddd81 704 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 705 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 706 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 707 {
mbed_official 126:549ba18ddd81 708 /* Enable the selected ADC conversion on external event */
mbed_official 126:549ba18ddd81 709 ADCx->CR2 |= CR2_EXTTRIG_Set;
mbed_official 126:549ba18ddd81 710 }
mbed_official 126:549ba18ddd81 711 else
mbed_official 126:549ba18ddd81 712 {
mbed_official 126:549ba18ddd81 713 /* Disable the selected ADC conversion on external event */
mbed_official 126:549ba18ddd81 714 ADCx->CR2 &= CR2_EXTTRIG_Reset;
mbed_official 126:549ba18ddd81 715 }
mbed_official 126:549ba18ddd81 716 }
mbed_official 126:549ba18ddd81 717
mbed_official 126:549ba18ddd81 718 /**
mbed_official 126:549ba18ddd81 719 * @brief Returns the last ADCx conversion result data for regular channel.
mbed_official 126:549ba18ddd81 720 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 721 * @retval The Data conversion value.
mbed_official 126:549ba18ddd81 722 */
mbed_official 126:549ba18ddd81 723 uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 724 {
mbed_official 126:549ba18ddd81 725 /* Check the parameters */
mbed_official 126:549ba18ddd81 726 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 727 /* Return the selected ADC conversion value */
mbed_official 126:549ba18ddd81 728 return (uint16_t) ADCx->DR;
mbed_official 126:549ba18ddd81 729 }
mbed_official 126:549ba18ddd81 730
mbed_official 126:549ba18ddd81 731 /**
mbed_official 126:549ba18ddd81 732 * @brief Returns the last ADC1 and ADC2 conversion result data in dual mode.
mbed_official 126:549ba18ddd81 733 * @retval The Data conversion value.
mbed_official 126:549ba18ddd81 734 */
mbed_official 126:549ba18ddd81 735 uint32_t ADC_GetDualModeConversionValue(void)
mbed_official 126:549ba18ddd81 736 {
mbed_official 126:549ba18ddd81 737 /* Return the dual mode conversion value */
mbed_official 126:549ba18ddd81 738 return (*(__IO uint32_t *) DR_ADDRESS);
mbed_official 126:549ba18ddd81 739 }
mbed_official 126:549ba18ddd81 740
mbed_official 126:549ba18ddd81 741 /**
mbed_official 126:549ba18ddd81 742 * @brief Enables or disables the selected ADC automatic injected group
mbed_official 126:549ba18ddd81 743 * conversion after regular one.
mbed_official 126:549ba18ddd81 744 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 745 * @param NewState: new state of the selected ADC auto injected conversion
mbed_official 126:549ba18ddd81 746 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 747 * @retval None
mbed_official 126:549ba18ddd81 748 */
mbed_official 126:549ba18ddd81 749 void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 750 {
mbed_official 126:549ba18ddd81 751 /* Check the parameters */
mbed_official 126:549ba18ddd81 752 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 753 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 754 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 755 {
mbed_official 126:549ba18ddd81 756 /* Enable the selected ADC automatic injected group conversion */
mbed_official 126:549ba18ddd81 757 ADCx->CR1 |= CR1_JAUTO_Set;
mbed_official 126:549ba18ddd81 758 }
mbed_official 126:549ba18ddd81 759 else
mbed_official 126:549ba18ddd81 760 {
mbed_official 126:549ba18ddd81 761 /* Disable the selected ADC automatic injected group conversion */
mbed_official 126:549ba18ddd81 762 ADCx->CR1 &= CR1_JAUTO_Reset;
mbed_official 126:549ba18ddd81 763 }
mbed_official 126:549ba18ddd81 764 }
mbed_official 126:549ba18ddd81 765
mbed_official 126:549ba18ddd81 766 /**
mbed_official 126:549ba18ddd81 767 * @brief Enables or disables the discontinuous mode for injected group
mbed_official 126:549ba18ddd81 768 * channel for the specified ADC
mbed_official 126:549ba18ddd81 769 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 770 * @param NewState: new state of the selected ADC discontinuous mode
mbed_official 126:549ba18ddd81 771 * on injected group channel.
mbed_official 126:549ba18ddd81 772 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 773 * @retval None
mbed_official 126:549ba18ddd81 774 */
mbed_official 126:549ba18ddd81 775 void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 776 {
mbed_official 126:549ba18ddd81 777 /* Check the parameters */
mbed_official 126:549ba18ddd81 778 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 779 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 780 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 781 {
mbed_official 126:549ba18ddd81 782 /* Enable the selected ADC injected discontinuous mode */
mbed_official 126:549ba18ddd81 783 ADCx->CR1 |= CR1_JDISCEN_Set;
mbed_official 126:549ba18ddd81 784 }
mbed_official 126:549ba18ddd81 785 else
mbed_official 126:549ba18ddd81 786 {
mbed_official 126:549ba18ddd81 787 /* Disable the selected ADC injected discontinuous mode */
mbed_official 126:549ba18ddd81 788 ADCx->CR1 &= CR1_JDISCEN_Reset;
mbed_official 126:549ba18ddd81 789 }
mbed_official 126:549ba18ddd81 790 }
mbed_official 126:549ba18ddd81 791
mbed_official 126:549ba18ddd81 792 /**
mbed_official 126:549ba18ddd81 793 * @brief Configures the ADCx external trigger for injected channels conversion.
mbed_official 126:549ba18ddd81 794 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 795 * @param ADC_ExternalTrigInjecConv: specifies the ADC trigger to start injected conversion.
mbed_official 126:549ba18ddd81 796 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 797 * @arg ADC_ExternalTrigInjecConv_T1_TRGO: Timer1 TRGO event selected (for ADC1, ADC2 and ADC3)
mbed_official 126:549ba18ddd81 798 * @arg ADC_ExternalTrigInjecConv_T1_CC4: Timer1 capture compare4 selected (for ADC1, ADC2 and ADC3)
mbed_official 126:549ba18ddd81 799 * @arg ADC_ExternalTrigInjecConv_T2_TRGO: Timer2 TRGO event selected (for ADC1 and ADC2)
mbed_official 126:549ba18ddd81 800 * @arg ADC_ExternalTrigInjecConv_T2_CC1: Timer2 capture compare1 selected (for ADC1 and ADC2)
mbed_official 126:549ba18ddd81 801 * @arg ADC_ExternalTrigInjecConv_T3_CC4: Timer3 capture compare4 selected (for ADC1 and ADC2)
mbed_official 126:549ba18ddd81 802 * @arg ADC_ExternalTrigInjecConv_T4_TRGO: Timer4 TRGO event selected (for ADC1 and ADC2)
mbed_official 126:549ba18ddd81 803 * @arg ADC_ExternalTrigInjecConv_Ext_IT15_TIM8_CC4: External interrupt line 15 or Timer8
mbed_official 126:549ba18ddd81 804 * capture compare4 event selected (for ADC1 and ADC2)
mbed_official 126:549ba18ddd81 805 * @arg ADC_ExternalTrigInjecConv_T4_CC3: Timer4 capture compare3 selected (for ADC3 only)
mbed_official 126:549ba18ddd81 806 * @arg ADC_ExternalTrigInjecConv_T8_CC2: Timer8 capture compare2 selected (for ADC3 only)
mbed_official 126:549ba18ddd81 807 * @arg ADC_ExternalTrigInjecConv_T8_CC4: Timer8 capture compare4 selected (for ADC3 only)
mbed_official 126:549ba18ddd81 808 * @arg ADC_ExternalTrigInjecConv_T5_TRGO: Timer5 TRGO event selected (for ADC3 only)
mbed_official 126:549ba18ddd81 809 * @arg ADC_ExternalTrigInjecConv_T5_CC4: Timer5 capture compare4 selected (for ADC3 only)
mbed_official 126:549ba18ddd81 810 * @arg ADC_ExternalTrigInjecConv_None: Injected conversion started by software and not
mbed_official 126:549ba18ddd81 811 * by external trigger (for ADC1, ADC2 and ADC3)
mbed_official 126:549ba18ddd81 812 * @retval None
mbed_official 126:549ba18ddd81 813 */
mbed_official 126:549ba18ddd81 814 void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv)
mbed_official 126:549ba18ddd81 815 {
mbed_official 126:549ba18ddd81 816 uint32_t tmpreg = 0;
mbed_official 126:549ba18ddd81 817 /* Check the parameters */
mbed_official 126:549ba18ddd81 818 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 819 assert_param(IS_ADC_EXT_INJEC_TRIG(ADC_ExternalTrigInjecConv));
mbed_official 126:549ba18ddd81 820 /* Get the old register value */
mbed_official 126:549ba18ddd81 821 tmpreg = ADCx->CR2;
mbed_official 126:549ba18ddd81 822 /* Clear the old external event selection for injected group */
mbed_official 126:549ba18ddd81 823 tmpreg &= CR2_JEXTSEL_Reset;
mbed_official 126:549ba18ddd81 824 /* Set the external event selection for injected group */
mbed_official 126:549ba18ddd81 825 tmpreg |= ADC_ExternalTrigInjecConv;
mbed_official 126:549ba18ddd81 826 /* Store the new register value */
mbed_official 126:549ba18ddd81 827 ADCx->CR2 = tmpreg;
mbed_official 126:549ba18ddd81 828 }
mbed_official 126:549ba18ddd81 829
mbed_official 126:549ba18ddd81 830 /**
mbed_official 126:549ba18ddd81 831 * @brief Enables or disables the ADCx injected channels conversion through
mbed_official 126:549ba18ddd81 832 * external trigger
mbed_official 126:549ba18ddd81 833 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 834 * @param NewState: new state of the selected ADC external trigger start of
mbed_official 126:549ba18ddd81 835 * injected conversion.
mbed_official 126:549ba18ddd81 836 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 837 * @retval None
mbed_official 126:549ba18ddd81 838 */
mbed_official 126:549ba18ddd81 839 void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 840 {
mbed_official 126:549ba18ddd81 841 /* Check the parameters */
mbed_official 126:549ba18ddd81 842 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 843 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 844 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 845 {
mbed_official 126:549ba18ddd81 846 /* Enable the selected ADC external event selection for injected group */
mbed_official 126:549ba18ddd81 847 ADCx->CR2 |= CR2_JEXTTRIG_Set;
mbed_official 126:549ba18ddd81 848 }
mbed_official 126:549ba18ddd81 849 else
mbed_official 126:549ba18ddd81 850 {
mbed_official 126:549ba18ddd81 851 /* Disable the selected ADC external event selection for injected group */
mbed_official 126:549ba18ddd81 852 ADCx->CR2 &= CR2_JEXTTRIG_Reset;
mbed_official 126:549ba18ddd81 853 }
mbed_official 126:549ba18ddd81 854 }
mbed_official 126:549ba18ddd81 855
mbed_official 126:549ba18ddd81 856 /**
mbed_official 126:549ba18ddd81 857 * @brief Enables or disables the selected ADC start of the injected
mbed_official 126:549ba18ddd81 858 * channels conversion.
mbed_official 126:549ba18ddd81 859 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 860 * @param NewState: new state of the selected ADC software start injected conversion.
mbed_official 126:549ba18ddd81 861 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 862 * @retval None
mbed_official 126:549ba18ddd81 863 */
mbed_official 126:549ba18ddd81 864 void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState)
mbed_official 126:549ba18ddd81 865 {
mbed_official 126:549ba18ddd81 866 /* Check the parameters */
mbed_official 126:549ba18ddd81 867 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 868 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 869 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 870 {
mbed_official 126:549ba18ddd81 871 /* Enable the selected ADC conversion for injected group on external event and start the selected
mbed_official 126:549ba18ddd81 872 ADC injected conversion */
mbed_official 126:549ba18ddd81 873 ADCx->CR2 |= CR2_JEXTTRIG_JSWSTART_Set;
mbed_official 126:549ba18ddd81 874 }
mbed_official 126:549ba18ddd81 875 else
mbed_official 126:549ba18ddd81 876 {
mbed_official 126:549ba18ddd81 877 /* Disable the selected ADC conversion on external event for injected group and stop the selected
mbed_official 126:549ba18ddd81 878 ADC injected conversion */
mbed_official 126:549ba18ddd81 879 ADCx->CR2 &= CR2_JEXTTRIG_JSWSTART_Reset;
mbed_official 126:549ba18ddd81 880 }
mbed_official 126:549ba18ddd81 881 }
mbed_official 126:549ba18ddd81 882
mbed_official 126:549ba18ddd81 883 /**
mbed_official 126:549ba18ddd81 884 * @brief Gets the selected ADC Software start injected conversion Status.
mbed_official 126:549ba18ddd81 885 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 886 * @retval The new state of ADC software start injected conversion (SET or RESET).
mbed_official 126:549ba18ddd81 887 */
mbed_official 126:549ba18ddd81 888 FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx)
mbed_official 126:549ba18ddd81 889 {
mbed_official 126:549ba18ddd81 890 FlagStatus bitstatus = RESET;
mbed_official 126:549ba18ddd81 891 /* Check the parameters */
mbed_official 126:549ba18ddd81 892 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 893 /* Check the status of JSWSTART bit */
mbed_official 126:549ba18ddd81 894 if ((ADCx->CR2 & CR2_JSWSTART_Set) != (uint32_t)RESET)
mbed_official 126:549ba18ddd81 895 {
mbed_official 126:549ba18ddd81 896 /* JSWSTART bit is set */
mbed_official 126:549ba18ddd81 897 bitstatus = SET;
mbed_official 126:549ba18ddd81 898 }
mbed_official 126:549ba18ddd81 899 else
mbed_official 126:549ba18ddd81 900 {
mbed_official 126:549ba18ddd81 901 /* JSWSTART bit is reset */
mbed_official 126:549ba18ddd81 902 bitstatus = RESET;
mbed_official 126:549ba18ddd81 903 }
mbed_official 126:549ba18ddd81 904 /* Return the JSWSTART bit status */
mbed_official 126:549ba18ddd81 905 return bitstatus;
mbed_official 126:549ba18ddd81 906 }
mbed_official 126:549ba18ddd81 907
mbed_official 126:549ba18ddd81 908 /**
mbed_official 126:549ba18ddd81 909 * @brief Configures for the selected ADC injected channel its corresponding
mbed_official 126:549ba18ddd81 910 * rank in the sequencer and its sample time.
mbed_official 126:549ba18ddd81 911 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 912 * @param ADC_Channel: the ADC channel to configure.
mbed_official 126:549ba18ddd81 913 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 914 * @arg ADC_Channel_0: ADC Channel0 selected
mbed_official 126:549ba18ddd81 915 * @arg ADC_Channel_1: ADC Channel1 selected
mbed_official 126:549ba18ddd81 916 * @arg ADC_Channel_2: ADC Channel2 selected
mbed_official 126:549ba18ddd81 917 * @arg ADC_Channel_3: ADC Channel3 selected
mbed_official 126:549ba18ddd81 918 * @arg ADC_Channel_4: ADC Channel4 selected
mbed_official 126:549ba18ddd81 919 * @arg ADC_Channel_5: ADC Channel5 selected
mbed_official 126:549ba18ddd81 920 * @arg ADC_Channel_6: ADC Channel6 selected
mbed_official 126:549ba18ddd81 921 * @arg ADC_Channel_7: ADC Channel7 selected
mbed_official 126:549ba18ddd81 922 * @arg ADC_Channel_8: ADC Channel8 selected
mbed_official 126:549ba18ddd81 923 * @arg ADC_Channel_9: ADC Channel9 selected
mbed_official 126:549ba18ddd81 924 * @arg ADC_Channel_10: ADC Channel10 selected
mbed_official 126:549ba18ddd81 925 * @arg ADC_Channel_11: ADC Channel11 selected
mbed_official 126:549ba18ddd81 926 * @arg ADC_Channel_12: ADC Channel12 selected
mbed_official 126:549ba18ddd81 927 * @arg ADC_Channel_13: ADC Channel13 selected
mbed_official 126:549ba18ddd81 928 * @arg ADC_Channel_14: ADC Channel14 selected
mbed_official 126:549ba18ddd81 929 * @arg ADC_Channel_15: ADC Channel15 selected
mbed_official 126:549ba18ddd81 930 * @arg ADC_Channel_16: ADC Channel16 selected
mbed_official 126:549ba18ddd81 931 * @arg ADC_Channel_17: ADC Channel17 selected
mbed_official 126:549ba18ddd81 932 * @param Rank: The rank in the injected group sequencer. This parameter must be between 1 and 4.
mbed_official 126:549ba18ddd81 933 * @param ADC_SampleTime: The sample time value to be set for the selected channel.
mbed_official 126:549ba18ddd81 934 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 935 * @arg ADC_SampleTime_1Cycles5: Sample time equal to 1.5 cycles
mbed_official 126:549ba18ddd81 936 * @arg ADC_SampleTime_7Cycles5: Sample time equal to 7.5 cycles
mbed_official 126:549ba18ddd81 937 * @arg ADC_SampleTime_13Cycles5: Sample time equal to 13.5 cycles
mbed_official 126:549ba18ddd81 938 * @arg ADC_SampleTime_28Cycles5: Sample time equal to 28.5 cycles
mbed_official 126:549ba18ddd81 939 * @arg ADC_SampleTime_41Cycles5: Sample time equal to 41.5 cycles
mbed_official 126:549ba18ddd81 940 * @arg ADC_SampleTime_55Cycles5: Sample time equal to 55.5 cycles
mbed_official 126:549ba18ddd81 941 * @arg ADC_SampleTime_71Cycles5: Sample time equal to 71.5 cycles
mbed_official 126:549ba18ddd81 942 * @arg ADC_SampleTime_239Cycles5: Sample time equal to 239.5 cycles
mbed_official 126:549ba18ddd81 943 * @retval None
mbed_official 126:549ba18ddd81 944 */
mbed_official 126:549ba18ddd81 945 void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime)
mbed_official 126:549ba18ddd81 946 {
mbed_official 126:549ba18ddd81 947 uint32_t tmpreg1 = 0, tmpreg2 = 0, tmpreg3 = 0;
mbed_official 126:549ba18ddd81 948 /* Check the parameters */
mbed_official 126:549ba18ddd81 949 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 950 assert_param(IS_ADC_CHANNEL(ADC_Channel));
mbed_official 126:549ba18ddd81 951 assert_param(IS_ADC_INJECTED_RANK(Rank));
mbed_official 126:549ba18ddd81 952 assert_param(IS_ADC_SAMPLE_TIME(ADC_SampleTime));
mbed_official 126:549ba18ddd81 953 /* if ADC_Channel_10 ... ADC_Channel_17 is selected */
mbed_official 126:549ba18ddd81 954 if (ADC_Channel > ADC_Channel_9)
mbed_official 126:549ba18ddd81 955 {
mbed_official 126:549ba18ddd81 956 /* Get the old register value */
mbed_official 126:549ba18ddd81 957 tmpreg1 = ADCx->SMPR1;
mbed_official 126:549ba18ddd81 958 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 959 tmpreg2 = SMPR1_SMP_Set << (3*(ADC_Channel - 10));
mbed_official 126:549ba18ddd81 960 /* Clear the old channel sample time */
mbed_official 126:549ba18ddd81 961 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 962 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 963 tmpreg2 = (uint32_t)ADC_SampleTime << (3*(ADC_Channel - 10));
mbed_official 126:549ba18ddd81 964 /* Set the new channel sample time */
mbed_official 126:549ba18ddd81 965 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 966 /* Store the new register value */
mbed_official 126:549ba18ddd81 967 ADCx->SMPR1 = tmpreg1;
mbed_official 126:549ba18ddd81 968 }
mbed_official 126:549ba18ddd81 969 else /* ADC_Channel include in ADC_Channel_[0..9] */
mbed_official 126:549ba18ddd81 970 {
mbed_official 126:549ba18ddd81 971 /* Get the old register value */
mbed_official 126:549ba18ddd81 972 tmpreg1 = ADCx->SMPR2;
mbed_official 126:549ba18ddd81 973 /* Calculate the mask to clear */
mbed_official 126:549ba18ddd81 974 tmpreg2 = SMPR2_SMP_Set << (3 * ADC_Channel);
mbed_official 126:549ba18ddd81 975 /* Clear the old channel sample time */
mbed_official 126:549ba18ddd81 976 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 977 /* Calculate the mask to set */
mbed_official 126:549ba18ddd81 978 tmpreg2 = (uint32_t)ADC_SampleTime << (3 * ADC_Channel);
mbed_official 126:549ba18ddd81 979 /* Set the new channel sample time */
mbed_official 126:549ba18ddd81 980 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 981 /* Store the new register value */
mbed_official 126:549ba18ddd81 982 ADCx->SMPR2 = tmpreg1;
mbed_official 126:549ba18ddd81 983 }
mbed_official 126:549ba18ddd81 984 /* Rank configuration */
mbed_official 126:549ba18ddd81 985 /* Get the old register value */
mbed_official 126:549ba18ddd81 986 tmpreg1 = ADCx->JSQR;
mbed_official 126:549ba18ddd81 987 /* Get JL value: Number = JL+1 */
mbed_official 126:549ba18ddd81 988 tmpreg3 = (tmpreg1 & JSQR_JL_Set)>> 20;
mbed_official 126:549ba18ddd81 989 /* Calculate the mask to clear: ((Rank-1)+(4-JL-1)) */
mbed_official 126:549ba18ddd81 990 tmpreg2 = JSQR_JSQ_Set << (5 * (uint8_t)((Rank + 3) - (tmpreg3 + 1)));
mbed_official 126:549ba18ddd81 991 /* Clear the old JSQx bits for the selected rank */
mbed_official 126:549ba18ddd81 992 tmpreg1 &= ~tmpreg2;
mbed_official 126:549ba18ddd81 993 /* Calculate the mask to set: ((Rank-1)+(4-JL-1)) */
mbed_official 126:549ba18ddd81 994 tmpreg2 = (uint32_t)ADC_Channel << (5 * (uint8_t)((Rank + 3) - (tmpreg3 + 1)));
mbed_official 126:549ba18ddd81 995 /* Set the JSQx bits for the selected rank */
mbed_official 126:549ba18ddd81 996 tmpreg1 |= tmpreg2;
mbed_official 126:549ba18ddd81 997 /* Store the new register value */
mbed_official 126:549ba18ddd81 998 ADCx->JSQR = tmpreg1;
mbed_official 126:549ba18ddd81 999 }
mbed_official 126:549ba18ddd81 1000
mbed_official 126:549ba18ddd81 1001 /**
mbed_official 126:549ba18ddd81 1002 * @brief Configures the sequencer length for injected channels
mbed_official 126:549ba18ddd81 1003 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1004 * @param Length: The sequencer length.
mbed_official 126:549ba18ddd81 1005 * This parameter must be a number between 1 to 4.
mbed_official 126:549ba18ddd81 1006 * @retval None
mbed_official 126:549ba18ddd81 1007 */
mbed_official 126:549ba18ddd81 1008 void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length)
mbed_official 126:549ba18ddd81 1009 {
mbed_official 126:549ba18ddd81 1010 uint32_t tmpreg1 = 0;
mbed_official 126:549ba18ddd81 1011 uint32_t tmpreg2 = 0;
mbed_official 126:549ba18ddd81 1012 /* Check the parameters */
mbed_official 126:549ba18ddd81 1013 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1014 assert_param(IS_ADC_INJECTED_LENGTH(Length));
mbed_official 126:549ba18ddd81 1015
mbed_official 126:549ba18ddd81 1016 /* Get the old register value */
mbed_official 126:549ba18ddd81 1017 tmpreg1 = ADCx->JSQR;
mbed_official 126:549ba18ddd81 1018 /* Clear the old injected sequnence lenght JL bits */
mbed_official 126:549ba18ddd81 1019 tmpreg1 &= JSQR_JL_Reset;
mbed_official 126:549ba18ddd81 1020 /* Set the injected sequnence lenght JL bits */
mbed_official 126:549ba18ddd81 1021 tmpreg2 = Length - 1;
mbed_official 126:549ba18ddd81 1022 tmpreg1 |= tmpreg2 << 20;
mbed_official 126:549ba18ddd81 1023 /* Store the new register value */
mbed_official 126:549ba18ddd81 1024 ADCx->JSQR = tmpreg1;
mbed_official 126:549ba18ddd81 1025 }
mbed_official 126:549ba18ddd81 1026
mbed_official 126:549ba18ddd81 1027 /**
mbed_official 126:549ba18ddd81 1028 * @brief Set the injected channels conversion value offset
mbed_official 126:549ba18ddd81 1029 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1030 * @param ADC_InjectedChannel: the ADC injected channel to set its offset.
mbed_official 126:549ba18ddd81 1031 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 1032 * @arg ADC_InjectedChannel_1: Injected Channel1 selected
mbed_official 126:549ba18ddd81 1033 * @arg ADC_InjectedChannel_2: Injected Channel2 selected
mbed_official 126:549ba18ddd81 1034 * @arg ADC_InjectedChannel_3: Injected Channel3 selected
mbed_official 126:549ba18ddd81 1035 * @arg ADC_InjectedChannel_4: Injected Channel4 selected
mbed_official 126:549ba18ddd81 1036 * @param Offset: the offset value for the selected ADC injected channel
mbed_official 126:549ba18ddd81 1037 * This parameter must be a 12bit value.
mbed_official 126:549ba18ddd81 1038 * @retval None
mbed_official 126:549ba18ddd81 1039 */
mbed_official 126:549ba18ddd81 1040 void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset)
mbed_official 126:549ba18ddd81 1041 {
mbed_official 126:549ba18ddd81 1042 __IO uint32_t tmp = 0;
mbed_official 126:549ba18ddd81 1043
mbed_official 126:549ba18ddd81 1044 /* Check the parameters */
mbed_official 126:549ba18ddd81 1045 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1046 assert_param(IS_ADC_INJECTED_CHANNEL(ADC_InjectedChannel));
mbed_official 126:549ba18ddd81 1047 assert_param(IS_ADC_OFFSET(Offset));
mbed_official 126:549ba18ddd81 1048
mbed_official 126:549ba18ddd81 1049 tmp = (uint32_t)ADCx;
mbed_official 126:549ba18ddd81 1050 tmp += ADC_InjectedChannel;
mbed_official 126:549ba18ddd81 1051
mbed_official 126:549ba18ddd81 1052 /* Set the selected injected channel data offset */
mbed_official 126:549ba18ddd81 1053 *(__IO uint32_t *) tmp = (uint32_t)Offset;
mbed_official 126:549ba18ddd81 1054 }
mbed_official 126:549ba18ddd81 1055
mbed_official 126:549ba18ddd81 1056 /**
mbed_official 126:549ba18ddd81 1057 * @brief Returns the ADC injected channel conversion result
mbed_official 126:549ba18ddd81 1058 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1059 * @param ADC_InjectedChannel: the converted ADC injected channel.
mbed_official 126:549ba18ddd81 1060 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 1061 * @arg ADC_InjectedChannel_1: Injected Channel1 selected
mbed_official 126:549ba18ddd81 1062 * @arg ADC_InjectedChannel_2: Injected Channel2 selected
mbed_official 126:549ba18ddd81 1063 * @arg ADC_InjectedChannel_3: Injected Channel3 selected
mbed_official 126:549ba18ddd81 1064 * @arg ADC_InjectedChannel_4: Injected Channel4 selected
mbed_official 126:549ba18ddd81 1065 * @retval The Data conversion value.
mbed_official 126:549ba18ddd81 1066 */
mbed_official 126:549ba18ddd81 1067 uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel)
mbed_official 126:549ba18ddd81 1068 {
mbed_official 126:549ba18ddd81 1069 __IO uint32_t tmp = 0;
mbed_official 126:549ba18ddd81 1070
mbed_official 126:549ba18ddd81 1071 /* Check the parameters */
mbed_official 126:549ba18ddd81 1072 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1073 assert_param(IS_ADC_INJECTED_CHANNEL(ADC_InjectedChannel));
mbed_official 126:549ba18ddd81 1074
mbed_official 126:549ba18ddd81 1075 tmp = (uint32_t)ADCx;
mbed_official 126:549ba18ddd81 1076 tmp += ADC_InjectedChannel + JDR_Offset;
mbed_official 126:549ba18ddd81 1077
mbed_official 126:549ba18ddd81 1078 /* Returns the selected injected channel conversion data value */
mbed_official 126:549ba18ddd81 1079 return (uint16_t) (*(__IO uint32_t*) tmp);
mbed_official 126:549ba18ddd81 1080 }
mbed_official 126:549ba18ddd81 1081
mbed_official 126:549ba18ddd81 1082 /**
mbed_official 126:549ba18ddd81 1083 * @brief Enables or disables the analog watchdog on single/all regular
mbed_official 126:549ba18ddd81 1084 * or injected channels
mbed_official 126:549ba18ddd81 1085 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1086 * @param ADC_AnalogWatchdog: the ADC analog watchdog configuration.
mbed_official 126:549ba18ddd81 1087 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 1088 * @arg ADC_AnalogWatchdog_SingleRegEnable: Analog watchdog on a single regular channel
mbed_official 126:549ba18ddd81 1089 * @arg ADC_AnalogWatchdog_SingleInjecEnable: Analog watchdog on a single injected channel
mbed_official 126:549ba18ddd81 1090 * @arg ADC_AnalogWatchdog_SingleRegOrInjecEnable: Analog watchdog on a single regular or injected channel
mbed_official 126:549ba18ddd81 1091 * @arg ADC_AnalogWatchdog_AllRegEnable: Analog watchdog on all regular channel
mbed_official 126:549ba18ddd81 1092 * @arg ADC_AnalogWatchdog_AllInjecEnable: Analog watchdog on all injected channel
mbed_official 126:549ba18ddd81 1093 * @arg ADC_AnalogWatchdog_AllRegAllInjecEnable: Analog watchdog on all regular and injected channels
mbed_official 126:549ba18ddd81 1094 * @arg ADC_AnalogWatchdog_None: No channel guarded by the analog watchdog
mbed_official 126:549ba18ddd81 1095 * @retval None
mbed_official 126:549ba18ddd81 1096 */
mbed_official 126:549ba18ddd81 1097 void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog)
mbed_official 126:549ba18ddd81 1098 {
mbed_official 126:549ba18ddd81 1099 uint32_t tmpreg = 0;
mbed_official 126:549ba18ddd81 1100 /* Check the parameters */
mbed_official 126:549ba18ddd81 1101 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1102 assert_param(IS_ADC_ANALOG_WATCHDOG(ADC_AnalogWatchdog));
mbed_official 126:549ba18ddd81 1103 /* Get the old register value */
mbed_official 126:549ba18ddd81 1104 tmpreg = ADCx->CR1;
mbed_official 126:549ba18ddd81 1105 /* Clear AWDEN, AWDENJ and AWDSGL bits */
mbed_official 126:549ba18ddd81 1106 tmpreg &= CR1_AWDMode_Reset;
mbed_official 126:549ba18ddd81 1107 /* Set the analog watchdog enable mode */
mbed_official 126:549ba18ddd81 1108 tmpreg |= ADC_AnalogWatchdog;
mbed_official 126:549ba18ddd81 1109 /* Store the new register value */
mbed_official 126:549ba18ddd81 1110 ADCx->CR1 = tmpreg;
mbed_official 126:549ba18ddd81 1111 }
mbed_official 126:549ba18ddd81 1112
mbed_official 126:549ba18ddd81 1113 /**
mbed_official 126:549ba18ddd81 1114 * @brief Configures the high and low thresholds of the analog watchdog.
mbed_official 126:549ba18ddd81 1115 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1116 * @param HighThreshold: the ADC analog watchdog High threshold value.
mbed_official 126:549ba18ddd81 1117 * This parameter must be a 12bit value.
mbed_official 126:549ba18ddd81 1118 * @param LowThreshold: the ADC analog watchdog Low threshold value.
mbed_official 126:549ba18ddd81 1119 * This parameter must be a 12bit value.
mbed_official 126:549ba18ddd81 1120 * @retval None
mbed_official 126:549ba18ddd81 1121 */
mbed_official 126:549ba18ddd81 1122 void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,
mbed_official 126:549ba18ddd81 1123 uint16_t LowThreshold)
mbed_official 126:549ba18ddd81 1124 {
mbed_official 126:549ba18ddd81 1125 /* Check the parameters */
mbed_official 126:549ba18ddd81 1126 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1127 assert_param(IS_ADC_THRESHOLD(HighThreshold));
mbed_official 126:549ba18ddd81 1128 assert_param(IS_ADC_THRESHOLD(LowThreshold));
mbed_official 126:549ba18ddd81 1129 /* Set the ADCx high threshold */
mbed_official 126:549ba18ddd81 1130 ADCx->HTR = HighThreshold;
mbed_official 126:549ba18ddd81 1131 /* Set the ADCx low threshold */
mbed_official 126:549ba18ddd81 1132 ADCx->LTR = LowThreshold;
mbed_official 126:549ba18ddd81 1133 }
mbed_official 126:549ba18ddd81 1134
mbed_official 126:549ba18ddd81 1135 /**
mbed_official 126:549ba18ddd81 1136 * @brief Configures the analog watchdog guarded single channel
mbed_official 126:549ba18ddd81 1137 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1138 * @param ADC_Channel: the ADC channel to configure for the analog watchdog.
mbed_official 126:549ba18ddd81 1139 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 1140 * @arg ADC_Channel_0: ADC Channel0 selected
mbed_official 126:549ba18ddd81 1141 * @arg ADC_Channel_1: ADC Channel1 selected
mbed_official 126:549ba18ddd81 1142 * @arg ADC_Channel_2: ADC Channel2 selected
mbed_official 126:549ba18ddd81 1143 * @arg ADC_Channel_3: ADC Channel3 selected
mbed_official 126:549ba18ddd81 1144 * @arg ADC_Channel_4: ADC Channel4 selected
mbed_official 126:549ba18ddd81 1145 * @arg ADC_Channel_5: ADC Channel5 selected
mbed_official 126:549ba18ddd81 1146 * @arg ADC_Channel_6: ADC Channel6 selected
mbed_official 126:549ba18ddd81 1147 * @arg ADC_Channel_7: ADC Channel7 selected
mbed_official 126:549ba18ddd81 1148 * @arg ADC_Channel_8: ADC Channel8 selected
mbed_official 126:549ba18ddd81 1149 * @arg ADC_Channel_9: ADC Channel9 selected
mbed_official 126:549ba18ddd81 1150 * @arg ADC_Channel_10: ADC Channel10 selected
mbed_official 126:549ba18ddd81 1151 * @arg ADC_Channel_11: ADC Channel11 selected
mbed_official 126:549ba18ddd81 1152 * @arg ADC_Channel_12: ADC Channel12 selected
mbed_official 126:549ba18ddd81 1153 * @arg ADC_Channel_13: ADC Channel13 selected
mbed_official 126:549ba18ddd81 1154 * @arg ADC_Channel_14: ADC Channel14 selected
mbed_official 126:549ba18ddd81 1155 * @arg ADC_Channel_15: ADC Channel15 selected
mbed_official 126:549ba18ddd81 1156 * @arg ADC_Channel_16: ADC Channel16 selected
mbed_official 126:549ba18ddd81 1157 * @arg ADC_Channel_17: ADC Channel17 selected
mbed_official 126:549ba18ddd81 1158 * @retval None
mbed_official 126:549ba18ddd81 1159 */
mbed_official 126:549ba18ddd81 1160 void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel)
mbed_official 126:549ba18ddd81 1161 {
mbed_official 126:549ba18ddd81 1162 uint32_t tmpreg = 0;
mbed_official 126:549ba18ddd81 1163 /* Check the parameters */
mbed_official 126:549ba18ddd81 1164 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1165 assert_param(IS_ADC_CHANNEL(ADC_Channel));
mbed_official 126:549ba18ddd81 1166 /* Get the old register value */
mbed_official 126:549ba18ddd81 1167 tmpreg = ADCx->CR1;
mbed_official 126:549ba18ddd81 1168 /* Clear the Analog watchdog channel select bits */
mbed_official 126:549ba18ddd81 1169 tmpreg &= CR1_AWDCH_Reset;
mbed_official 126:549ba18ddd81 1170 /* Set the Analog watchdog channel */
mbed_official 126:549ba18ddd81 1171 tmpreg |= ADC_Channel;
mbed_official 126:549ba18ddd81 1172 /* Store the new register value */
mbed_official 126:549ba18ddd81 1173 ADCx->CR1 = tmpreg;
mbed_official 126:549ba18ddd81 1174 }
mbed_official 126:549ba18ddd81 1175
mbed_official 126:549ba18ddd81 1176 /**
mbed_official 126:549ba18ddd81 1177 * @brief Enables or disables the temperature sensor and Vrefint channel.
mbed_official 126:549ba18ddd81 1178 * @param NewState: new state of the temperature sensor.
mbed_official 126:549ba18ddd81 1179 * This parameter can be: ENABLE or DISABLE.
mbed_official 126:549ba18ddd81 1180 * @retval None
mbed_official 126:549ba18ddd81 1181 */
mbed_official 126:549ba18ddd81 1182 void ADC_TempSensorVrefintCmd(FunctionalState NewState)
mbed_official 126:549ba18ddd81 1183 {
mbed_official 126:549ba18ddd81 1184 /* Check the parameters */
mbed_official 126:549ba18ddd81 1185 assert_param(IS_FUNCTIONAL_STATE(NewState));
mbed_official 126:549ba18ddd81 1186 if (NewState != DISABLE)
mbed_official 126:549ba18ddd81 1187 {
mbed_official 126:549ba18ddd81 1188 /* Enable the temperature sensor and Vrefint channel*/
mbed_official 126:549ba18ddd81 1189 ADC1->CR2 |= CR2_TSVREFE_Set;
mbed_official 126:549ba18ddd81 1190 }
mbed_official 126:549ba18ddd81 1191 else
mbed_official 126:549ba18ddd81 1192 {
mbed_official 126:549ba18ddd81 1193 /* Disable the temperature sensor and Vrefint channel*/
mbed_official 126:549ba18ddd81 1194 ADC1->CR2 &= CR2_TSVREFE_Reset;
mbed_official 126:549ba18ddd81 1195 }
mbed_official 126:549ba18ddd81 1196 }
mbed_official 126:549ba18ddd81 1197
mbed_official 126:549ba18ddd81 1198 /**
mbed_official 126:549ba18ddd81 1199 * @brief Checks whether the specified ADC flag is set or not.
mbed_official 126:549ba18ddd81 1200 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1201 * @param ADC_FLAG: specifies the flag to check.
mbed_official 126:549ba18ddd81 1202 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 1203 * @arg ADC_FLAG_AWD: Analog watchdog flag
mbed_official 126:549ba18ddd81 1204 * @arg ADC_FLAG_EOC: End of conversion flag
mbed_official 126:549ba18ddd81 1205 * @arg ADC_FLAG_JEOC: End of injected group conversion flag
mbed_official 126:549ba18ddd81 1206 * @arg ADC_FLAG_JSTRT: Start of injected group conversion flag
mbed_official 126:549ba18ddd81 1207 * @arg ADC_FLAG_STRT: Start of regular group conversion flag
mbed_official 126:549ba18ddd81 1208 * @retval The new state of ADC_FLAG (SET or RESET).
mbed_official 126:549ba18ddd81 1209 */
mbed_official 126:549ba18ddd81 1210 FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint8_t ADC_FLAG)
mbed_official 126:549ba18ddd81 1211 {
mbed_official 126:549ba18ddd81 1212 FlagStatus bitstatus = RESET;
mbed_official 126:549ba18ddd81 1213 /* Check the parameters */
mbed_official 126:549ba18ddd81 1214 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1215 assert_param(IS_ADC_GET_FLAG(ADC_FLAG));
mbed_official 126:549ba18ddd81 1216 /* Check the status of the specified ADC flag */
mbed_official 126:549ba18ddd81 1217 if ((ADCx->SR & ADC_FLAG) != (uint8_t)RESET)
mbed_official 126:549ba18ddd81 1218 {
mbed_official 126:549ba18ddd81 1219 /* ADC_FLAG is set */
mbed_official 126:549ba18ddd81 1220 bitstatus = SET;
mbed_official 126:549ba18ddd81 1221 }
mbed_official 126:549ba18ddd81 1222 else
mbed_official 126:549ba18ddd81 1223 {
mbed_official 126:549ba18ddd81 1224 /* ADC_FLAG is reset */
mbed_official 126:549ba18ddd81 1225 bitstatus = RESET;
mbed_official 126:549ba18ddd81 1226 }
mbed_official 126:549ba18ddd81 1227 /* Return the ADC_FLAG status */
mbed_official 126:549ba18ddd81 1228 return bitstatus;
mbed_official 126:549ba18ddd81 1229 }
mbed_official 126:549ba18ddd81 1230
mbed_official 126:549ba18ddd81 1231 /**
mbed_official 126:549ba18ddd81 1232 * @brief Clears the ADCx's pending flags.
mbed_official 126:549ba18ddd81 1233 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1234 * @param ADC_FLAG: specifies the flag to clear.
mbed_official 126:549ba18ddd81 1235 * This parameter can be any combination of the following values:
mbed_official 126:549ba18ddd81 1236 * @arg ADC_FLAG_AWD: Analog watchdog flag
mbed_official 126:549ba18ddd81 1237 * @arg ADC_FLAG_EOC: End of conversion flag
mbed_official 126:549ba18ddd81 1238 * @arg ADC_FLAG_JEOC: End of injected group conversion flag
mbed_official 126:549ba18ddd81 1239 * @arg ADC_FLAG_JSTRT: Start of injected group conversion flag
mbed_official 126:549ba18ddd81 1240 * @arg ADC_FLAG_STRT: Start of regular group conversion flag
mbed_official 126:549ba18ddd81 1241 * @retval None
mbed_official 126:549ba18ddd81 1242 */
mbed_official 126:549ba18ddd81 1243 void ADC_ClearFlag(ADC_TypeDef* ADCx, uint8_t ADC_FLAG)
mbed_official 126:549ba18ddd81 1244 {
mbed_official 126:549ba18ddd81 1245 /* Check the parameters */
mbed_official 126:549ba18ddd81 1246 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1247 assert_param(IS_ADC_CLEAR_FLAG(ADC_FLAG));
mbed_official 126:549ba18ddd81 1248 /* Clear the selected ADC flags */
mbed_official 126:549ba18ddd81 1249 ADCx->SR = ~(uint32_t)ADC_FLAG;
mbed_official 126:549ba18ddd81 1250 }
mbed_official 126:549ba18ddd81 1251
mbed_official 126:549ba18ddd81 1252 /**
mbed_official 126:549ba18ddd81 1253 * @brief Checks whether the specified ADC interrupt has occurred or not.
mbed_official 126:549ba18ddd81 1254 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1255 * @param ADC_IT: specifies the ADC interrupt source to check.
mbed_official 126:549ba18ddd81 1256 * This parameter can be one of the following values:
mbed_official 126:549ba18ddd81 1257 * @arg ADC_IT_EOC: End of conversion interrupt mask
mbed_official 126:549ba18ddd81 1258 * @arg ADC_IT_AWD: Analog watchdog interrupt mask
mbed_official 126:549ba18ddd81 1259 * @arg ADC_IT_JEOC: End of injected conversion interrupt mask
mbed_official 126:549ba18ddd81 1260 * @retval The new state of ADC_IT (SET or RESET).
mbed_official 126:549ba18ddd81 1261 */
mbed_official 126:549ba18ddd81 1262 ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT)
mbed_official 126:549ba18ddd81 1263 {
mbed_official 126:549ba18ddd81 1264 ITStatus bitstatus = RESET;
mbed_official 126:549ba18ddd81 1265 uint32_t itmask = 0, enablestatus = 0;
mbed_official 126:549ba18ddd81 1266 /* Check the parameters */
mbed_official 126:549ba18ddd81 1267 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1268 assert_param(IS_ADC_GET_IT(ADC_IT));
mbed_official 126:549ba18ddd81 1269 /* Get the ADC IT index */
mbed_official 126:549ba18ddd81 1270 itmask = ADC_IT >> 8;
mbed_official 126:549ba18ddd81 1271 /* Get the ADC_IT enable bit status */
mbed_official 126:549ba18ddd81 1272 enablestatus = (ADCx->CR1 & (uint8_t)ADC_IT) ;
mbed_official 126:549ba18ddd81 1273 /* Check the status of the specified ADC interrupt */
mbed_official 126:549ba18ddd81 1274 if (((ADCx->SR & itmask) != (uint32_t)RESET) && enablestatus)
mbed_official 126:549ba18ddd81 1275 {
mbed_official 126:549ba18ddd81 1276 /* ADC_IT is set */
mbed_official 126:549ba18ddd81 1277 bitstatus = SET;
mbed_official 126:549ba18ddd81 1278 }
mbed_official 126:549ba18ddd81 1279 else
mbed_official 126:549ba18ddd81 1280 {
mbed_official 126:549ba18ddd81 1281 /* ADC_IT is reset */
mbed_official 126:549ba18ddd81 1282 bitstatus = RESET;
mbed_official 126:549ba18ddd81 1283 }
mbed_official 126:549ba18ddd81 1284 /* Return the ADC_IT status */
mbed_official 126:549ba18ddd81 1285 return bitstatus;
mbed_official 126:549ba18ddd81 1286 }
mbed_official 126:549ba18ddd81 1287
mbed_official 126:549ba18ddd81 1288 /**
mbed_official 126:549ba18ddd81 1289 * @brief Clears the ADCx's interrupt pending bits.
mbed_official 126:549ba18ddd81 1290 * @param ADCx: where x can be 1, 2 or 3 to select the ADC peripheral.
mbed_official 126:549ba18ddd81 1291 * @param ADC_IT: specifies the ADC interrupt pending bit to clear.
mbed_official 126:549ba18ddd81 1292 * This parameter can be any combination of the following values:
mbed_official 126:549ba18ddd81 1293 * @arg ADC_IT_EOC: End of conversion interrupt mask
mbed_official 126:549ba18ddd81 1294 * @arg ADC_IT_AWD: Analog watchdog interrupt mask
mbed_official 126:549ba18ddd81 1295 * @arg ADC_IT_JEOC: End of injected conversion interrupt mask
mbed_official 126:549ba18ddd81 1296 * @retval None
mbed_official 126:549ba18ddd81 1297 */
mbed_official 126:549ba18ddd81 1298 void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT)
mbed_official 126:549ba18ddd81 1299 {
mbed_official 126:549ba18ddd81 1300 uint8_t itmask = 0;
mbed_official 126:549ba18ddd81 1301 /* Check the parameters */
mbed_official 126:549ba18ddd81 1302 assert_param(IS_ADC_ALL_PERIPH(ADCx));
mbed_official 126:549ba18ddd81 1303 assert_param(IS_ADC_IT(ADC_IT));
mbed_official 126:549ba18ddd81 1304 /* Get the ADC IT index */
mbed_official 126:549ba18ddd81 1305 itmask = (uint8_t)(ADC_IT >> 8);
mbed_official 126:549ba18ddd81 1306 /* Clear the selected ADC interrupt pending bits */
mbed_official 126:549ba18ddd81 1307 ADCx->SR = ~(uint32_t)itmask;
mbed_official 126:549ba18ddd81 1308 }
mbed_official 126:549ba18ddd81 1309
mbed_official 126:549ba18ddd81 1310 /**
mbed_official 126:549ba18ddd81 1311 * @}
mbed_official 126:549ba18ddd81 1312 */
mbed_official 126:549ba18ddd81 1313
mbed_official 126:549ba18ddd81 1314 /**
mbed_official 126:549ba18ddd81 1315 * @}
mbed_official 126:549ba18ddd81 1316 */
mbed_official 126:549ba18ddd81 1317
mbed_official 126:549ba18ddd81 1318 /**
mbed_official 126:549ba18ddd81 1319 * @}
mbed_official 126:549ba18ddd81 1320 */
mbed_official 126:549ba18ddd81 1321
mbed_official 126:549ba18ddd81 1322 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/