Subversion Repositories ScreenTimer

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f0xx_hal_adc_ex.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of ADC HAL Extension module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10
  * All rights reserved.</center></h2>
11
  *
12
  * This software component is licensed by ST under BSD 3-Clause license,
13
  * the "License"; You may not use this file except in compliance with the
14
  * License. You may obtain a copy of the License at:
15
  *                        opensource.org/licenses/BSD-3-Clause
16
  *
17
  ******************************************************************************
18
  */
19
 
20
/* Define to prevent recursive inclusion -------------------------------------*/
21
#ifndef __STM32F0xx_HAL_ADC_EX_H
22
#define __STM32F0xx_HAL_ADC_EX_H
23
 
24
#ifdef __cplusplus
25
 extern "C" {
26
#endif
27
 
28
/* Includes ------------------------------------------------------------------*/
29
#include "stm32f0xx_hal_def.h"  
30
 
31
/** @addtogroup STM32F0xx_HAL_Driver
32
  * @{
33
  */
34
 
35
/** @addtogroup ADCEx
36
  * @{
37
  */
38
 
39
/* Exported types ------------------------------------------------------------*/
40
/* Exported constants --------------------------------------------------------*/
41
 
42
/** @defgroup ADC_Exported_Constants ADC Exported Constants
43
  * @{
44
  */
45
 
46
#if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
47
#define ADC_CCR_ALL     (ADC_CCR_VBATEN | ADC_CCR_TSEN | ADC_CCR_VREFEN)
48
#else
49
#define ADC_CCR_ALL     (ADC_CCR_TSEN | ADC_CCR_VREFEN)
50
#endif
51
 
52
/** @defgroup ADC_External_trigger_source_Regular ADC External trigger source Regular
53
  * @{
54
  */
55
/* List of external triggers with generic trigger name, sorted by trigger     */
56
/* name:                                                                      */
57
 
58
/* External triggers of regular group for ADC1 */
59
#define ADC_EXTERNALTRIGCONV_T1_TRGO        ADC1_2_EXTERNALTRIG_T1_TRGO
60
#define ADC_EXTERNALTRIGCONV_T1_CC4         ADC1_2_EXTERNALTRIG_T1_CC4
61
#define ADC_EXTERNALTRIGCONV_T3_TRGO        ADC1_2_EXTERNALTRIG_T3_TRGO
62
#define ADC_SOFTWARE_START                  (ADC_CFGR1_EXTSEL + 1U)
63
 
64
#if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
65
#define ADC_EXTERNALTRIGCONV_T2_TRGO        ADC1_2_EXTERNALTRIG_T2_TRGO
66
#endif 
67
 
68
#if !defined(STM32F030x6) && !defined(STM32F070x6) && !defined(STM32F042x6)
69
#define ADC_EXTERNALTRIGCONV_T15_TRGO       ADC1_2_EXTERNALTRIG_T15_TRGO
70
#endif
71
 
72
/**
73
  * @}
74
  */
75
 
76
 
77
/** @defgroup ADC_channels ADC channels
78
  * @{
79
  */
80
/* Note: Depending on devices, some channels may not be available on package  */
81
/*       pins. Refer to device datasheet for channels availability.           */
82
/* Note: Channels are used by bitfields for setting of channel selection      */
83
/*       (register ADC_CHSELR) and used by number for setting of analog       */
84
/*       watchdog channel (bits AWDCH in register ADC_CFGR1).                 */
85
/*       Channels are defined with decimal numbers and converted them to      */
86
/*       bitfields when needed.                                               */
87
#define ADC_CHANNEL_0           ( 0x00000000U)
88
#define ADC_CHANNEL_1           ( 0x00000001U)
89
#define ADC_CHANNEL_2           ( 0x00000002U)
90
#define ADC_CHANNEL_3           ( 0x00000003U)
91
#define ADC_CHANNEL_4           ( 0x00000004U)
92
#define ADC_CHANNEL_5           ( 0x00000005U)
93
#define ADC_CHANNEL_6           ( 0x00000006U)
94
#define ADC_CHANNEL_7           ( 0x00000007U)
95
#define ADC_CHANNEL_8           ( 0x00000008U)
96
#define ADC_CHANNEL_9           ( 0x00000009U)
97
#define ADC_CHANNEL_10          ( 0x0000000AU)
98
#define ADC_CHANNEL_11          ( 0x0000000BU)
99
#define ADC_CHANNEL_12          ( 0x0000000CU)
100
#define ADC_CHANNEL_13          ( 0x0000000DU)
101
#define ADC_CHANNEL_14          ( 0x0000000EU)
102
#define ADC_CHANNEL_15          ( 0x0000000FU)
103
#define ADC_CHANNEL_16          ( 0x00000010U)
104
#define ADC_CHANNEL_17          ( 0x00000011U)
105
 
106
#define ADC_CHANNEL_TEMPSENSOR  ADC_CHANNEL_16
107
#define ADC_CHANNEL_VREFINT     ADC_CHANNEL_17
108
 
109
#if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
110
#define ADC_CHANNEL_18          ( 0x00000012U)
111
#define ADC_CHANNEL_VBAT        ADC_CHANNEL_18 
112
#endif
113
 
114
/**
115
  * @}
116
  */
117
 
118
/**
119
  * @}
120
  */
121
 
122
/* Exported macro ------------------------------------------------------------*/
123
 
124
 
125
/* Private macros ------------------------------------------------------------*/
126
 
127
/** @defgroup ADCEx_Private_Macros ADCEx Private Macros
128
  * @{
129
  */
130
/* Macro reserved for internal HAL driver usage, not intended to be used in   */
131
/* code of final user.                                                        */
132
 
133
/**
134
  * @brief Test if the selected ADC channel is an internal channel
135
  *        VrefInt/TempSensor/Vbat
136
  *        Note: On STM32F0, availability of internal channel Vbat depends on
137
  *              devices lines.
138
  * @param __CHANNEL__ ADC channel
139
  * @retval None
140
  */
141
#if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
142
#define ADC_IS_CHANNEL_INTERNAL(__CHANNEL__)                                   \
143
 (((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) ||                                 \
144
  ((__CHANNEL__) == ADC_CHANNEL_VREFINT)    ||                                 \
145
  ((__CHANNEL__) == ADC_CHANNEL_VBAT)                                          \
146
 )
147
#else
148
#define ADC_IS_CHANNEL_INTERNAL(__CHANNEL__)                                   \
149
 (((__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR) ||                                 \
150
  ((__CHANNEL__) == ADC_CHANNEL_VREFINT)                                       \
151
 )
152
#endif
153
 
154
/**
155
  * @brief Select the internal measurement path to be enabled/disabled
156
  *        corresponding to the selected ADC internal channel
157
  *        VrefInt/TempSensor/Vbat.
158
  *        Note: On STM32F0, availability of internal channel Vbat depends on
159
  *              devices lines.
160
  * @param __CHANNEL__ ADC channel
161
  * @retval Bit of register ADC_CCR
162
  */
163
#if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
164
#define ADC_CHANNEL_INTERNAL_PATH(__CHANNEL__)                                 \
165
 (( (__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR                                    \
166
  )?                                                                           \
167
   (ADC_CCR_TSEN)                                                              \
168
   :                                                                           \
169
   (                                                                           \
170
     ( (__CHANNEL__) == ADC_CHANNEL_VREFINT                                    \
171
     )?                                                                        \
172
      (ADC_CCR_VREFEN)                                                         \
173
      :                                                                        \
174
      (ADC_CCR_VBATEN)                                                         \
175
   )                                                                           \
176
 )
177
#else
178
#define ADC_CHANNEL_INTERNAL_PATH(__CHANNEL__)                                 \
179
 (( (__CHANNEL__) == ADC_CHANNEL_TEMPSENSOR                                    \
180
  )?                                                                           \
181
   (ADC_CCR_TSEN)                                                              \
182
   :                                                                           \
183
   (ADC_CCR_VREFEN)                                                            \
184
 )
185
#endif
186
 
187
 
188
#if defined (STM32F030x6) || defined (STM32F070x6)
189
#define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
190
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
191
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
192
                                 ((REGTRIG) == ADC_SOFTWARE_START))
193
#elif defined (STM32F042x6)
194
#define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
195
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
196
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO)  || \
197
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
198
                                 ((REGTRIG) == ADC_SOFTWARE_START))   
199
 
200
#elif defined (STM32F030xC) || defined (STM32F070xB) || defined (STM32F030x8)
201
#define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
202
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
203
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
204
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
205
                                 ((REGTRIG) == ADC_SOFTWARE_START))
