Improve generic & stm32f4 demos
[lwext4.git] / demos / stm32f429_disco / stm / stm32f4_spl / inc / stm32f4xx_hal_adc.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f4xx_hal_adc.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0\r
6   * @date    18-February-2014\r
7   * @brief   Header file of ADC HAL extension module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2014 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 __STM32F4xx_ADC_H\r
40 #define __STM32F4xx_ADC_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f4xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F4xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup ADC\r
54   * @{\r
55   */ \r
56 \r
57 /* Exported types ------------------------------------------------------------*/\r
58    \r
59 /** \r
60   * @brief  HAL State structures definition  \r
61   */ \r
62 typedef enum\r
63 {\r
64   HAL_ADC_STATE_RESET                   = 0x00,    /*!< ADC not yet initialized or disabled */\r
65   HAL_ADC_STATE_READY                   = 0x01,    /*!< ADC peripheral ready for use */\r
66   HAL_ADC_STATE_BUSY                    = 0x02,    /*!< An internal process is ongoing */ \r
67   HAL_ADC_STATE_BUSY_REG                = 0x12,    /*!< Regular conversion is ongoing */\r
68   HAL_ADC_STATE_BUSY_INJ                = 0x22,    /*!< Injected conversion is ongoing */\r
69   HAL_ADC_STATE_BUSY_INJ_REG            = 0x32,    /*!< Injected and regular conversion are ongoing */\r
70   HAL_ADC_STATE_TIMEOUT                 = 0x03,    /*!< Timeout state */\r
71   HAL_ADC_STATE_ERROR                   = 0x04,    /*!< ADC state error */\r
72   HAL_ADC_STATE_EOC                     = 0x05,    /*!< Conversion is completed */\r
73   HAL_ADC_STATE_EOC_REG                 = 0x15,    /*!< Regular conversion is completed */\r
74   HAL_ADC_STATE_EOC_INJ                 = 0x25,    /*!< Injected conversion is completed */\r
75   HAL_ADC_STATE_EOC_INJ_REG             = 0x35,    /*!< Injected and regular conversion are completed */\r
76   HAL_ADC_STATE_AWD                     = 0x06    /*!< ADC state analog watchdog */\r
77 \r
78 }HAL_ADC_StateTypeDef;\r
79 \r
80 /** \r
81   * @brief   ADC Init structure definition  \r
82   */ \r
83 typedef struct\r
84 {\r
85   uint32_t ClockPrescaler;        /*!< Select the frequency of the clock to the ADC. The clock is common for \r
86                                        all the ADCs.\r
87                                        This parameter can be a value of @ref ADC_ClockPrescaler */\r
88   uint32_t Resolution;            /*!< Configures the ADC resolution dual mode. \r
89                                        This parameter can be a value of @ref ADC_Resolution */\r
90   uint32_t DataAlign;             /*!< Specifies whether the ADC data  alignment is left or right.  \r
91                                        This parameter can be a value of @ref ADC_data_align */\r
92   uint32_t ScanConvMode;          /*!< Specifies whether the conversion is performed in Scan (multi channels) or \r
93                                        Single (one channel) mode.\r
94                                        This parameter can be set to ENABLE or DISABLE */ \r
95   uint32_t EOCSelection;          /*!< Specifies whether the EOC flag is set \r
96                                        at the end of single channel conversion or at the end of all conversions.\r
97                                        This parameter can be a value of @ref ADC_EOCSelection */\r
98   uint32_t ContinuousConvMode;    /*!< Specifies whether the conversion is performed in Continuous or Single mode.\r
99                                        This parameter can be set to ENABLE or DISABLE. */\r
100   uint32_t DMAContinuousRequests; /*!< Specifies whether the DMA requests is performed in Continuous or in Single mode.\r
101                                        This parameter can be set to ENABLE or DISABLE. */ \r
102   uint32_t NbrOfConversion;       /*!< Specifies the number of ADC conversions that will be done using the sequencer for\r
103                                        regular channel group.\r
104                                        This parameter must be a number between Min_Data = 1 and Max_Data = 16. */\r
105   uint32_t DiscontinuousConvMode; /*!< Specifies whether the conversion is performed in Discontinuous or not \r
106                                        for regular channels.\r
107                                        This parameter can be set to ENABLE or DISABLE. */\r
108   uint32_t NbrOfDiscConversion;   /*!< Specifies the number of ADC discontinuous conversions that will be done \r
109                                        using the sequencer for regular channel group.\r
110                                        This parameter must be a number between Min_Data = 1 and Max_Data = 8. */\r
111   uint32_t ExternalTrigConvEdge;  /*!< Select the external trigger edge and enable the trigger of a regular group. \r
112                                        This parameter can be a value of @ref ADC_External_trigger_edge_Regular */\r
113   uint32_t ExternalTrigConv;      /*!< Select the external event used to trigger the start of conversion of a regular group.\r
114                                        This parameter can be a value of @ref ADC_External_trigger_Source_Regular */ \r
115 }ADC_InitTypeDef;\r
116 \r
117 /** \r
118   * @brief  ADC handle Structure definition\r
119   */ \r
120 typedef struct\r
121 {\r
122   ADC_TypeDef                   *Instance;                   /*!< Register base address */\r
123 \r
124   ADC_InitTypeDef               Init;                        /*!< ADC required parameters */\r
125 \r
126   __IO uint32_t                 NbrOfCurrentConversionRank;  /*!< ADC number of current conversion rank */\r
127 \r
128   DMA_HandleTypeDef             *DMA_Handle;                 /*!< Pointer DMA Handler */\r
129 \r
130   HAL_LockTypeDef               Lock;                        /*!< ADC locking object */\r
131 \r
132   __IO HAL_ADC_StateTypeDef     State;                       /*!< ADC communication state */\r
133 \r
134   __IO uint32_t                 ErrorCode;                   /*!< ADC Error code */\r
135 }ADC_HandleTypeDef;\r
136 \r
137 /** \r
138   * @brief   ADC Configuration regular Channel structure definition\r
139   */ \r
140 typedef struct \r
141 {\r
142   uint32_t Channel;        /*!< The ADC channel to configure \r
143                                 This parameter can be a value of @ref ADC_channels */\r
144   uint32_t Rank;           /*!< The rank in the regular group sequencer \r
145                                 This parameter must be a number between Min_Data = 1 and Max_Data = 16 */\r
146   uint32_t SamplingTime;   /*!< The sample time value to be set for the selected channel.\r
147                                 This parameter can be a value of @ref ADC_sampling_times */\r
148   uint32_t Offset;         /*!< Reserved for future use, can be set to 0 */\r
149 }ADC_ChannelConfTypeDef;\r
150 \r
151 /** \r
152   * @brief   ADC Configuration multi-mode structure definition  \r
153   */ \r
154 typedef struct\r
155 {\r
156   uint32_t WatchdogMode;      /*!< Configures the ADC analog watchdog mode.\r
157                                    This parameter can be a value of @ref ADC_analog_watchdog_selection. */\r
158   uint32_t HighThreshold;     /*!< Configures the ADC analog watchdog High threshold value.\r
159                                    This parameter must be a 12-bit value. */     \r
160   uint32_t LowThreshold;      /*!< Configures the ADC analog watchdog High threshold value.\r
161                                    This parameter must be a 12-bit value. */\r
162   uint32_t Channel;           /*!< Configures ADC channel for the analog watchdog. \r
163                                    This parameter has an effect only if watchdog mode is configured on single channel \r
164                                    This parameter can be a value of @ref ADC_channels. */      \r
165   uint32_t ITMode;            /*!< Specifies whether the analog watchdog is configured\r
166                                    is interrupt mode or in polling mode.\r
167                                    This parameter can be set to ENABLE or DISABLE */\r
168   uint32_t WatchdogNumber;    /*!< Reserved for future use, can be set to 0 */\r
169 }ADC_AnalogWDGConfTypeDef;\r
170 \r
171 /* Exported constants --------------------------------------------------------*/\r
172 \r
173 /** @defgroup ADC_Exported_Constants\r
174   * @{\r
175   */\r
176 \r
177 \r
178 /** @defgroup ADC_Error_Code \r
179   * @{\r
180   */ \r
181 \r
182 #define HAL_ADC_ERROR_NONE        ((uint32_t)0x00)   /*!< No error             */\r
183 #define HAL_ADC_ERROR_OVR         ((uint32_t)0x01)   /*!< OVR error            */\r
184 #define HAL_ADC_ERROR_DMA         ((uint32_t)0x02)   /*!< DMA transfer error   */\r
185 /**\r
186   * @}\r
187   */  \r
188 \r
189 \r
190 /** @defgroup ADC_ClockPrescaler \r
191   * @{\r
192   */ \r
193 #define ADC_CLOCKPRESCALER_PCLK_DIV2    ((uint32_t)0x00000000)\r
194 #define ADC_CLOCKPRESCALER_PCLK_DIV4    ((uint32_t)ADC_CCR_ADCPRE_0)\r
195 #define ADC_CLOCKPRESCALER_PCLK_DIV6    ((uint32_t)ADC_CCR_ADCPRE_1)\r
196 #define ADC_CLOCKPRESCALER_PCLK_DIV8    ((uint32_t)ADC_CCR_ADCPRE)\r
197 #define IS_ADC_CLOCKPRESCALER(ADC_CLOCK)     (((ADC_CLOCK) == ADC_CLOCKPRESCALER_PCLK_DIV2) || \\r
198                                               ((ADC_CLOCK) == ADC_CLOCKPRESCALER_PCLK_DIV4) || \\r
199                                               ((ADC_CLOCK) == ADC_CLOCKPRESCALER_PCLK_DIV6) || \\r
200                                               ((ADC_CLOCK) == ADC_CLOCKPRESCALER_PCLK_DIV8))\r
201 /**\r
202   * @}\r
203   */ \r
204 \r
205 /** @defgroup ADC_delay_between_2_sampling_phases \r
206   * @{\r
207   */ \r
208 #define ADC_TWOSAMPLINGDELAY_5CYCLES    ((uint32_t)0x00000000)\r
209 #define ADC_TWOSAMPLINGDELAY_6CYCLES    ((uint32_t)ADC_CCR_DELAY_0)\r
210 #define ADC_TWOSAMPLINGDELAY_7CYCLES    ((uint32_t)ADC_CCR_DELAY_1)\r
211 #define ADC_TWOSAMPLINGDELAY_8CYCLES    ((uint32_t)(ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))\r
212 #define ADC_TWOSAMPLINGDELAY_9CYCLES    ((uint32_t)ADC_CCR_DELAY_2)\r
213 #define ADC_TWOSAMPLINGDELAY_10CYCLES   ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))\r
214 #define ADC_TWOSAMPLINGDELAY_11CYCLES   ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))\r
215 #define ADC_TWOSAMPLINGDELAY_12CYCLES   ((uint32_t)(ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))\r
216 #define ADC_TWOSAMPLINGDELAY_13CYCLES   ((uint32_t)ADC_CCR_DELAY_3)\r
217 #define ADC_TWOSAMPLINGDELAY_14CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_0))\r
218 #define ADC_TWOSAMPLINGDELAY_15CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1))\r
219 #define ADC_TWOSAMPLINGDELAY_16CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_1 | ADC_CCR_DELAY_0))\r
220 #define ADC_TWOSAMPLINGDELAY_17CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2))\r
221 #define ADC_TWOSAMPLINGDELAY_18CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_0))\r
222 #define ADC_TWOSAMPLINGDELAY_19CYCLES   ((uint32_t)(ADC_CCR_DELAY_3 | ADC_CCR_DELAY_2 | ADC_CCR_DELAY_1))\r
223 #define ADC_TWOSAMPLINGDELAY_20CYCLES   ((uint32_t)ADC_CCR_DELAY)\r
224 \r
225 #define IS_ADC_SAMPLING_DELAY(DELAY) (((DELAY) == ADC_TWOSAMPLINGDELAY_5CYCLES)  || \\r
226                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_6CYCLES)  || \\r
227                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_7CYCLES)  || \\r
228                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_8CYCLES)  || \\r
229                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_9CYCLES)  || \\r
230                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_10CYCLES) || \\r
231                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_11CYCLES) || \\r
232                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_12CYCLES) || \\r
233                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_13CYCLES) || \\r
234                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_14CYCLES) || \\r
235                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_15CYCLES) || \\r
236                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_16CYCLES) || \\r
237                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_17CYCLES) || \\r
238                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_18CYCLES) || \\r
239                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_19CYCLES) || \\r
240                                       ((DELAY) == ADC_TWOSAMPLINGDELAY_20CYCLES))\r
241 /**\r
242   * @}\r
243   */ \r
244 \r
245 /** @defgroup ADC_Resolution \r
246   * @{\r
247   */ \r
248 #define ADC_RESOLUTION12b  ((uint32_t)0x00000000)\r
249 #define ADC_RESOLUTION10b  ((uint32_t)ADC_CR1_RES_0)\r
250 #define ADC_RESOLUTION8b   ((uint32_t)ADC_CR1_RES_1)\r
251 #define ADC_RESOLUTION6b   ((uint32_t)ADC_CR1_RES)\r
252 \r
253 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_RESOLUTION12b) || \\r
254                                        ((RESOLUTION) == ADC_RESOLUTION10b) || \\r
255                                        ((RESOLUTION) == ADC_RESOLUTION8b)  || \\r
256                                        ((RESOLUTION) == ADC_RESOLUTION6b))\r
257 /**\r
258   * @}\r
259   */ \r
260 \r
261 /** @defgroup ADC_External_trigger_edge_Regular \r
262   * @{\r
263   */ \r
264 #define ADC_EXTERNALTRIGCONVEDGE_NONE           ((uint32_t)0x00000000)\r
265 #define ADC_EXTERNALTRIGCONVEDGE_RISING         ((uint32_t)ADC_CR2_EXTEN_0)\r
266 #define ADC_EXTERNALTRIGCONVEDGE_FALLING        ((uint32_t)ADC_CR2_EXTEN_1)\r
267 #define ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING  ((uint32_t)ADC_CR2_EXTEN)\r
268 \r
269 #define IS_ADC_EXT_TRIG_EDGE(EDGE) (((EDGE) == ADC_EXTERNALTRIGCONVEDGE_NONE)    || \\r
270                                     ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISING)  || \\r
271                                     ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_FALLING) || \\r
272                                     ((EDGE) == ADC_EXTERNALTRIGCONVEDGE_RISINGFALLING))\r
273 /**\r
274   * @}\r
275   */ \r
276 \r
277 /** @defgroup ADC_External_trigger_Source_Regular \r
278   * @{\r
279   */ \r
280 #define ADC_EXTERNALTRIGCONV_T1_CC1    ((uint32_t)0x00000000)\r
281 #define ADC_EXTERNALTRIGCONV_T1_CC2    ((uint32_t)ADC_CR2_EXTSEL_0)\r
282 #define ADC_EXTERNALTRIGCONV_T1_CC3    ((uint32_t)ADC_CR2_EXTSEL_1)\r
283 #define ADC_EXTERNALTRIGCONV_T2_CC2    ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))\r
284 #define ADC_EXTERNALTRIGCONV_T2_CC3    ((uint32_t)ADC_CR2_EXTSEL_2)\r
285 #define ADC_EXTERNALTRIGCONV_T2_CC4    ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))\r
286 #define ADC_EXTERNALTRIGCONV_T2_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))\r
287 #define ADC_EXTERNALTRIGCONV_T3_CC1    ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))\r
288 #define ADC_EXTERNALTRIGCONV_T3_TRGO   ((uint32_t)ADC_CR2_EXTSEL_3)\r
289 #define ADC_EXTERNALTRIGCONV_T4_CC4    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))\r
290 #define ADC_EXTERNALTRIGCONV_T5_CC1    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1))\r
291 #define ADC_EXTERNALTRIGCONV_T5_CC2    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))\r
292 #define ADC_EXTERNALTRIGCONV_T5_CC3    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2))\r
293 #define ADC_EXTERNALTRIGCONV_T8_CC1    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))\r
294 #define ADC_EXTERNALTRIGCONV_T8_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))\r
295 #define ADC_EXTERNALTRIGCONV_Ext_IT11  ((uint32_t)ADC_CR2_EXTSEL)\r
296 \r
297 #define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC1)  || \\r
298                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC2)  || \\r
299                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC3)  || \\r
300                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC2)  || \\r
301                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC3)  || \\r
302                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_CC4)  || \\r
303                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO) || \\r
304                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_CC1)  || \\r
305                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO) || \\r
306                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T4_CC4)  || \\r
307                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC1)  || \\r
308                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC2)  || \\r
309                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T5_CC3)  || \\r
310                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_CC1)  || \\r
311                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_T8_TRGO) || \\r
312                                   ((REGTRIG) == ADC_EXTERNALTRIGCONV_Ext_IT11))\r
313 /**\r
314   * @}\r
315   */ \r
316 \r
317 /** @defgroup ADC_data_align \r
318   * @{\r
319   */ \r
320 #define ADC_DATAALIGN_RIGHT      ((uint32_t)0x00000000)\r
321 #define ADC_DATAALIGN_LEFT       ((uint32_t)ADC_CR2_ALIGN)\r
322 \r
323 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DATAALIGN_RIGHT) || \\r
324                                   ((ALIGN) == ADC_DATAALIGN_LEFT))\r
325 /**\r
326   * @}\r
327   */ \r
328 \r
329 /** @defgroup ADC_channels \r
330   * @{\r
331   */ \r
332 #define ADC_CHANNEL_0           ((uint32_t)0x00000000)\r
333 #define ADC_CHANNEL_1           ((uint32_t)ADC_CR1_AWDCH_0)\r
334 #define ADC_CHANNEL_2           ((uint32_t)ADC_CR1_AWDCH_1)\r
335 #define ADC_CHANNEL_3           ((uint32_t)(ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
336 #define ADC_CHANNEL_4           ((uint32_t)ADC_CR1_AWDCH_2)\r
337 #define ADC_CHANNEL_5           ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))\r
338 #define ADC_CHANNEL_6           ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))\r
339 #define ADC_CHANNEL_7           ((uint32_t)(ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
340 #define ADC_CHANNEL_8           ((uint32_t)ADC_CR1_AWDCH_3)\r
341 #define ADC_CHANNEL_9           ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_0))\r
342 #define ADC_CHANNEL_10          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1))\r
343 #define ADC_CHANNEL_11          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
344 #define ADC_CHANNEL_12          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2))\r
345 #define ADC_CHANNEL_13          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_0))\r
346 #define ADC_CHANNEL_14          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1))\r
347 #define ADC_CHANNEL_15          ((uint32_t)(ADC_CR1_AWDCH_3 | ADC_CR1_AWDCH_2 | ADC_CR1_AWDCH_1 | ADC_CR1_AWDCH_0))\r
348 #define ADC_CHANNEL_16          ((uint32_t)ADC_CR1_AWDCH_4)\r
349 #define ADC_CHANNEL_17          ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_0))\r
350 #define ADC_CHANNEL_18          ((uint32_t)(ADC_CR1_AWDCH_4 | ADC_CR1_AWDCH_1))\r
351 \r
352 #define ADC_CHANNEL_TEMPSENSOR  ((uint32_t)ADC_CHANNEL_16)\r
353 #define ADC_CHANNEL_VREFINT     ((uint32_t)ADC_CHANNEL_17)\r
354 #define ADC_CHANNEL_VBAT        ((uint32_t)ADC_CHANNEL_18)\r
355 \r
356 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0)  || \\r
357                                  ((CHANNEL) == ADC_CHANNEL_1)  || \\r
358                                  ((CHANNEL) == ADC_CHANNEL_2)  || \\r
359                                  ((CHANNEL) == ADC_CHANNEL_3)  || \\r
360                                  ((CHANNEL) == ADC_CHANNEL_4)  || \\r
361                                  ((CHANNEL) == ADC_CHANNEL_5)  || \\r
362                                  ((CHANNEL) == ADC_CHANNEL_6)  || \\r
363                                  ((CHANNEL) == ADC_CHANNEL_7)  || \\r
364                                  ((CHANNEL) == ADC_CHANNEL_8)  || \\r
365                                  ((CHANNEL) == ADC_CHANNEL_9)  || \\r
366                                  ((CHANNEL) == ADC_CHANNEL_10) || \\r
367                                  ((CHANNEL) == ADC_CHANNEL_11) || \\r
368                                  ((CHANNEL) == ADC_CHANNEL_12) || \\r
369                                  ((CHANNEL) == ADC_CHANNEL_13) || \\r
370                                  ((CHANNEL) == ADC_CHANNEL_14) || \\r
371                                  ((CHANNEL) == ADC_CHANNEL_15) || \\r
372                                  ((CHANNEL) == ADC_CHANNEL_16) || \\r
373                                  ((CHANNEL) == ADC_CHANNEL_17) || \\r
374                                  ((CHANNEL) == ADC_CHANNEL_18))\r
375 /**\r
376   * @}\r
377   */ \r
378 \r
379 /** @defgroup ADC_sampling_times \r
380   * @{\r
381   */ \r
382 #define ADC_SAMPLETIME_3CYCLES    ((uint32_t)0x00000000)\r
383 #define ADC_SAMPLETIME_15CYCLES   ((uint32_t)ADC_SMPR1_SMP10_0)\r
384 #define ADC_SAMPLETIME_28CYCLES   ((uint32_t)ADC_SMPR1_SMP10_1)\r
385 #define ADC_SAMPLETIME_56CYCLES   ((uint32_t)(ADC_SMPR1_SMP10_1 | ADC_SMPR1_SMP10_0))\r
386 #define ADC_SAMPLETIME_84CYCLES   ((uint32_t)ADC_SMPR1_SMP10_2)\r
387 #define ADC_SAMPLETIME_112CYCLES  ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_0))\r
388 #define ADC_SAMPLETIME_144CYCLES  ((uint32_t)(ADC_SMPR1_SMP10_2 | ADC_SMPR1_SMP10_1))\r
389 #define ADC_SAMPLETIME_480CYCLES  ((uint32_t)ADC_SMPR1_SMP10)\r
390 \r
391 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SAMPLETIME_3CYCLES)   || \\r
392                                   ((TIME) == ADC_SAMPLETIME_15CYCLES)  || \\r
393                                   ((TIME) == ADC_SAMPLETIME_28CYCLES)  || \\r
394                                   ((TIME) == ADC_SAMPLETIME_56CYCLES)  || \\r
395                                   ((TIME) == ADC_SAMPLETIME_84CYCLES)  || \\r
396                                   ((TIME) == ADC_SAMPLETIME_112CYCLES) || \\r
397                                   ((TIME) == ADC_SAMPLETIME_144CYCLES) || \\r
398                                   ((TIME) == ADC_SAMPLETIME_480CYCLES))\r
399 /**\r
400   * @}\r
401   */ \r
402 \r
403   /** @defgroup ADC_EOCSelection \r
404   * @{\r
405   */ \r
406 #define EOC_SEQ_CONV              ((uint32_t)0x00000000)\r
407 #define EOC_SINGLE_CONV           ((uint32_t)0x00000001)\r
408 #define EOC_SINGLE_SEQ_CONV       ((uint32_t)0x00000002)  /*!< reserved for future use */\r
409 \r
410 #define IS_ADC_EOCSelection(EOCSelection) (((EOCSelection) == EOC_SINGLE_CONV)   || \\r
411                                            ((EOCSelection) == EOC_SEQ_CONV)  || \\r
412                                            ((EOCSelection) == EOC_SINGLE_SEQ_CONV))\r
413 /**\r
414   * @}\r
415   */ \r
416 \r
417 /** @defgroup ADC_Event_type \r
418   * @{\r
419   */ \r
420 #define AWD_EVENT             ((uint32_t)ADC_FLAG_AWD)\r
421 #define OVR_EVENT             ((uint32_t)ADC_FLAG_OVR)\r
422 \r
423 #define IS_ADC_EVENT_TYPE(EVENT) (((EVENT) == AWD_EVENT) || \\r
424                                   ((EVENT) == OVR_EVENT))\r
425 /**\r
426   * @}\r
427   */\r
428 \r
429 /** @defgroup ADC_analog_watchdog_selection \r
430   * @{\r
431   */ \r
432 #define ADC_ANALOGWATCHDOG_SINGLE_REG         ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN))\r
433 #define ADC_ANALOGWATCHDOG_SINGLE_INJEC       ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_JAWDEN))\r
434 #define ADC_ANALOGWATCHDOG_SINGLE_REGINJEC    ((uint32_t)(ADC_CR1_AWDSGL | ADC_CR1_AWDEN | ADC_CR1_JAWDEN))\r
435 #define ADC_ANALOGWATCHDOG_ALL_REG            ((uint32_t)ADC_CR1_AWDEN)\r
436 #define ADC_ANALOGWATCHDOG_ALL_INJEC          ((uint32_t)ADC_CR1_JAWDEN)\r
437 #define ADC_ANALOGWATCHDOG_ALL_REGINJEC       ((uint32_t)(ADC_CR1_AWDEN | ADC_CR1_JAWDEN))\r
438 #define ADC_ANALOGWATCHDOG_NONE               ((uint32_t)0x00000000)\r
439 \r
440 #define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REG)        || \\r
441                                           ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_INJEC)      || \\r
442                                           ((WATCHDOG) == ADC_ANALOGWATCHDOG_SINGLE_REGINJEC)   || \\r
443                                           ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REG)           || \\r
444                                           ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_INJEC)         || \\r
445                                           ((WATCHDOG) == ADC_ANALOGWATCHDOG_ALL_REGINJEC)      || \\r
446                                           ((WATCHDOG) == ADC_ANALOGWATCHDOG_NONE))\r
447 /**\r
448   * @}\r
449   */ \r
450     \r
451 /** @defgroup ADC_interrupts_definition \r
452   * @{\r
453   */ \r
454 #define ADC_IT_EOC      ((uint32_t)ADC_CR1_EOCIE)  \r
455 #define ADC_IT_AWD      ((uint32_t)ADC_CR1_AWDIE) \r
456 #define ADC_IT_JEOC     ((uint32_t)ADC_CR1_JEOCIE)\r
457 #define ADC_IT_OVR      ((uint32_t)ADC_CR1_OVRIE) \r
458 \r
459 #define IS_ADC_IT(IT) (((IT) == ADC_IT_EOC) || ((IT) == ADC_IT_AWD) || \\r
460                        ((IT) == ADC_IT_JEOC)|| ((IT) == ADC_IT_OVR)) \r
461 /**\r
462   * @}\r
463   */ \r
464     \r
465 /** @defgroup ADC_flags_definition \r
466   * @{\r
467   */ \r
468 #define ADC_FLAG_AWD    ((uint32_t)ADC_SR_AWD)\r
469 #define ADC_FLAG_EOC    ((uint32_t)ADC_SR_EOC)\r
470 #define ADC_FLAG_JEOC   ((uint32_t)ADC_SR_JEOC)\r
471 #define ADC_FLAG_JSTRT  ((uint32_t)ADC_SR_JSTRT)\r
472 #define ADC_FLAG_STRT   ((uint32_t)ADC_SR_STRT)\r
473 #define ADC_FLAG_OVR    ((uint32_t)ADC_SR_OVR)\r
474 /**\r
475   * @}\r
476   */ \r
477 \r
478 /** @defgroup ADC_channels_type \r
479   * @{\r
480   */ \r
481 #define ALL_CHANNELS      ((uint32_t)0x00000001)\r
482 #define REGULAR_CHANNELS  ((uint32_t)0x00000002) /*!< reserved for future use */\r
483 #define INJECTED_CHANNELS ((uint32_t)0x00000003) /*!< reserved for future use */\r
484 \r
485 #define IS_ADC_CHANNELS_TYPE(CHANNEL_TYPE) (((CHANNEL_TYPE) == ALL_CHANNELS) || \\r
486                                             ((CHANNEL_TYPE) == REGULAR_CHANNELS) || \\r
487                                             ((CHANNEL_TYPE) == INJECTED_CHANNELS))\r
488 /**\r
489   * @}\r
490   */\r
491 \r
492 /** @defgroup ADC_thresholds \r
493   * @{\r
494   */ \r
495 #define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= ((uint32_t)0xFFF))\r
496 /**\r
497   * @}\r
498   */ \r
499 \r
500 /** @defgroup ADC_regular_length \r
501   * @{\r
502   */ \r
503 #define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= ((uint32_t)1)) && ((LENGTH) <= ((uint32_t)16)))\r
504 /**\r
505   * @}\r
506   */ \r
507 \r
508 /** @defgroup ADC_regular_rank \r
509   * @{\r
510   */ \r
511 #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= ((uint32_t)1)) && ((RANK) <= ((uint32_t)16)))\r
512 /**\r
513   * @}\r
514   */ \r
515 \r
516 /** @defgroup ADC_regular_discontinuous_mode_number \r
517   * @{\r
518   */ \r
519 #define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= ((uint32_t)1)) && ((NUMBER) <= ((uint32_t)8)))\r
520 /**\r
521   * @}\r
522   */ \r
523 \r
524 /** @defgroup ADC_range_verification\r
525   * @{\r
526   */ \r
527 #define IS_ADC_RANGE(RESOLUTION, ADC_VALUE)                                     \\r
528    ((((RESOLUTION) == ADC_RESOLUTION12b) && ((ADC_VALUE) <= ((uint32_t)0x0FFF))) || \\r
529     (((RESOLUTION) == ADC_RESOLUTION10b) && ((ADC_VALUE) <= ((uint32_t)0x03FF))) || \\r
530     (((RESOLUTION) == ADC_RESOLUTION8b)  && ((ADC_VALUE) <= ((uint32_t)0x00FF))) || \\r
531     (((RESOLUTION) == ADC_RESOLUTION6b)  && ((ADC_VALUE) <= ((uint32_t)0x003F))))\r
532 /**\r
533   * @}\r
534   */   \r
535   \r
536 /**\r
537   * @}\r
538   */ \r
539 \r
540 /* Exported macro ------------------------------------------------------------*/\r
541 /**\r
542   * @brief  Enable the ADC peripheral.\r
543   * @param  __HANDLE__: ADC handle\r
544   * @retval None\r
545   */\r
546 #define __HAL_ADC_ENABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 |=  ADC_CR2_ADON)\r
547 \r
548 /**\r
549   * @brief  Disable the ADC peripheral.\r
550   * @param  __HANDLE__: ADC handle\r
551   * @retval None\r
552   */\r
553 #define __HAL_ADC_DISABLE(__HANDLE__) ((__HANDLE__)->Instance->CR2 &=  ~ADC_CR2_ADON)\r
554 \r
555 /**\r
556   * @brief  Set ADC Regular channel sequence length.\r
557   * @param  _NbrOfConversion_: Regular channel sequence length. \r
558   * @retval None\r
559   */\r
560 #define __HAL_ADC_SQR1(_NbrOfConversion_) (((_NbrOfConversion_) - (uint8_t)1) << 20)\r
561 \r
562 /**\r
563   * @brief  Set the ADC's sample time for channel numbers between 10 and 18.\r
564   * @param  _SAMPLETIME_: Sample time parameter.\r
565   * @param  _CHANNELNB_: Channel number.  \r
566   * @retval None\r
567   */\r
568 #define __HAL_ADC_SMPR1(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * ((_CHANNELNB_) - 10)))\r
569 \r
570 /**\r
571   * @brief  Set the ADC's sample time for channel numbers between 0 and 9.\r
572   * @param  _SAMPLETIME_: Sample time parameter.\r
573   * @param  _CHANNELNB_: Channel number.  \r
574   * @retval None\r
575   */\r
576 #define __HAL_ADC_SMPR2(_SAMPLETIME_, _CHANNELNB_) ((_SAMPLETIME_) << (3 * (_CHANNELNB_)))\r
577 \r
578 /**\r
579   * @brief  Set the selected regular channel rank for rank between 1 and 6.\r
580   * @param  _CHANNELNB_: Channel number.\r
581   * @param  _RANKNB_: Rank number.    \r
582   * @retval None\r
583   */\r
584 #define __HAL_ADC_SQR3_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (5 * ((_RANKNB_) - 1)))\r
585 \r
586 /**\r
587   * @brief  Set the selected regular channel rank for rank between 7 and 12.\r
588   * @param  _CHANNELNB_: Channel number.\r
589   * @param  _RANKNB_: Rank number.    \r
590   * @retval None\r
591   */\r
592 #define __HAL_ADC_SQR2_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (5 * ((_RANKNB_) - 7)))\r
593 \r
594 /**\r
595   * @brief  Set the selected regular channel rank for rank between 13 and 16.\r
596   * @param  _CHANNELNB_: Channel number.\r
597   * @param  _RANKNB_: Rank number.    \r
598   * @retval None\r
599   */\r
600 #define __HAL_ADC_SQR1_RK(_CHANNELNB_, _RANKNB_) ((_CHANNELNB_) << (5 * ((_RANKNB_) - 13)))\r
601 \r
602 /**\r
603   * @brief  Enable ADC continuous conversion mode.\r
604   * @param  _CONTINUOUS_MODE_: Continuous mode.\r
605   * @retval None\r
606   */\r
607 #define __HAL_ADC_CR2_CONTINUOUS(_CONTINUOUS_MODE_) ((_CONTINUOUS_MODE_) << 1)\r
608 \r
609 /**\r
610   * @brief  Configures the number of discontinuous conversions for the regular group channels.\r
611   * @param  _NBR_DISCONTINUOUSCONV_: Number of discontinuous conversions.\r
612   * @retval None\r
613   */\r
614 #define __HAL_ADC_CR1_DISCONTINUOUS(_NBR_DISCONTINUOUSCONV_) (((_NBR_DISCONTINUOUSCONV_) - 1) << 13)\r
615 \r
616 /**\r
617   * @brief  Enable ADC scan mode.\r
618   * @param  _SCANCONV_MODE_: Scan conversion mode.\r
619   * @retval None\r
620   */\r
621 #define __HAL_ADC_CR1_SCANCONV(_SCANCONV_MODE_) ((_SCANCONV_MODE_) << 8)\r
622 \r
623 /**\r
624   * @brief  Enable the ADC end of conversion selection.\r
625   * @param  _EOCSelection_MODE_: End of conversion selection mode.\r
626   * @retval None\r
627   */\r
628 #define __HAL_ADC_CR2_EOCSelection(_EOCSelection_MODE_) ((_EOCSelection_MODE_) << 10)\r
629 \r
630 /**\r
631   * @brief  Enable the ADC DMA continuous request.\r
632   * @param  _DMAContReq_MODE_: DMA continuous request mode.\r
633   * @retval None\r
634   */\r
635 #define __HAL_ADC_CR2_DMAContReq(_DMAContReq_MODE_) ((_DMAContReq_MODE_) << 9)\r
636 \r
637 /**\r
638   * @brief  Enable the ADC end of conversion interrupt.\r
639   * @param  __HANDLE__: specifies the ADC Handle.\r
640   * @param  __INTERRUPT__: ADC Interrupt.\r
641   * @retval None\r
642   */\r
643 #define __HAL_ADC_ENABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) |= (__INTERRUPT__))\r
644 \r
645 /**\r
646   * @brief  Disable the ADC end of conversion interrupt.\r
647   * @param  __HANDLE__: specifies the ADC Handle.\r
648   * @param  __INTERRUPT__: ADC interrupt.\r
649   * @retval None\r
650   */\r
651 #define __HAL_ADC_DISABLE_IT(__HANDLE__, __INTERRUPT__) (((__HANDLE__)->Instance->CR1) &= ~(__INTERRUPT__))\r
652 \r
653 /** @brief  Check if the specified ADC interrupt source is enabled or disabled.\r
654   * @param  __HANDLE__: specifies the ADC Handle.\r
655   * @param  __INTERRUPT__: specifies the ADC interrupt source to check.\r
656   * @retval The new state of __IT__ (TRUE or FALSE).\r
657   */\r
658 #define __HAL_ADC_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((((__HANDLE__)->Instance->CR1 & (__INTERRUPT__)) == (__INTERRUPT__)) ? SET : RESET)\r
659 \r
660 /**\r
661   * @brief  Clear the ADC's pending flags.\r
662   * @param  __HANDLE__: specifies the ADC Handle.\r
663   * @param  __FLAG__: ADC flag.\r
664   * @retval None\r
665   */\r
666 #define __HAL_ADC_CLEAR_FLAG(__HANDLE__, __FLAG__) (((__HANDLE__)->Instance->SR) &= ~(__FLAG__))\r
667 \r
668 /**\r
669   * @brief  Get the selected ADC's flag status.\r
670   * @param  __HANDLE__: specifies the ADC Handle.\r
671   * @param  __FLAG__: ADC flag.\r
672   * @retval None\r
673   */\r
674 #define __HAL_ADC_GET_FLAG(__HANDLE__, __FLAG__) ((((__HANDLE__)->Instance->SR) & (__FLAG__)) == (__FLAG__))\r
675 \r
676 /**\r
677   * @brief Return resolution bits in CR1 register.\r
678   * @param __HANDLE__: ADC handle\r
679   * @retval None\r
680   */\r
681 #define __HAL_ADC_GET_RESOLUTION(__HANDLE__) (((__HANDLE__)->Instance->CR1) & ADC_CR1_RES)\r
682 \r
683 /* Include ADC HAL Extension module */\r
684 #include "stm32f4xx_hal_adc_ex.h"\r
685 \r
686 /* Exported functions --------------------------------------------------------*/\r
687 /* Initialization/de-initialization functions ***********************************/\r
688 HAL_StatusTypeDef HAL_ADC_Init(ADC_HandleTypeDef* hadc);\r
689 HAL_StatusTypeDef HAL_ADC_DeInit(ADC_HandleTypeDef *hadc);\r
690 void       HAL_ADC_MspInit(ADC_HandleTypeDef* hadc);\r
691 void       HAL_ADC_MspDeInit(ADC_HandleTypeDef* hadc);\r
692 \r
693 /* I/O operation functions ******************************************************/\r
694 HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc);\r
695 HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc);\r
696 HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout);\r
697 \r
698 HAL_StatusTypeDef HAL_ADC_PollForEvent(ADC_HandleTypeDef* hadc, uint32_t EventType, uint32_t Timeout);\r
699 \r
700 HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);\r
701 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);\r
702 \r
703 void              HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);\r
704 \r
705 HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);\r
706 HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);\r
707 \r
708 uint32_t          HAL_ADC_GetValue(ADC_HandleTypeDef* hadc);\r
709 \r
710 void       HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc);\r
711 void       HAL_ADC_ConvHalfCpltCallback(ADC_HandleTypeDef* hadc);\r
712 void       HAL_ADC_LevelOutOfWindowCallback(ADC_HandleTypeDef* hadc);\r
713 void       HAL_ADC_ErrorCallback(ADC_HandleTypeDef *hadc);\r
714 \r
715 /* Peripheral Control functions *************************************************/\r
716 HAL_StatusTypeDef HAL_ADC_ConfigChannel(ADC_HandleTypeDef* hadc, ADC_ChannelConfTypeDef* sConfig);\r
717 HAL_StatusTypeDef HAL_ADC_AnalogWDGConfig(ADC_HandleTypeDef* hadc, ADC_AnalogWDGConfTypeDef* AnalogWDGConfig);\r
718 \r
719 /* Peripheral State functions ***************************************************/\r
720 HAL_ADC_StateTypeDef HAL_ADC_GetState(ADC_HandleTypeDef* hadc);\r
721 uint32_t             HAL_ADC_GetError(ADC_HandleTypeDef *hadc);\r
722 \r
723 /**\r
724   * @}\r
725   */ \r
726 \r
727 /**\r
728   * @}\r
729   */\r
730 \r
731 #ifdef __cplusplus\r
732 }\r
733 #endif\r
734 \r
735 #endif /*__STM32F4xx_ADC_H */\r
736 \r
737 \r
738 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r