Merge pull request #93 from zyp/master
[fw/stlink] / example / libs_stm / inc / stm32l1xx / stm32l1xx_adc.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32l1xx_adc.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0\r
6   * @date    31-December-2010\r
7   * @brief   This file contains all the functions prototypes for the ADC firmware \r
8   *          library.\r
9   ******************************************************************************\r
10   * @attention\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * <h2><center>&copy; COPYRIGHT 2010 STMicroelectronics</center></h2>\r
20   ******************************************************************************  \r
21   */ \r
22 \r
23 /* Define to prevent recursive inclusion -------------------------------------*/\r
24 #ifndef __STM32L1xx_ADC_H\r
25 #define __STM32L1xx_ADC_H\r
26 \r
27 #ifdef __cplusplus\r
28  extern "C" {\r
29 #endif\r
30 \r
31 /* Includes ------------------------------------------------------------------*/\r
32 #include "stm32l1xx.h"\r
33 \r
34 /** @addtogroup STM32L1xx_StdPeriph_Driver\r
35   * @{\r
36   */\r
37 \r
38 /** @addtogroup ADC\r
39   * @{\r
40   */\r
41 \r
42 /* Exported types ------------------------------------------------------------*/\r
43 \r
44 /** \r
45   * @brief  ADC Init structure definition  \r
46   */\r
47   \r
48 typedef struct\r
49 {\r
50   uint32_t ADC_Resolution;                /*!< Selects the resolution of the conversion.\r
51                                                This parameter can be a value of @ref ADC_Resolution */\r
52   \r
53   FunctionalState ADC_ScanConvMode;       /*!< Specifies whether the conversion is performed in\r
54                                                Scan (multichannel) or Single (one channel) mode.\r
55                                                This parameter can be set to ENABLE or DISABLE */\r
56   \r
57   FunctionalState ADC_ContinuousConvMode; /*!< Specifies whether the conversion is performed in\r
58                                                Continuous or Single mode.\r
59                                                This parameter can be set to ENABLE or DISABLE. */\r
60   \r
61   uint32_t ADC_ExternalTrigConvEdge;      /*!< Selects the external trigger Edge and enables the\r
62                                                trigger of a regular group. This parameter can be a value\r
63                                                of @ref ADC_external_trigger_edge_for_regular_channels_conversion */\r
64   \r
65   uint32_t ADC_ExternalTrigConv;          /*!< Defines the external trigger used to start the analog\r
66                                                to digital conversion of regular channels. This parameter\r
67                                                can be a value of @ref ADC_external_trigger_sources_for_regular_channels_conversion */\r
68   \r
69   uint32_t ADC_DataAlign;                 /*!< Specifies whether the ADC data alignment is left or right.\r
70                                                This parameter can be a value of @ref ADC_data_align */\r
71   \r
72   uint8_t  ADC_NbrOfConversion;           /*!< Specifies the number of ADC conversions that will be done\r
73                                                using the sequencer for regular channel group.\r
74                                                This parameter must range from 1 to 27. */\r
75 }ADC_InitTypeDef;\r
76 \r
77 typedef struct \r
78 {                                              \r
79   uint32_t ADC_Prescaler;                 /*!< Selects the ADC prescaler.\r
80                                                This parameter can be a value \r
81                                                of @ref ADC_Prescaler */\r
82 }ADC_CommonInitTypeDef;\r
83 \r
84 /* Exported constants --------------------------------------------------------*/\r
85 \r
86 /** @defgroup ADC_Exported_Constants\r
87   * @{\r
88   */ \r
89 #define IS_ADC_ALL_PERIPH(PERIPH)                  ((PERIPH) == ADC1)\r
90 #define IS_ADC_DMA_PERIPH(PERIPH)                  ((PERIPH) == ADC1)\r
91 \r
92 /** @defgroup ADC_Power_down_during_Idle_and_or_Delay_phase \r
93   * @{\r
94   */ \r
95 #define ADC_PowerDown_Delay                        ((uint32_t)0x00010000)\r
96 #define ADC_PowerDown_Idle                         ((uint32_t)0x00020000)\r
97 #define ADC_PowerDown_Idle_Delay                   ((uint32_t)0x00030000)\r
98 \r
99 #define IS_ADC_POWER_DOWN(DWON) (((DWON) == ADC_PowerDown_Delay) || \\r
100                                  ((DWON) == ADC_PowerDown_Idle) || \\r
101                                  ((DWON) == ADC_PowerDown_Idle_Delay))\r
102 /**\r
103   * @}\r
104   */ \r
105 \r
106 \r
107 /** @defgroup ADC_Prescaler \r
108   * @{\r
109   */ \r
110 #define ADC_Prescaler_Div1                         ((uint32_t)0x00000000)\r
111 #define ADC_Prescaler_Div2                         ((uint32_t)0x00010000)\r
112 #define ADC_Prescaler_Div4                         ((uint32_t)0x00020000)\r
113 \r
114 #define IS_ADC_PRESCALER(PRESCALER) (((PRESCALER) == ADC_Prescaler_Div1) || \\r
115                                      ((PRESCALER) == ADC_Prescaler_Div2) || \\r
116                                      ((PRESCALER) == ADC_Prescaler_Div4))\r
117 /**\r
118   * @}\r
119   */ \r
120 \r
121 \r
122 \r
123 /** @defgroup ADC_resolution \r
124   * @{\r
125   */ \r
126 #define ADC_Resolution_12b                         ((uint32_t)0x00000000)\r
127 #define ADC_Resolution_10b                         ((uint32_t)0x01000000)\r
128 #define ADC_Resolution_8b                          ((uint32_t)0x02000000)\r
129 #define ADC_Resolution_6b                          ((uint32_t)0x03000000)\r
130 \r
131 #define IS_ADC_RESOLUTION(RESOLUTION) (((RESOLUTION) == ADC_Resolution_12b) || \\r
132                                        ((RESOLUTION) == ADC_Resolution_10b) || \\r
133                                        ((RESOLUTION) == ADC_Resolution_8b) || \\r
134                                        ((RESOLUTION) == ADC_Resolution_6b))\r
135 \r
136 /**\r
137   * @}\r
138   */ \r
139 \r
140 /** @defgroup ADC_external_trigger_edge_for_regular_channels_conversion \r
141   * @{\r
142   */ \r
143 #define ADC_ExternalTrigConvEdge_None              ((uint32_t)0x00000000)\r
144 #define ADC_ExternalTrigConvEdge_Rising            ((uint32_t)0x10000000)\r
145 #define ADC_ExternalTrigConvEdge_Falling           ((uint32_t)0x20000000)\r
146 #define ADC_ExternalTrigConvEdge_RisingFalling     ((uint32_t)0x30000000)\r
147 \r
148 #define IS_ADC_EXT_TRIG_EDGE(EDGE) (((EDGE) == ADC_ExternalTrigConvEdge_None) || \\r
149                                     ((EDGE) == ADC_ExternalTrigConvEdge_Rising) || \\r
150                                     ((EDGE) == ADC_ExternalTrigConvEdge_Falling) || \\r
151                                     ((EDGE) == ADC_ExternalTrigConvEdge_RisingFalling))\r
152 /**\r
153   * @}\r
154   */ \r
155 \r
156 /** @defgroup ADC_external_trigger_sources_for_regular_channels_conversion\r
157   * @{\r
158   */ \r
159 \r
160 /* TIM2 */\r
161 #define ADC_ExternalTrigConv_T2_CC3                ((uint32_t)0x02000000)\r
162 #define ADC_ExternalTrigConv_T2_CC2                ((uint32_t)0x03000000)\r
163 #define ADC_ExternalTrigConv_T2_TRGO               ((uint32_t)0x06000000)\r
164 \r
165 /* TIM3 */\r
166 #define ADC_ExternalTrigConv_T3_CC1                ((uint32_t)0x07000000)\r
167 #define ADC_ExternalTrigConv_T3_CC3                ((uint32_t)0x08000000)\r
168 #define ADC_ExternalTrigConv_T3_TRGO               ((uint32_t)0x04000000)\r
169 \r
170 /* TIM4 */\r
171 #define ADC_ExternalTrigConv_T4_CC4                ((uint32_t)0x05000000)\r
172 #define ADC_ExternalTrigConv_T4_TRGO               ((uint32_t)0x09000000)\r
173 \r
174 /* TIM6 */\r
175 #define ADC_ExternalTrigConv_T6_TRGO               ((uint32_t)0x0A000000)\r
176 \r
177 /* TIM9 */\r
178 #define ADC_ExternalTrigConv_T9_CC2                ((uint32_t)0x00000000)\r
179 #define ADC_ExternalTrigConv_T9_TRGO               ((uint32_t)0x01000000)\r
180 \r
181 /* EXTI */\r
182 #define ADC_ExternalTrigConv_Ext_IT11              ((uint32_t)0x0F000000)\r
183 \r
184 #define IS_ADC_EXT_TRIG(REGTRIG) (((REGTRIG) == ADC_ExternalTrigConv_T9_CC2)  || \\r
185                                   ((REGTRIG) == ADC_ExternalTrigConv_T9_TRGO) || \\r
186                                   ((REGTRIG) == ADC_ExternalTrigConv_T2_CC3)  || \\r
187                                   ((REGTRIG) == ADC_ExternalTrigConv_T2_CC2)  || \\r
188                                   ((REGTRIG) == ADC_ExternalTrigConv_T3_TRGO) || \\r
189                                   ((REGTRIG) == ADC_ExternalTrigConv_T4_CC4)  || \\r
190                                   ((REGTRIG) == ADC_ExternalTrigConv_T2_TRGO) || \\r
191                                   ((REGTRIG) == ADC_ExternalTrigConv_T3_CC1)  || \\r
192                                   ((REGTRIG) == ADC_ExternalTrigConv_T3_CC3)  || \\r
193                                   ((REGTRIG) == ADC_ExternalTrigConv_T4_TRGO) || \\r
194                                   ((REGTRIG) == ADC_ExternalTrigConv_T6_TRGO) || \\r
195                                   ((REGTRIG) == ADC_ExternalTrigConv_Ext_IT11))\r
196 /**\r
197   * @}\r
198   */ \r
199 \r
200 /** @defgroup ADC_data_align \r
201   * @{\r
202   */ \r
203   \r
204 #define ADC_DataAlign_Right                        ((uint32_t)0x00000000)\r
205 #define ADC_DataAlign_Left                         ((uint32_t)0x00000800)\r
206 \r
207 #define IS_ADC_DATA_ALIGN(ALIGN) (((ALIGN) == ADC_DataAlign_Right) || \\r
208                                   ((ALIGN) == ADC_DataAlign_Left))\r
209 /**\r
210   * @}\r
211   */ \r
212 \r
213 /** @defgroup ADC_channels \r
214   * @{\r
215   */ \r
216   \r
217 #define ADC_Channel_0                              ((uint8_t)0x00)\r
218 #define ADC_Channel_1                              ((uint8_t)0x01)\r
219 #define ADC_Channel_2                              ((uint8_t)0x02)\r
220 #define ADC_Channel_3                              ((uint8_t)0x03)\r
221 #define ADC_Channel_4                              ((uint8_t)0x04)\r
222 #define ADC_Channel_5                              ((uint8_t)0x05)\r
223 #define ADC_Channel_6                              ((uint8_t)0x06)\r
224 #define ADC_Channel_7                              ((uint8_t)0x07)\r
225 #define ADC_Channel_8                              ((uint8_t)0x08)\r
226 #define ADC_Channel_9                              ((uint8_t)0x09)\r
227 #define ADC_Channel_10                             ((uint8_t)0x0A)\r
228 #define ADC_Channel_11                             ((uint8_t)0x0B)\r
229 #define ADC_Channel_12                             ((uint8_t)0x0C)\r
230 #define ADC_Channel_13                             ((uint8_t)0x0D)\r
231 #define ADC_Channel_14                             ((uint8_t)0x0E)\r
232 #define ADC_Channel_15                             ((uint8_t)0x0F)\r
233 #define ADC_Channel_16                             ((uint8_t)0x10)\r
234 #define ADC_Channel_17                             ((uint8_t)0x11)\r
235 #define ADC_Channel_18                             ((uint8_t)0x12)\r
236 #define ADC_Channel_19                             ((uint8_t)0x13)\r
237 #define ADC_Channel_20                             ((uint8_t)0x14)\r
238 #define ADC_Channel_21                             ((uint8_t)0x15)\r
239 #define ADC_Channel_22                             ((uint8_t)0x16)\r
240 #define ADC_Channel_23                             ((uint8_t)0x17)\r
241 #define ADC_Channel_24                             ((uint8_t)0x18)\r
242 #define ADC_Channel_25                             ((uint8_t)0x19)\r
243 \r
244 #define ADC_Channel_TempSensor                     ((uint8_t)ADC_Channel_16)\r
245 #define ADC_Channel_Vrefint                        ((uint8_t)ADC_Channel_17)\r
246 \r
247 \r
248 \r
249 #define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_Channel_0)  || ((CHANNEL) == ADC_Channel_1)  || \\r
250                                  ((CHANNEL) == ADC_Channel_2)  || ((CHANNEL) == ADC_Channel_3)  || \\r
251                                  ((CHANNEL) == ADC_Channel_4)  || ((CHANNEL) == ADC_Channel_5)  || \\r
252                                  ((CHANNEL) == ADC_Channel_6)  || ((CHANNEL) == ADC_Channel_7)  || \\r
253                                  ((CHANNEL) == ADC_Channel_8)  || ((CHANNEL) == ADC_Channel_9)  || \\r
254                                  ((CHANNEL) == ADC_Channel_10) || ((CHANNEL) == ADC_Channel_11) || \\r
255                                  ((CHANNEL) == ADC_Channel_12) || ((CHANNEL) == ADC_Channel_13) || \\r
256                                  ((CHANNEL) == ADC_Channel_14) || ((CHANNEL) == ADC_Channel_15) || \\r
257                                  ((CHANNEL) == ADC_Channel_16) || ((CHANNEL) == ADC_Channel_17) || \\r
258                                  ((CHANNEL) == ADC_Channel_18) || ((CHANNEL) == ADC_Channel_19) || \\r
259                                  ((CHANNEL) == ADC_Channel_20) || ((CHANNEL) == ADC_Channel_21) || \\r
260                                  ((CHANNEL) == ADC_Channel_22) || ((CHANNEL) == ADC_Channel_23) || \\r
261                                  ((CHANNEL) == ADC_Channel_24) || ((CHANNEL) == ADC_Channel_25) )\r
262 /**\r
263   * @}\r
264   */ \r
265 \r
266 /** @defgroup ADC_sampling_times \r
267   * @{\r
268   */ \r
269 \r
270 #define ADC_SampleTime_4Cycles                     ((uint8_t)0x00)\r
271 #define ADC_SampleTime_9Cycles                     ((uint8_t)0x01)\r
272 #define ADC_SampleTime_16Cycles                    ((uint8_t)0x02)\r
273 #define ADC_SampleTime_24Cycles                    ((uint8_t)0x03)\r
274 #define ADC_SampleTime_48Cycles                    ((uint8_t)0x04)\r
275 #define ADC_SampleTime_96Cycles                    ((uint8_t)0x05)\r
276 #define ADC_SampleTime_192Cycles                   ((uint8_t)0x06)\r
277 #define ADC_SampleTime_384Cycles                   ((uint8_t)0x07)\r
278 \r
279 #define IS_ADC_SAMPLE_TIME(TIME) (((TIME) == ADC_SampleTime_4Cycles)   || \\r
280                                   ((TIME) == ADC_SampleTime_9Cycles)   || \\r
281                                   ((TIME) == ADC_SampleTime_16Cycles)  || \\r
282                                   ((TIME) == ADC_SampleTime_24Cycles)  || \\r
283                                   ((TIME) == ADC_SampleTime_48Cycles)  || \\r
284                                   ((TIME) == ADC_SampleTime_96Cycles)  || \\r
285                                   ((TIME) == ADC_SampleTime_192Cycles) || \\r
286                                   ((TIME) == ADC_SampleTime_384Cycles))\r
287 /**\r
288   * @}\r
289   */ \r
290 \r
291 /** @defgroup ADC_Delay_length \r
292   * @{\r
293   */ \r
294 \r
295 #define ADC_DelayLength_None                       ((uint8_t)0x00)\r
296 #define ADC_DelayLength_Freeze                     ((uint8_t)0x10)\r
297 #define ADC_DelayLength_7Cycles                    ((uint8_t)0x20)\r
298 #define ADC_DelayLength_15Cycles                   ((uint8_t)0x30)\r
299 #define ADC_DelayLength_31Cycles                   ((uint8_t)0x40)\r
300 #define ADC_DelayLength_63Cycles                   ((uint8_t)0x50)\r
301 #define ADC_DelayLength_127Cycles                  ((uint8_t)0x60)\r
302 #define ADC_DelayLength_255Cycles                  ((uint8_t)0x70)\r
303 \r
304 #define IS_ADC_DELAY_LENGTH(LENGTH) (((LENGTH) == ADC_DelayLength_None)      || \\r
305                                      ((LENGTH) == ADC_DelayLength_Freeze)    || \\r
306                                      ((LENGTH) == ADC_DelayLength_7Cycles)   || \\r
307                                      ((LENGTH) == ADC_DelayLength_15Cycles)  || \\r
308                                      ((LENGTH) == ADC_DelayLength_31Cycles)  || \\r
309                                      ((LENGTH) == ADC_DelayLength_63Cycles)  || \\r
310                                      ((LENGTH) == ADC_DelayLength_127Cycles) || \\r
311                                      ((LENGTH) == ADC_DelayLength_255Cycles))\r
312 \r
313 /**\r
314   * @}\r
315   */\r
316 \r
317 /** @defgroup ADC_external_trigger_edge_for_injected_channels_conversion \r
318   * @{\r
319   */ \r
320 #define ADC_ExternalTrigInjecConvEdge_None          ((uint32_t)0x00000000)\r
321 #define ADC_ExternalTrigInjecConvEdge_Rising        ((uint32_t)0x00100000)\r
322 #define ADC_ExternalTrigInjecConvEdge_Falling       ((uint32_t)0x00200000)\r
323 #define ADC_ExternalTrigInjecConvEdge_RisingFalling ((uint32_t)0x00300000)\r
324 \r
325 #define IS_ADC_EXT_INJEC_TRIG_EDGE(EDGE) (((EDGE) == ADC_ExternalTrigInjecConvEdge_None)    || \\r
326                                           ((EDGE) == ADC_ExternalTrigInjecConvEdge_Rising)  || \\r
327                                           ((EDGE) == ADC_ExternalTrigInjecConvEdge_Falling) || \\r
328                                           ((EDGE) == ADC_ExternalTrigInjecConvEdge_RisingFalling))\r
329 /**\r
330   * @}\r
331   */ \r
332 \r
333 \r
334 /** @defgroup ADC_external_trigger_sources_for_injected_channels_conversion \r
335   * @{\r
336   */ \r
337 \r
338 \r
339 /* TIM2 */\r
340 #define ADC_ExternalTrigInjecConv_T2_TRGO          ((uint32_t)0x00020000)\r
341 #define ADC_ExternalTrigInjecConv_T2_CC1           ((uint32_t)0x00030000)\r
342 \r
343 /* TIM3 */\r
344 #define ADC_ExternalTrigInjecConv_T3_CC4           ((uint32_t)0x00040000)\r
345 \r
346 /* TIM4 */\r
347 #define ADC_ExternalTrigInjecConv_T4_TRGO          ((uint32_t)0x00050000)\r
348 #define ADC_ExternalTrigInjecConv_T4_CC1           ((uint32_t)0x00060000)\r
349 #define ADC_ExternalTrigInjecConv_T4_CC2           ((uint32_t)0x00070000)\r
350 #define ADC_ExternalTrigInjecConv_T4_CC3           ((uint32_t)0x00080000)\r
351 \r
352 /* TIM7 */\r
353 #define ADC_ExternalTrigInjecConv_T7_TRGO          ((uint32_t)0x000A0000)\r
354 \r
355 /* TIM9 */\r
356 #define ADC_ExternalTrigInjecConv_T9_CC1           ((uint32_t)0x00000000)\r
357 #define ADC_ExternalTrigInjecConv_T9_TRGO          ((uint32_t)0x00010000)\r
358 \r
359 /* TIM10 */\r
360 #define ADC_ExternalTrigInjecConv_T10_CC1          ((uint32_t)0x00090000)\r
361 \r
362 /* EXTI */\r
363 #define ADC_ExternalTrigInjecConv_Ext_IT15         ((uint32_t)0x000F0000)\r
364 \r
365 #define IS_ADC_EXT_INJEC_TRIG(INJTRIG) (((INJTRIG) == ADC_ExternalTrigInjecConv_T9_CC1)  || \\r
366                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T9_TRGO) || \\r
367                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T2_TRGO) || \\r
368                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T2_CC1)  || \\r
369                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T3_CC4)  || \\r
370                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_TRGO) || \\r
371                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_CC1)  || \\r
372                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_CC2)  || \\r
373                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T4_CC3)  || \\r
374                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T10_CC1) || \\r
375                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_T7_TRGO) || \\r
376                                         ((INJTRIG) == ADC_ExternalTrigInjecConv_Ext_IT15))\r
377 /**\r
378   * @}\r
379   */ \r
380 \r
381 /** @defgroup ADC_injected_channel_selection \r
382   * @{\r
383   */ \r
384 #define ADC_InjectedChannel_1                      ((uint8_t)0x18)\r
385 #define ADC_InjectedChannel_2                      ((uint8_t)0x1C)\r
386 #define ADC_InjectedChannel_3                      ((uint8_t)0x20)\r
387 #define ADC_InjectedChannel_4                      ((uint8_t)0x24)\r
388 \r
389 #define IS_ADC_INJECTED_CHANNEL(CHANNEL) (((CHANNEL) == ADC_InjectedChannel_1) || \\r
390                                           ((CHANNEL) == ADC_InjectedChannel_2) || \\r
391                                           ((CHANNEL) == ADC_InjectedChannel_3) || \\r
392                                           ((CHANNEL) == ADC_InjectedChannel_4))\r
393 /**\r
394   * @}\r
395   */ \r
396 \r
397 /** @defgroup ADC_analog_watchdog_selection \r
398   * @{\r
399   */ \r
400   \r
401 #define ADC_AnalogWatchdog_SingleRegEnable         ((uint32_t)0x00800200)\r
402 #define ADC_AnalogWatchdog_SingleInjecEnable       ((uint32_t)0x00400200)\r
403 #define ADC_AnalogWatchdog_SingleRegOrInjecEnable  ((uint32_t)0x00C00200) \r
404 #define ADC_AnalogWatchdog_AllRegEnable            ((uint32_t)0x00800000)\r
405 #define ADC_AnalogWatchdog_AllInjecEnable          ((uint32_t)0x00400000)\r
406 #define ADC_AnalogWatchdog_AllRegAllInjecEnable    ((uint32_t)0x00C00000)\r
407 #define ADC_AnalogWatchdog_None                    ((uint32_t)0x00000000)\r
408 \r
409 #define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) (((WATCHDOG) == ADC_AnalogWatchdog_SingleRegEnable)        || \\r
410                                           ((WATCHDOG) == ADC_AnalogWatchdog_SingleInjecEnable)      || \\r
411                                           ((WATCHDOG) == ADC_AnalogWatchdog_SingleRegOrInjecEnable) || \\r
412                                           ((WATCHDOG) == ADC_AnalogWatchdog_AllRegEnable)           || \\r
413                                           ((WATCHDOG) == ADC_AnalogWatchdog_AllInjecEnable)         || \\r
414                                           ((WATCHDOG) == ADC_AnalogWatchdog_AllRegAllInjecEnable)   || \\r
415                                           ((WATCHDOG) == ADC_AnalogWatchdog_None))\r
416 /**\r
417   * @}\r
418   */ \r
419 \r
420 /** @defgroup ADC_interrupts_definition \r
421   * @{\r
422   */ \r
423   \r
424 #define ADC_IT_AWD                                 ((uint16_t)0x0106) \r
425 #define ADC_IT_EOC                                 ((uint16_t)0x0205) \r
426 #define ADC_IT_JEOC                                ((uint16_t)0x0407)  \r
427 #define ADC_IT_OVR                                 ((uint16_t)0x201A) \r
428  \r
429 #define IS_ADC_IT(IT) (((IT) == ADC_IT_AWD) || ((IT) == ADC_IT_EOC) || \\r
430                        ((IT) == ADC_IT_JEOC)|| ((IT) == ADC_IT_OVR)) \r
431 /**\r
432   * @}\r
433   */ \r
434 \r
435 /** @defgroup ADC_flags_definition \r
436   * @{\r
437   */ \r
438   \r
439 #define ADC_FLAG_AWD                               ((uint16_t)0x0001)\r
440 #define ADC_FLAG_EOC                               ((uint16_t)0x0002)\r
441 #define ADC_FLAG_JEOC                              ((uint16_t)0x0004)\r
442 #define ADC_FLAG_JSTRT                             ((uint16_t)0x0008)\r
443 #define ADC_FLAG_STRT                              ((uint16_t)0x0010)\r
444 #define ADC_FLAG_OVR                               ((uint16_t)0x0020)\r
445 #define ADC_FLAG_ADONS                             ((uint16_t)0x0040)\r
446 #define ADC_FLAG_RCNR                              ((uint16_t)0x0100)\r
447 #define ADC_FLAG_JCNR                              ((uint16_t)0x0200) \r
448   \r
449 #define IS_ADC_CLEAR_FLAG(FLAG) ((((FLAG) & (uint16_t)0xFFC0) == 0x00) && ((FLAG) != 0x00))\r
450    \r
451 #define IS_ADC_GET_FLAG(FLAG) (((FLAG) == ADC_FLAG_AWD)   || ((FLAG) == ADC_FLAG_EOC)  || \\r
452                                ((FLAG) == ADC_FLAG_JEOC)  || ((FLAG)== ADC_FLAG_JSTRT) || \\r
453                                ((FLAG) == ADC_FLAG_STRT)  || ((FLAG)== ADC_FLAG_OVR)   || \\r
454                                ((FLAG) == ADC_FLAG_ADONS) || ((FLAG)== ADC_FLAG_RCNR)  || \\r
455                                ((FLAG) == ADC_FLAG_JCNR))\r
456 /**\r
457   * @}\r
458   */ \r
459 \r
460 /** @defgroup ADC_thresholds \r
461   * @{\r
462   */ \r
463   \r
464 #define IS_ADC_THRESHOLD(THRESHOLD) ((THRESHOLD) <= 0xFFF)\r
465 \r
466 /**\r
467   * @}\r
468   */ \r
469 \r
470 /** @defgroup ADC_injected_offset \r
471   * @{\r
472   */\r
473    \r
474 #define IS_ADC_OFFSET(OFFSET) ((OFFSET) <= 0xFFF)\r
475 \r
476 /**\r
477   * @}\r
478   */ \r
479 \r
480 /** @defgroup ADC_injected_length \r
481   * @{\r
482   */\r
483    \r
484 #define IS_ADC_INJECTED_LENGTH(LENGTH) (((LENGTH) >= 0x1) && ((LENGTH) <= 0x4))\r
485 \r
486 /**\r
487   * @}\r
488   */ \r
489 \r
490 /** @defgroup ADC_injected_rank \r
491   * @{\r
492   */ \r
493   \r
494 #define IS_ADC_INJECTED_RANK(RANK) (((RANK) >= 0x1) && ((RANK) <= 0x4))\r
495 \r
496 /**\r
497   * @}\r
498   */ \r
499 \r
500 /** @defgroup ADC_regular_length \r
501   * @{\r
502   */\r
503    \r
504 #define IS_ADC_REGULAR_LENGTH(LENGTH) (((LENGTH) >= 1) && ((LENGTH) <= 27))\r
505 \r
506 /**\r
507   * @}\r
508   */ \r
509 \r
510 /** @defgroup ADC_regular_rank \r
511   * @{\r
512   */ \r
513   \r
514 #define IS_ADC_REGULAR_RANK(RANK) (((RANK) >= 0x1) && ((RANK) <= 0x1B))\r
515 \r
516 /**\r
517   * @}\r
518   */ \r
519 \r
520 /** @defgroup ADC_regular_discontinuous_mode_number \r
521   * @{\r
522   */\r
523    \r
524 #define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) (((NUMBER) >= 0x1) && ((NUMBER) <= 0x8))\r
525 \r
526 /**\r
527   * @}\r
528   */ \r
529 \r
530 /**\r
531   * @}\r
532   */ \r
533 \r
534 /* Exported macro ------------------------------------------------------------*/\r
535 /* Exported functions ------------------------------------------------------- */ \r
536 \r
537 /*  Function used to set the ADC configuration to the default reset state *****/   \r
538 void ADC_DeInit(ADC_TypeDef* ADCx); \r
539 \r
540 /* Initialization and Configuration functions *********************************/ \r
541 void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);\r
542 void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);\r
543 void ADC_CommonInit(ADC_CommonInitTypeDef* ADC_CommonInitStruct);\r
544 void ADC_CommonStructInit(ADC_CommonInitTypeDef* ADC_CommonInitStruct);\r
545 void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
546 \r
547 /* Power saving functions *****************************************************/\r
548 void ADC_PowerDownCmd(ADC_TypeDef* ADCx, uint32_t ADC_PowerDown, FunctionalState NewState);\r
549 void ADC_DelaySelectionConfig(ADC_TypeDef* ADCx, uint8_t ADC_DelayLength);\r
550 \r
551 /* Analog Watchdog configuration functions ************************************/\r
552 void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, uint32_t ADC_AnalogWatchdog);\r
553 void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, uint16_t HighThreshold,uint16_t LowThreshold);\r
554 void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel);\r
555 \r
556 /* Temperature Sensor & Vrefint (Voltage Reference internal) management function */\r
557 void ADC_TempSensorVrefintCmd(FunctionalState NewState);\r
558 \r
559 /* Regular Channels Configuration functions ***********************************/\r
560 void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);\r
561 void ADC_SoftwareStartConv(ADC_TypeDef* ADCx);\r
562 FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);\r
563 void ADC_EOCOnEachRegularChannelCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
564 void ADC_ContinuousModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
565 void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, uint8_t Number);\r
566 void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
567 uint16_t ADC_GetConversionValue(ADC_TypeDef* ADCx);\r
568 \r
569 /* Regular Channels DMA Configuration functions *******************************/\r
570 void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
571 void ADC_DMARequestAfterLastTransferCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
572 \r
573 /* Injected channels Configuration functions **********************************/\r
574 void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel, uint8_t Rank, uint8_t ADC_SampleTime);\r
575 void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, uint8_t Length);\r
576 void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel, uint16_t Offset);\r
577 void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConv);\r
578 void ADC_ExternalTrigInjectedConvEdgeConfig(ADC_TypeDef* ADCx, uint32_t ADC_ExternalTrigInjecConvEdge);\r
579 void ADC_SoftwareStartInjectedConv(ADC_TypeDef* ADCx);\r
580 FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);\r
581 void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
582 void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
583 uint16_t ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, uint8_t ADC_InjectedChannel);\r
584 \r
585 /* Interrupts and flags management functions **********************************/\r
586 void ADC_ITConfig(ADC_TypeDef* ADCx, uint16_t ADC_IT, FunctionalState NewState);\r
587 FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, uint16_t ADC_FLAG);\r
588 void ADC_ClearFlag(ADC_TypeDef* ADCx, uint16_t ADC_FLAG);\r
589 ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, uint16_t ADC_IT);\r
590 void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, uint16_t ADC_IT);\r
591 \r
592 #ifdef __cplusplus\r
593 }\r
594 #endif\r
595 \r
596 #endif /*__STM32L1xx_ADC_H */\r
597 \r
598 /**\r
599   * @}\r
600   */ \r
601 \r
602 /**\r
603   * @}\r
604   */ \r
605 \r
606 /******************* (C) COPYRIGHT 2010 STMicroelectronics *****END OF FILE****/\r