206
#else
207
#define IS_ADC_EXTTRIG(REGTRIG) (((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_TRGO)  || \
208
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T1_CC4)   || \
209
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T2_TRGO)  || \
210
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T3_TRGO)  || \
211
                                 ((REGTRIG) == ADC_EXTERNALTRIGCONV_T15_TRGO) || \
212
                                 ((REGTRIG) == ADC_SOFTWARE_START))   
213
#endif
214
 
215
#if !defined(STM32F030x6) && !defined(STM32F030x8) && !defined(STM32F070x6) && !defined(STM32F070xB) && !defined(STM32F030xC)
216
#define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0)           || \
217
                                 ((CHANNEL) == ADC_CHANNEL_1)           || \
218
                                 ((CHANNEL) == ADC_CHANNEL_2)           || \
219
                                 ((CHANNEL) == ADC_CHANNEL_3)           || \
220
                                 ((CHANNEL) == ADC_CHANNEL_4)           || \
221
                                 ((CHANNEL) == ADC_CHANNEL_5)           || \
222
                                 ((CHANNEL) == ADC_CHANNEL_6)           || \
223
                                 ((CHANNEL) == ADC_CHANNEL_7)           || \
224
                                 ((CHANNEL) == ADC_CHANNEL_8)           || \
225
                                 ((CHANNEL) == ADC_CHANNEL_9)           || \
