]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil/ST_Library/include/stm32f7xx_hal_adc.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil / ST_Library / include / stm32f7xx_hal_adc.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_adc.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    24-March-2015\r
7   * @brief   Header file of ADC HAL extension module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */\r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_ADC_H\r
40 #define __STM32F7xx_ADC_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup ADC\r
54   * @{\r
55   */ \r
56 \r
57 /* Exported types ------------------------------------------------------------*/\r
58 /** @defgroup ADC_Exported_Types ADC Exported Types\r
59   * @{\r
60   */\r
61    \r
62 /** \r
63   * @brief  HAL State structures definition  \r
64   */ \r
65 typedef enum\r
66 {\r
67   HAL_ADC_STATE_RESET                   = 0x00,    /*!< ADC not yet initialized or disabled */\r
68   HAL_ADC_STATE_READY                   = 0x01,    /*!< ADC peripheral ready for use */\r
69   HAL_ADC_STATE_BUSY                    = 0x02,    /*!< An internal process is ongoing */ \r
70   HAL_ADC_STATE_BUSY_REG                = 0x12,    /*!< Regular conversion is ongoing */\r
71   HAL_ADC_STATE_BUSY_INJ                = 0x22,    /*!< Injected conversion is ongoing */\r
72   HAL_ADC_STATE_BUSY_INJ_REG            = 0x32,    /*!< Injected and regular conversion are ongoing */\r
73   HAL_ADC_STATE_TIMEOUT                 = 0x03,    /*!< Timeout state */\r
74   HAL_ADC_STATE_ERROR                   = 0x04,    /*!< ADC state error */\r
75   HAL_ADC_STATE_EOC                     = 0x05,    /*!< Conversion is completed */\r
76   HAL_ADC_STATE_EOC_REG                 = 0x15,    /*!< Regular conversion is completed */\r
77   HAL_ADC_STATE_EOC_INJ                 = 0x25,    /*!< Injected conversion is completed */\r
78   HAL_ADC_STATE_EOC_INJ_REG             = 0x35,    /*!< Injected and regular conversion are completed */\r
79   HAL_ADC_STATE_AWD                     = 0x06    /*!< ADC state analog watchdog */\r
80 \r
81 }HAL_ADC_StateTypeDef;\r
82 \r
83 /** \r
84   * @brief   ADC Init structure definition  \r
85   */ \r
86 typedef struct\r
87 {\r
88   uint32_t ClockPrescaler;        /*!< Select the frequency of the clock to the ADC. The clock is common for \r
89                                        all the ADCs.\r
90                                        This parameter can be a value of @ref ADC_ClockPrescaler */\r
91   uint32_t Resolution;            /*!< Configures the ADC resolution dual mode. \r
92                                        This parameter can be a value of @ref ADC_Resolution */\r
93   uint32_t DataAlign;             /*!< Specifies whether the ADC data  alignment is left or right.  \r
94                                        This parameter can be a value of @ref ADC_data_align */\r
95   uint32_t ScanConvMode;          /*!< Specifies whether the conversion is performed in Scan (multi channels) or \r
96                                        Single (one channel) mode.\r
97                                        This parameter can be set to ENABLE or DISABLE */ \r
98   uint32_t EOCSelection;          /*!< Specifies whether the EOC flag is set \r
99                                        at the end of single channel conversion or at the end of all conversions.\r
100                                        This parameter can be a value of @ref ADC_EOCSelection */\r
101   uint32_t ContinuousConvMode;    /*!< Specifies whether the conversion is performed in Continuous or Single mode.\r
102                                        This parameter can be set to ENABLE or DISABLE. */\r
103   uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests is performed in Continuous or in Single mode.\r
104                                        This parameter can be set to ENABLE or DISABLE. */ \r
105   uint32_t NbrOfConversion;       /*!< Specifies the number of ADC conversions that will be done using the sequencer for\r
106                                        regular channel group.\r
107                                        This parameter must be a number between Min_Data = 1 and Max_Data = 16. */\r
108   uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversion is performed in Discontinuous or not \r
109                                        for regular channels.\r
110                                        This parameter can be set to ENABLE or DISABLE. */\r
111   uint32_t NbrOfDiscConversion;   /*!< Specifies the number of ADC discontinuous conversions that will be done \r
112                                        using the sequencer for regular channel group.\r
113                                        This parameter must be a number between Min_Data = 1 and Max_Data = 8. */\r
114   uint32_t ExternalTrigConv;      /*!< Selects the external event used to trigger the conversion start of regular group.\r
115                                        If set to ADC_SOFTWARE_START, external triggers are disabled.\r
116                                        This parameter can be a value of @ref ADC_External_trigger_Source_Regular\r
117                                        Note: This parameter can be modified only if there is no conversion is ongoing. */\r
118   uint32_t ExternalTrigConvEdge;  /*!< Selects the external trigger edge of regular group.\r
119                                        If trigger is set to ADC_SOFTWARE_START, this parameter is discarded.\r
120                                        This parameter can be a value of @ref ADC_External_trigger_edge_Regular\r
121                                        Note: This parameter can be modified only if there is no conversion is ongoing. */\r
122 }ADC_InitTypeDef;\r
123 \r
124 /** \r
125   * @brief  ADC handle Structure definition\r
126   */ \r
127 typedef struct\r
128 {\r
129   ADC_TypeDef                   *Instance;                   /*!< Register base address */\r
130 \r
131   ADC_InitTypeDef               Init;                        /*!< ADC required parameters */\r
132 \r
133   __IO uint32_t                 NbrOfCurrentConversionRank;  /*!< ADC number of current conversion rank */\r
134 \r
135   DMA_HandleTypeDef             *DMA_Handle;                 /*!< Pointer DMA Handler */\r
136 \r
137   HAL_LockTypeDef               Lock;                        /*!< ADC locking object */\r
138 \r
139   __IO HAL_ADC_StateTypeDef     State;                       /*!< ADC communication state */\r
140 \r
141   __IO uint32_t                 ErrorCode;                   /*!< ADC Error code */\r
142 }ADC_HandleTypeDef;\r
143 \r
144 /** \r
145   * @brief   ADC Configuration regular Channel structure definition\r
146   */ \r
147 typedef struct \r
148 {\r
149   uint32_t Channel;        /*!< The ADC channel to configure. \r
150                                 This parameter can be a value of @ref ADC_channels */\r
151   uint32_t Rank;           /*!< The rank in the regular group sequencer. \r
152                                 This parameter must be a number between Min_Data = 1 and Max_Data = 16 */\r
153   uint32_t SamplingTime;   /*!< The sample time value to be set for the selected channel.\r
154                                 This parameter can be a value of @ref ADC_sampling_times */\r
155   uint32_t Offset;         /*!< Reserved for future use, can be set to 0 */\r
156 }ADC_ChannelConfTypeDef;\r
157 \r
158 /** \r
159   * @brief   ADC Configuration multi-mode structure definition  \r
160   */ \r
161 typedef struct\r
162 {\r
163   uint32_t WatchdogMode;      /*!< Configures the ADC analog watchdog mode.\r
164                                    This parameter can be a value of @ref ADC_analog_watchdog_selection */\r
165   uint32_t HighThreshold;     /*!< Configures the ADC analog watchdog High threshold value.\r
166                                    This parameter must be a 12-bit value. */     \r
167   uint32_t LowThreshold;      /*!< Configures the ADC analog watchdog High threshold value.\r
168                                    This parameter must be a 12-bit value. */\r
169   uint32_t Channel;           /*!< Configures ADC channel for the analog watchdog. \r
170                                    This parameter has an effect only if watchdog mode is configured on single channel \r
171                                    This parameter can be a value of @ref ADC_channels */      \r
172   uint32_t ITMode;            /*!< Specifies whether the analog watchdog is configured\r
173                                    is interrupt mode or in polling mode.\r
174                                    This parameter can be set to ENABLE or DISABLE */\r
175   uint32_t WatchdogNumber;    /*!< Reserved for future use, can be set to 0 */\r
176 }ADC_AnalogWDGConfTypeDef;\r
177 /**\r
178   * @}\r
179   */\r
180 \r
181 /* Exported constants --------------------------------------------------------*/\r
182 \r
183 /** @defgroup ADC_Exported_Constants ADC Exported Constants\r
184   * @{\r
185   */\r
186 \r
187 \r
188 /** @defgroup ADC_Error_Code ADC Error Code\r
189   * @{\r
190   */ \r
191 \r
192 #define HAL_ADC_ERROR_NONE        ((uint32_t)0x00)   /*!< No error             */\r
193 #define HAL_ADC_ERROR_OVR         ((uint32_t)0x01)   /*!< OVR error            */\r
194 #define HAL_ADC_ERROR_DMA         ((uint32_t)0x02)   /*!< DMA transfer error   */\r
195 /**\r
196   * @}\r
197   */  \r
198 \r
199 \r
200 /** @defgroup ADC_ClockPrescaler ADC Clock Prescaler\r
201   * @{\r
202   */ \r
203 #define ADC_CLOCKPRESCALER_PCLK_DIV2    ((uint32_t)0x00000000)\r
204 #define ADC_CLOCKPRESCALER_PCLK_DIV4    ((uint32_t)ADC_CCR_ADCPRE_0)\r
205 #define ADC_CLOCKPRESCALER_PCLK_DIV6    ((uint32_t)ADC_CCR_ADCPRE_1)\r
206 #define ADC_CLOCKPRESCALER_PCLK_DIV8    ((uint32_t)ADC_CCR_ADCPRE)\r
207 /**\r
208   * @}\r
209   */ \r
210 \r
211 /** @defgroup ADC_delay_between_2_sampling_phases ADC Delay Between 2 Sampling Phases\r
212   * @{\r
213   */ \r
214 #define ADC_TWOSAMPLINGDELAY_5CYCLES    ((uint32_t)0x00000000)\r
215 #define ADC_TWOSAMPLINGDELAY_6CYCLES    ((uint32_t)ADC_CCR_DELAY_0)\r
216 #define ADC_TWOSAMPLINGDELAY_7CYCLES    ((uint32_t)ADC_CCR_DELAY_1)\r
217 #define ADC_TWOSAMPLINGDELAY_8CYCLES    ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))\r
218 #define ADC_TWOSAMPLINGDELAY_9CYCLES    ((uint32_t)ADC_CCR_DELAY_2)\r
219 #define ADC_TWOSAMPLINGDELAY_10CYCLES   ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))\r
220 #define ADC_TWOSAMPLINGDELAY_11CYCLES   ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))\r
221 #define ADC_TWOSAMPLINGDELAY_12CYCLES   ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))\r
222 #define ADC_TWOSAMPLINGDELAY_13CYCLES   ((uint32_t)ADC_CCR_DELAY_3)\r
223 #define ADC_TWOSAMPLINGDELAY_14CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0))\r
224 #define ADC_TWOSAMPLINGDELAY_15CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1))\r
225 #define ADC_TWOSAMPLINGDELAY_16CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))\r
226 #define ADC_TWOSAMPLINGDELAY_17CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2))\r
227 #define ADC_TWOSAMPLINGDELAY_18CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))\r
228 #define ADC_TWOSAMPLINGDELAY_19CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))\r
229 #define ADC_TWOSAMPLINGDELAY_20CYCLES   ((uint32_t)ADC_CCR_DELAY)\r
230 /**\r
231   * @}\r
232   */ \r
233 \r
234 /** @defgroup ADC_Resolution ADC Resolution\r
235   * @{\r
236   */ \r
237 #define ADC_RESOLUTION_12B  ((uint32_t)0x00000000)\r
238 #define ADC_RESOLUTION_10B  ((uint32_t)ADC_CR1_RES_0)\r
239 #define ADC_RESOLUTION_8B   ((uint32_t)ADC_CR1_RES_1)\r
240 #define ADC_RESOLUTION_6B   ((uint32_t)ADC_CR1_RES)\r
241 /**\r
242   * @}\r
243   */ \r
244 \r
245 /** @defgroup ADC_External_trigger_edge_Regular ADC External Trigger Edge Regular\r
246   * @{\r
247   */ \r
248 #define ADC_EXTERNALTRIGCONVEDGE_NONE           ((uint32_t)0x00000000)\r
249 #define ADC_EXTERNALTRIGCONVEDGE_RISING         ((uint32_t)ADC_CR2_EXTEN_0)\r
250 #define ADC_EXTERNALTRIGCONVEDGE_FALLING        ((uint32_t)ADC_CR2_EXTEN_1)\r
251 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING  ((uint32_t)ADC_CR2_EXTEN)\r
252 /**\r
253   * @}\r
254   */ \r
255 \r
256 /** @defgroup ADC_External_trigger_Source_Regular ADC External Trigger Source Regular\r
257   * @{\r
258   */\r
259 /* Note: Parameter ADC_SOFTWARE_START is a software parameter used for        */\r
260 /*       compatibility with other STM32 devices.                              */\r
261 #define ADC_EXTERNALTRIGCONV_T1_CC1    ((uint32_t)0x00000000)\r
262 #define ADC_EXTERNALTRIGCONV_T1_CC2    ((uint32_t)ADC_CR2_EXTSEL_0)\r
263 #define ADC_EXTERNALTRIGCONV_T1_CC3    ((uint32_t)ADC_CR2_EXTSEL_1)\r
264 #define ADC_EXTERNALTRIGCONV_T2_CC2    ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))\r
265 #define ADC_EXTERNALTRIGCONV_T5_TRGO   ((uint32_t)ADC_CR2_EXTSEL_2)\r
266 #define ADC_EXTERNALTRIGCONV_T4_CC4    ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))\r
267 #define ADC_EXTERNALTRIGCONV_T3_CC4    ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))\r
268 #define ADC_EXTERNALTRIGCONV_T8_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))\r
269 #define ADC_EXTERNALTRIGCONV_T8_TRGO2  ((uint32_t)ADC_CR2_EXTSEL_3)\r
270 #define ADC_EXTERNALTRIGCONV_T1_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))\r
271 #define ADC_EXTERNALTRIGCONV_T1_TRGO2  ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1))\r
272 #define ADC_EXTERNALTRIGCONV_T2_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))\r
273 #define ADC_EXTERNALTRIGCONV_T4_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2))\r
274 #define ADC_EXTERNALTRIGCONV_T6_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))\r
275 \r
276 #define ADC_EXTERNALTRIGCONV_EXT_IT11  ((uint32_t)ADC_CR2_EXTSEL)\r
277 #define ADC_SOFTWARE_START             ((uint32_t)ADC_CR2_EXTSEL + 1)\r
278 /**\r
279   * @}\r
280   */ \r
281 \r
282 /** @defgroup ADC_data_align ADC Data Align \r
283   * @{\r
284   */ \r
285 #define ADC_DATAALIGN_RIGHT      ((uint32_t)0x00000000)\r
286 #define ADC_DATAALIGN_LEFT       ((uint32_t)ADC_CR2_ALIGN)\r
287 /**\r
288   * @}\r
289   */ \r
290 \r
291 /** @defgroup ADC_channels ADC Common Channels\r
292   * @{\r
293   */ \r
294 #define ADC_CHANNEL_0           ((uint32_t)0x00000000)\r
295 #define ADC_CHANNEL_1           ((uint32_t)ADC_CR1_AWDCH_0)\r
296 #define ADC_CHANNEL_2           ((uint32_t)ADC_CR1_AWDCH_1)\r
297 #define ADC_CHANNEL_3           ((uint32_t)(ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
298 #define ADC_CHANNEL_4           ((uint32_t)ADC_CR1_AWDCH_2)\r
299 #define ADC_CHANNEL_5           ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))\r
300 #define ADC_CHANNEL_6           ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))\r
301 #define ADC_CHANNEL_7           ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
302 #define ADC_CHANNEL_8           ((uint32_t)ADC_CR1_AWDCH_3)\r
303 #define ADC_CHANNEL_9           ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0))\r
304 #define ADC_CHANNEL_10          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1))\r
305 #define ADC_CHANNEL_11          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
306 #define ADC_CHANNEL_12          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2))\r
307 #define ADC_CHANNEL_13          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))\r
308 #define ADC_CHANNEL_14          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))\r
309 #define ADC_CHANNEL_15          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
310 #define ADC_CHANNEL_16          ((uint32_t)ADC_CR1_AWDCH_4)\r
311 #define ADC_CHANNEL_17          ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0))\r
312 #define ADC_CHANNEL_18          ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1))\r
313 \r
314 #define ADC_CHANNEL_TEMPSENSOR  ((uint32_t)ADC_CHANNEL_16)\r
315 #define ADC_CHANNEL_VREFINT     ((uint32_t)ADC_CHANNEL_17)\r
316 #define ADC_CHANNEL_VBAT        ((uint32_t)ADC_CHANNEL_18)\r
317 /**\r
318   * @}\r
319   */ \r
320 \r
321 /** @defgroup ADC_sampling_times ADC Sampling Times\r
322   * @{\r
323   */ \r
324 #define ADC_SAMPLETIME_3CYCLES    ((uint32_t)0x00000000)\r
325 #define ADC_SAMPLETIME_15CYCLES   ((uint32_t)ADC_SMPR1_SMP10_0)\r
326 #define ADC_SAMPLETIME_28CYCLES   ((uint32_t)ADC_SMPR1_SMP10_1)\r
327 #define ADC_SAMPLETIME_56CYCLES   ((uint32_t)(ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0))\r
328 #define ADC_SAMPLETIME_84CYCLES   ((uint32_t)ADC_SMPR1_SMP10_2)\r
329 #define ADC_SAMPLETIME_112CYCLES  ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0))\r
330 #define ADC_SAMPLETIME_144CYCLES  ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1))\r
331 #define ADC_SAMPLETIME_480CYCLES  ((uint32_t)ADC_SMPR1_SMP10)\r
332 /**\r
333   * @}\r
334   */ \r
335 \r
336   /** @defgroup ADC_EOCSelection ADC EOC Selection\r
337   * @{\r
338   */ \r
339 #define ADC_EOC_SEQ_CONV              ((uint32_t)0x00000000)\r
340 #define ADC_EOC_SINGLE_CONV           ((uint32_t)0x00000001)\r
341 #define ADC_EOC_SINGLE_SEQ_CONV       ((uint32_t)0x00000002)  /*!< reserved for future use */\r
342 /**\r
343   * @}\r
344   */ \r
345 \r
346 /** @defgroup ADC_Event_type ADC Event Type\r
347   * @{\r
348   */ \r
349 #define ADC_AWD_EVENT             ((uint32_t)ADC_FLAG_AWD)\r
350 #define ADC_OVR_EVENT             ((uint32_t)ADC_FLAG_OVR)\r
351 /**\r
352   * @}\r
353   */\r
354 \r
355 /** @defgroup ADC_analog_watchdog_selection ADC Analog Watchdog Selection\r
356   * @{\r
357   */ \r
358 #define ADC_ANALOGWATCHDOG_SINGLE_REG         ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))\r
359 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC       ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))\r
360 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC    ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))\r
361 #define ADC_ANALOGWATCHDOG_ALL_REG            ((uint32_t)ADC_CR1_AWDEN)\r
362 #define ADC_ANALOGWATCHDOG_ALL_INJEC          ((uint32_t)ADC_CR1_JAWDEN)\r
363 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC       ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))\r
364 #define ADC_ANALOGWATCHDOG_NONE               ((uint32_t)0x00000000)\r
365 /**\r
366   * @}\r
367   */ \r
368     \r
369 /** @defgroup ADC_interrupts_definition ADC Interrupts Definition\r
370   * @{\r
371   */ \r
372 #define ADC_IT_EOC      ((uint32_t)ADC_CR1_EOCIE)  \r
373 #define ADC_IT_AWD      ((uint32_t)ADC_CR1_AWDIE) \r
374 #define ADC_IT_JEOC     ((uint32_t)ADC_CR1_JEOCIE)\r
375 #define ADC_IT_OVR      ((uint32_t)ADC_CR1_OVRIE) \r
376 /**\r
377   * @}\r
378   */ \r
379     \r
380 /** @defgroup ADC_flags_definition ADC Flags Definition\r
381   * @{\r
382   */ \r
383 #define ADC_FLAG_AWD    ((uint32_t)ADC_SR_AWD)\r
384 #define ADC_FLAG_EOC    ((uint32_t)ADC_SR_EOC)\r
385 #define ADC_FLAG_JEOC   ((uint32_t)ADC_SR_JEOC)\r
386 #define ADC_FLAG_JSTRT  ((uint32_t)ADC_SR_JSTRT)\r
387 #define ADC_FLAG_STRT   ((uint32_t)ADC_SR_STRT)\r
388 #define ADC_FLAG_OVR    ((uint32_t)ADC_SR_OVR)\r
389 /**\r
390   * @}\r
391   */ \r
392 \r
393 /** @defgroup ADC_channels_type ADC Channels Type\r
394   * @{\r
395   */ \r
396 #define ADC_ALL_CHANNELS      ((uint32_t)0x00000001)\r
397 #define ADC_REGULAR_CHANNELS  ((uint32_t)0x00000002) /*!< reserved for future use */\r
398 #define ADC_INJECTED_CHANNELS ((uint32_t)0x00000003) /*!< reserved for future use */\r
399 /**\r
400   * @}\r
401   */\r
402 \r
403 /**\r
404   * @}\r
405   */\r
406 \r
407 /* Exported macro ------------------------------------------------------------*/\r
408 /** @defgroup ADC_Exported_Macros ADC Exported Macros\r
409   * @{\r
410   */\r
411         \r
412 /** @brief Reset ADC handle state\r
413   * @param  __HANDLE__: ADC handle\r
414   * @retval None\r
415   */\r
416 #define __HAL_ADC_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_ADC_STATE_RESET)\r
417 \r
418 /**\r
419   * @brief  Enable the ADC peripheral.\r
420   * @param  __HANDLE__: ADC handle\r
421   * @retval None\r
422   */\r
423 #define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 |=  ADC_CR2_ADON)\r
424 \r
425 /**\r
426   * @brief  Disable the ADC peripheral.\r
427   * @param  __HANDLE__: ADC handle\r
428   * @retval None\r
429   */\r
430 #define __HAL_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 &=  ~ADC_CR2_ADON)\r
431 \r
432 /**\r
433   * @brief  Enable the ADC end of conversion interrupt.\r
434   * @param  __HANDLE__: specifies the ADC Handle.\r
435   * @param  __INTERRUPT__: ADC Interrupt.\r
436   * @retval None\r
437   */\r
438 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__))\r
439 \r
440 /**\r
441   * @brief  Disable the ADC end of conversion interrupt.\r
442   * @param  __HANDLE__: specifies the ADC Handle.\r
443   * @param  __INTERRUPT__: ADC interrupt.\r
444   * @retval None\r
445   */\r
446 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__))\r
447 \r
448 /** @brief  Check if the specified ADC interrupt source is enabled or disabled.\r
449   * @param  __HANDLE__: specifies the ADC Handle.\r
450   * @param  __INTERRUPT__: specifies the ADC interrupt source to check.\r
451   * @retval The new state of __IT__ (TRUE or FALSE).\r
452   */\r
453 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  (((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__))\r
454 \r
455 /**\r
456   * @brief  Clear the ADC's pending flags.\r
457   * @param  __HANDLE__: specifies the ADC Handle.\r
458   * @param  __FLAG__: ADC flag.\r
459   * @retval None\r
460   */\r
461 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) = ~(__FLAG__))\r
462 \r
463 /**\r
464   * @brief  Get the selected ADC's flag status.\r
465   * @param  __HANDLE__: specifies the ADC Handle.\r
466   * @param  __FLAG__: ADC flag.\r
467   * @retval None\r
468   */\r
469 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))\r
470 \r
471 /**\r
472   * @}\r
473   */\r
474 \r
475 /* Include ADC HAL Extension module */\r
476 #include "stm32f7xx_hal_adc_ex.h"\r
477 \r
478 /* Exported functions --------------------------------------------------------*/\r
479 /** @addtogroup ADC_Exported_Functions\r
480   * @{\r
481   */\r
482 \r
483 /** @addtogroup ADC_Exported_Functions_Group1\r
484   * @{\r
485   */\r
486 /* Initialization/de-initialization functions ***********************************/\r
487 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);\r
488 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);\r
489 void       HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);\r
490 void       HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);\r
491 /**\r
492   * @}\r
493   */\r
494 \r
495 /** @addtogroup ADC_Exported_Functions_Group2\r
496   * @{\r
497   */\r
498 /* I/O operation functions ******************************************************/\r
499 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);\r
500 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);\r
501 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);\r
502 \r
503 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);\r
504 \r
505 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);\r
506 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);\r
507 \r
508 void              HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);\r
509 \r
510 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);\r
511 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);\r
512 \r
513 uint32_t          HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);\r
514 \r
515 void       HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);\r
516 void       HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);\r
517 void       HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);\r
518 void       HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);\r
519 /**\r
520   * @}\r
521   */\r
522 \r
523 /** @addtogroup ADC_Exported_Functions_Group3\r
524   * @{\r
525   */\r
526 /* Peripheral Control functions *************************************************/\r
527 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);\r
528 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);\r
529 /**\r
530   * @}\r
531   */\r
532 \r
533 /** @addtogroup ADC_Exported_Functions_Group4\r
534   * @{\r
535   */\r
536 /* Peripheral State functions ***************************************************/\r
537 HAL_ADC_StateTypeDef HAL_ADC_GetState(ADC_HandleTypeDef* hadc);\r
538 uint32_t             HAL_ADC_GetError(ADC_HandleTypeDef *hadc);\r
539 /**\r
540   * @}\r
541   */\r
542 \r
543 /**\r
544   * @}\r
545   */ \r
546 \r
547 /* Private types -------------------------------------------------------------*/\r
548 /* Private variables ---------------------------------------------------------*/\r
549 /* Private constants ---------------------------------------------------------*/\r
550 /** @defgroup ADC_Private_Constants ADC Private Constants\r
551   * @{\r
552   */\r
553 /* Delay for ADC stabilization time.                                        */\r
554 /* Maximum delay is 1us (refer to device datasheet, parameter tSTAB).       */\r
555 /* Unit: us                                                                 */\r
556 #define ADC_STAB_DELAY_US               ((uint32_t) 3)\r
557 /* Delay for temperature sensor stabilization time.                         */\r
558 /* Maximum delay is 10us (refer to device datasheet, parameter tSTART).     */\r
559 /* Unit: us                                                                 */\r
560 #define ADC_TEMPSENSOR_DELAY_US         ((uint32_t) 10)\r
561 /**\r
562   * @}\r
563   */\r
564 \r
565 /* Private macros ------------------------------------------------------------*/\r
566 /** @defgroup ADC_Private_Macros ADC Private Macros\r
567   * @{\r
568   */\r
569 #define IS_ADC_CLOCKPRESCALER(__ADC_CLOCK__)     (((__ADC_CLOCK__) == ADC_CLOCKPRESCALER_PCLK_DIV2) || \\r
570                                                   ((__ADC_CLOCK__) == ADC_CLOCKPRESCALER_PCLK_DIV4) || \\r
571                                                   ((__ADC_CLOCK__) == ADC_CLOCKPRESCALER_PCLK_DIV6) || \\r
572                                                   ((__ADC_CLOCK__) == ADC_CLOCKPRESCALER_PCLK_DIV8))\r
573 #define IS_ADC_SAMPLING_DELAY(__DELAY__) (((__DELAY__) == ADC_TWOSAMPLINGDELAY_5CYCLES)  || \\r
574                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_6CYCLES)  || \\r
575                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_7CYCLES)  || \\r
576                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_8CYCLES)  || \\r
577                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_9CYCLES)  || \\r
578                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \\r
579                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \\r
580                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_12CYCLES) || \\r
581                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_13CYCLES) || \\r
582                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_14CYCLES) || \\r
583                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_15CYCLES) || \\r
584                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_16CYCLES) || \\r
585                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_17CYCLES) || \\r
586                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_18CYCLES) || \\r
587                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_19CYCLES) || \\r
588                                           ((__DELAY__) == ADC_TWOSAMPLINGDELAY_20CYCLES))\r
589 #define IS_ADC_RESOLUTION(__RESOLUTION__) (((__RESOLUTION__) == ADC_RESOLUTION_12B) || \\r
590                                            ((__RESOLUTION__) == ADC_RESOLUTION_10B) || \\r
591                                            ((__RESOLUTION__) == ADC_RESOLUTION_8B)  || \\r
592                                            ((__RESOLUTION__) == ADC_RESOLUTION_6B))                     \r
593 #define IS_ADC_EXT_TRIG_EDGE(__EDGE__) (((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_NONE)    || \\r
594                                         ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISING)  || \\r
595                                         ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \\r
596                                         ((__EDGE__) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING))\r
597 #define IS_ADC_EXT_TRIG(__REGTRIG__) (((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_CC1)   || \\r
598                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_CC2)   || \\r
599                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_CC3)   || \\r
600                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T2_CC2)   || \\r
601                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T5_TRGO)  || \\r
602                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T4_CC4)   || \\r
603                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T3_CC4) || \\r
604                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T8_TRGO)  || \\r
605                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T8_TRGO2) || \\r
606                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \\r
607                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T1_TRGO2) || \\r
608                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T2_TRGO)  || \\r
609                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T4_TRGO)  || \\r
610                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_T6_TRGO)  || \\r
611                                       ((__REGTRIG__) == ADC_EXTERNALTRIGCONV_EXT_IT11) || \\r
612                                                                                                                                                         ((__REGTRIG__) == ADC_SOFTWARE_START))\r
613 #define IS_ADC_DATA_ALIGN(__ALIGN__) (((__ALIGN__) == ADC_DATAALIGN_RIGHT) || \\r
614                                       ((__ALIGN__) == ADC_DATAALIGN_LEFT))              \r
615 #define IS_ADC_CHANNEL(__CHANNEL__) (((__CHANNEL__) == ADC_CHANNEL_0)  || \\r
616                                      ((__CHANNEL__) == ADC_CHANNEL_1)  || \\r
617                                      ((__CHANNEL__) == ADC_CHANNEL_2)  || \\r
618                                      ((__CHANNEL__) == ADC_CHANNEL_3)  || \\r
619                                      ((__CHANNEL__) == ADC_CHANNEL_4)  || \\r
620                                      ((__CHANNEL__) == ADC_CHANNEL_5)  || \\r
621                                      ((__CHANNEL__) == ADC_CHANNEL_6)  || \\r
622                                      ((__CHANNEL__) == ADC_CHANNEL_7)  || \\r
623                                      ((__CHANNEL__) == ADC_CHANNEL_8)  || \\r
624                                      ((__CHANNEL__) == ADC_CHANNEL_9)  || \\r
625                                      ((__CHANNEL__) == ADC_CHANNEL_10) || \\r
626                                      ((__CHANNEL__) == ADC_CHANNEL_11) || \\r
627                                      ((__CHANNEL__) == ADC_CHANNEL_12) || \\r
628                                      ((__CHANNEL__) == ADC_CHANNEL_13) || \\r
629                                      ((__CHANNEL__) == ADC_CHANNEL_14) || \\r
630                                      ((__CHANNEL__) == ADC_CHANNEL_15) || \\r
631                                      ((__CHANNEL__) == ADC_CHANNEL_16) || \\r
632                                      ((__CHANNEL__) == ADC_CHANNEL_17) || \\r
633                                      ((__CHANNEL__) == ADC_CHANNEL_18))                                                                         \r
634 #define IS_ADC_SAMPLE_TIME(__TIME__) (((__TIME__) == ADC_SAMPLETIME_3CYCLES)   || \\r
635                                       ((__TIME__) == ADC_SAMPLETIME_15CYCLES)  || \\r
636                                       ((__TIME__) == ADC_SAMPLETIME_28CYCLES)  || \\r
637                                       ((__TIME__) == ADC_SAMPLETIME_56CYCLES)  || \\r
638                                       ((__TIME__) == ADC_SAMPLETIME_84CYCLES)  || \\r
639                                       ((__TIME__) == ADC_SAMPLETIME_112CYCLES) || \\r
640                                       ((__TIME__) == ADC_SAMPLETIME_144CYCLES) || \\r
641                                       ((__TIME__) == ADC_SAMPLETIME_480CYCLES)) \r
642 #define IS_ADC_EOCSelection(__EOCSelection__) (((__EOCSelection__) == ADC_EOC_SINGLE_CONV)   || \\r
643                                                ((__EOCSelection__) == ADC_EOC_SEQ_CONV)  || \\r
644                                                ((__EOCSelection__) == ADC_EOC_SINGLE_SEQ_CONV)) \r
645 #define IS_ADC_EVENT_TYPE(__EVENT__) (((__EVENT__) == ADC_AWD_EVENT) || \\r
646                                       ((__EVENT__) == ADC_OVR_EVENT))           \r
647 #define IS_ADC_ANALOG_WATCHDOG(__WATCHDOG__) (((__WATCHDOG__) == ADC_ANALOGWATCHDOG_SINGLE_REG)        || \\r
648                                               ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_SINGLE_INJEC)      || \\r
649                                               ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC)   || \\r
650                                               ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_ALL_REG)           || \\r
651                                               ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_ALL_INJEC)         || \\r
652                                               ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_ALL_REGINJEC)      || \\r
653                                               ((__WATCHDOG__) == ADC_ANALOGWATCHDOG_NONE))\r
654 #define IS_ADC_CHANNELS_TYPE(CHANNEL_TYPE) (((CHANNEL_TYPE) == ADC_ALL_CHANNELS) || \\r
655                                             ((CHANNEL_TYPE) == ADC_REGULAR_CHANNELS) || \\r
656                                             ((CHANNEL_TYPE) == ADC_INJECTED_CHANNELS))\r
657 #define IS_ADC_THRESHOLD(__THRESHOLD__) ((__THRESHOLD__) <= ((uint32_t)0xFFF))\r
658 #define IS_ADC_REGULAR_LENGTH(__LENGTH__) (((__LENGTH__) >= ((uint32_t)1)) && ((__LENGTH__) <= ((uint32_t)16)))\r
659 #define IS_ADC_REGULAR_RANK(__RANK__) (((__RANK__) >= ((uint32_t)1)) && ((__RANK__) <= ((uint32_t)16)))\r
660 #define IS_ADC_REGULAR_DISC_NUMBER(__NUMBER__) (((__NUMBER__) >= ((uint32_t)1)) && ((__NUMBER__) <= ((uint32_t)8)))\r
661 #define IS_ADC_RANGE(__RESOLUTION__, __ADC_VALUE__)                                     \\r
662    ((((__RESOLUTION__) == ADC_RESOLUTION_12B) && ((__ADC_VALUE__) <= ((uint32_t)0x0FFF))) || \\r
663     (((__RESOLUTION__) == ADC_RESOLUTION_10B) && ((__ADC_VALUE__) <= ((uint32_t)0x03FF))) || \\r
664     (((__RESOLUTION__) == ADC_RESOLUTION_8B)  && ((__ADC_VALUE__) <= ((uint32_t)0x00FF))) || \\r
665     (((__RESOLUTION__) == ADC_RESOLUTION_6B)  && ((__ADC_VALUE__) <= ((uint32_t)0x003F))))\r
666 \r
667 /**\r
668   * @brief  Set ADC Regular channel sequence length.\r
669   * @param  _NbrOfConversion_: Regular channel sequence length. \r
670   * @retval None\r
671   */\r
672 #define ADC_SQR1(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1) << 20)\r
673 \r
674 /**\r
675   * @brief  Set the ADC's sample time for channel numbers between 10 and 18.\r
676   * @param  _SAMPLETIME_: Sample time parameter.\r
677   * @param  _CHANNELNB_: Channel number.  \r
678   * @retval None\r
679   */\r
680 #define ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * (((uint32_t)((uint16_t)(_CHANNELNB_))) - 10)))\r
681 \r
682 /**\r
683   * @brief  Set the ADC's sample time for channel numbers between 0 and 9.\r
684   * @param  _SAMPLETIME_: Sample time parameter.\r
685   * @param  _CHANNELNB_: Channel number.  \r
686   * @retval None\r
687   */\r
688 #define ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * ((uint32_t)((uint16_t)(_CHANNELNB_)))))\r
689 \r
690 /**\r
691   * @brief  Set the selected regular channel rank for rank between 1 and 6.\r
692   * @param  _CHANNELNB_: Channel number.\r
693   * @param  _RANKNB_: Rank number.    \r
694   * @retval None\r
695   */\r
696 #define ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * ((_RANKNB_) - 1)))\r
697 \r
698 /**\r
699   * @brief  Set the selected regular channel rank for rank between 7 and 12.\r
700   * @param  _CHANNELNB_: Channel number.\r
701   * @param  _RANKNB_: Rank number.    \r
702   * @retval None\r
703   */\r
704 #define ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * ((_RANKNB_) - 7)))\r
705 \r
706 /**\r
707   * @brief  Set the selected regular channel rank for rank between 13 and 16.\r
708   * @param  _CHANNELNB_: Channel number.\r
709   * @param  _RANKNB_: Rank number.    \r
710   * @retval None\r
711   */\r
712 #define ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) (((uint32_t)((uint16_t)(_CHANNELNB_))) << (5 * ((_RANKNB_) - 13)))\r
713 \r
714 /**\r
715   * @brief  Enable ADC continuous conversion mode.\r
716   * @param  _CONTINUOUS_MODE_: Continuous mode.\r
717   * @retval None\r
718   */\r
719 #define ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1)\r
720 \r
721 /**\r
722   * @brief  Configures the number of discontinuous conversions for the regular group channels.\r
723   * @param  _NBR_DISCONTINUOUSCONV_: Number of discontinuous conversions.\r
724   * @retval None\r
725   */\r
726 #define ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_) (((_NBR_DISCONTINUOUSCONV_) - 1) << POSITION_VAL(ADC_CR1_DISCNUM))\r
727 \r
728 /**\r
729   * @brief  Enable ADC scan mode.\r
730   * @param  _SCANCONV_MODE_: Scan conversion mode.\r
731   * @retval None\r
732   */\r
733 #define ADC_CR1_SCANCONV(_SCANCONV_MODE_) ((_SCANCONV_MODE_) << 8)\r
734 \r
735 /**\r
736   * @brief  Enable the ADC end of conversion selection.\r
737   * @param  _EOCSelection_MODE_: End of conversion selection mode.\r
738   * @retval None\r
739   */\r
740 #define ADC_CR2_EOCSelection(_EOCSelection_MODE_) ((_EOCSelection_MODE_) << 10)\r
741 \r
742 /**\r
743   * @brief  Enable the ADC DMA continuous request.\r
744   * @param  _DMAContReq_MODE_: DMA continuous request mode.\r
745   * @retval None\r
746   */\r
747 #define ADC_CR2_DMAContReq(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 9)\r
748 \r
749 /**\r
750   * @brief Return resolution bits in CR1 register.\r
751   * @param __HANDLE__: ADC handle\r
752   * @retval None\r
753   */\r
754 #define ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CR1) & ADC_CR1_RES)\r
755                                                                                                                                 \r
756 /**\r
757   * @}\r
758   */\r
759         \r
760 /* Private functions ---------------------------------------------------------*/\r
761 /** @defgroup ADC_Private_Functions ADC Private Functions\r
762   * @{\r
763   */\r
764 \r
765 /**\r
766   * @}\r
767   */\r
768         \r
769 /**\r
770   * @}\r
771   */\r
772         \r
773 /**\r
774   * @}\r
775   */\r
776 \r
777 #ifdef __cplusplus\r
778 }\r
779 #endif\r
780 \r
781 #endif /*__STM32F7xx_ADC_H */\r
782 \r
783 \r
784 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r