226
                                 ((CHANNEL) == ADC_CHANNEL_10)          || \
227
                                 ((CHANNEL) == ADC_CHANNEL_11)          || \
228
                                 ((CHANNEL) == ADC_CHANNEL_12)          || \
229
                                 ((CHANNEL) == ADC_CHANNEL_13)          || \
230
                                 ((CHANNEL) == ADC_CHANNEL_14)          || \
231
                                 ((CHANNEL) == ADC_CHANNEL_15)          || \
232
                                 ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR)  || \
233
                                 ((CHANNEL) == ADC_CHANNEL_VREFINT)     || \
234
                                 ((CHANNEL) == ADC_CHANNEL_VBAT)          )
235
#else
236
#define IS_ADC_CHANNEL(CHANNEL) (((CHANNEL) == ADC_CHANNEL_0)           || \
237
                                 ((CHANNEL) == ADC_CHANNEL_1)           || \
238
                                 ((CHANNEL) == ADC_CHANNEL_2)           || \
239
                                 ((CHANNEL) == ADC_CHANNEL_3)           || \
240
                                 ((CHANNEL) == ADC_CHANNEL_4)           || \
241
                                 ((CHANNEL) == ADC_CHANNEL_5)           || \
242
                                 ((CHANNEL) == ADC_CHANNEL_6)           || \
243
                                 ((CHANNEL) == ADC_CHANNEL_7)           || \
244
                                 ((CHANNEL) == ADC_CHANNEL_8)           || \
245
                                 ((CHANNEL) == ADC_CHANNEL_9)           || \
246
                                 ((CHANNEL) == ADC_CHANNEL_10)          || \
247
                                 ((CHANNEL) == ADC_CHANNEL_11)          || \
248
                                 ((CHANNEL) == ADC_CHANNEL_12)          || \
249
                                 ((CHANNEL) == ADC_CHANNEL_13)          || \
250
                                 ((CHANNEL) == ADC_CHANNEL_14)          || \
251
                                 ((CHANNEL) == ADC_CHANNEL_15)          || \
252
                                 ((CHANNEL) == ADC_CHANNEL_TEMPSENSOR)  || \
253
                                 ((CHANNEL) == ADC_CHANNEL_VREFINT)       )
254
#endif
255
 
256
/**
257
  * @}
258
  */
259
 
260
 
261
/* Exported functions --------------------------------------------------------*/
262
/** @addtogroup ADCEx_Exported_Functions
263
  * @{
264
  */
265
 
266
/* IO operation functions  *****************************************************/
267
/** @addtogroup ADCEx_Exported_Functions_Group1
268
  * @{
269
  */
270
 
271
/* ADC calibration */
272
HAL_StatusTypeDef       HAL_ADCEx_Calibration_Start(ADC_HandleTypeDef* hadc);
273
/**
274
  * @}
275
  */
276
 
277
 
278
/**
279
  * @}
280
  */
281
 
282
 
283
/**
284
  * @}
285
  */
286
 
287
/**
288
  * @}
289
  */
290
 
291
#ifdef __cplusplus
292
}
293
#endif
294
 
295
#endif /* __STM32F0xx_HAL_ADC_EX_H */
296
 
297
 
298
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
299