]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_STM32F103_Keil/STM32F10xFWLib/inc/stm32f10x_adc.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_STM32F103_Keil / STM32F10xFWLib / inc / stm32f10x_adc.h
1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
2 * File Name          : stm32f10x_adc.h\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 09/29/2006\r
5 * Description        : This file contains all the functions prototypes for the\r
6 *                      ADC firmware library.\r
7 ********************************************************************************\r
8 * History:\r
9 * 04/02/2007: V0.2\r
10 * 02/05/2007: V0.1\r
11 * 09/29/2006: V0.01\r
12 ********************************************************************************\r
13 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
14 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
15 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
16 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
17 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
18 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
19 *******************************************************************************/\r
20 \r
21 /* Define to prevent recursive inclusion -------------------------------------*/\r
22 #ifndef __STM32F10x_ADC_H\r
23 #define __STM32F10x_ADC_H\r
24 \r
25 /* Includes ------------------------------------------------------------------*/\r
26 #include "stm32f10x_map.h"\r
27 \r
28 /* Exported types ------------------------------------------------------------*/\r
29 /* ADC Init structure definition */\r
30 typedef struct\r
31 {\r
32   u32 ADC_Mode;\r
33   FunctionalState ADC_ScanConvMode; \r
34   FunctionalState ADC_ContinuousConvMode;\r
35   u32 ADC_ExternalTrigConv;\r
36   u32 ADC_DataAlign;\r
37   u8 ADC_NbrOfChannel;\r
38 }ADC_InitTypeDef;\r
39 \r
40 /* Exported constants --------------------------------------------------------*/\r
41 /* ADC dual mode -------------------------------------------------------------*/\r
42 #define ADC_Mode_Independent                       ((u32)0x00000000)\r
43 #define ADC_Mode_RegInjecSimult                    ((u32)0x00010000)\r
44 #define ADC_Mode_RegSimult_AlterTrig               ((u32)0x00020000)\r
45 #define ADC_Mode_InjecSimult_FastInterl            ((u32)0x00030000)\r
46 #define ADC_Mode_InjecSimult_SlowInterl            ((u32)0x00040000)\r
47 #define ADC_Mode_InjecSimult                       ((u32)0x00050000)\r
48 #define ADC_Mode_RegSimult                         ((u32)0x00060000)\r
49 #define ADC_Mode_FastInterl                        ((u32)0x00070000)\r
50 #define ADC_Mode_SlowInterl                        ((u32)0x00080000)\r
51 #define ADC_Mode_AlterTrig                         ((u32)0x00090000)\r
52 \r
53 #define IS_ADC_MODE(MODE) ((MODE == ADC_Mode_Independent) || \\r
54                            (MODE == ADC_Mode_RegInjecSimult) || \\r
55                            (MODE == ADC_Mode_RegSimult_AlterTrig) || \\r
56                            (MODE == ADC_Mode_InjecSimult_FastInterl) || \\r
57                            (MODE == ADC_Mode_InjecSimult_SlowInterl) || \\r
58                            (MODE == ADC_Mode_InjecSimult) || \\r
59                            (MODE == ADC_Mode_RegSimult) || \\r
60                            (MODE == ADC_Mode_FastInterl) || \\r
61                            (MODE == ADC_Mode_SlowInterl) || \\r
62                            (MODE == ADC_Mode_AlterTrig))\r
63 \r
64 /* ADC extrenal trigger sources for regular channels conversion --------------*/\r
65 #define ADC_ExternalTrigConv_T1_CC1                ((u32)0x00000000)\r
66 #define ADC_ExternalTrigConv_T1_CC2                ((u32)0x00020000)\r
67 #define ADC_ExternalTrigConv_T1_CC3                ((u32)0x00040000)\r
68 #define ADC_ExternalTrigConv_T2_CC2                ((u32)0x00060000)\r
69 #define ADC_ExternalTrigConv_T3_TRGO               ((u32)0x00080000)\r
70 #define ADC_ExternalTrigConv_T4_CC4                ((u32)0x000A0000)\r
71 #define ADC_ExternalTrigConv_Ext_IT11              ((u32)0x000C0000)\r
72 #define ADC_ExternalTrigConv_None                  ((u32)0x000E0000)\r
73 \r
74 #define IS_ADC_EXT_TRIG(TRIG1) ((TRIG1 == ADC_ExternalTrigConv_T1_CC1) || \\r
75                                 (TRIG1 == ADC_ExternalTrigConv_T1_CC2) || \\r
76                                 (TRIG1 == ADC_ExternalTrigConv_T1_CC3) || \\r
77                                 (TRIG1 == ADC_ExternalTrigConv_T2_CC2) || \\r
78                                 (TRIG1 == ADC_ExternalTrigConv_T3_TRGO) || \\r
79                                 (TRIG1 == ADC_ExternalTrigConv_T4_CC4) || \\r
80                                 (TRIG1 == ADC_ExternalTrigConv_Ext_IT11) || \\r
81                                 (TRIG1 == ADC_ExternalTrigConv_None))\r
82 \r
83 /* ADC data align ------------------------------------------------------------*/\r
84 #define ADC_DataAlign_Right                        ((u32)0x00000000)\r
85 #define ADC_DataAlign_Left                         ((u32)0x00000800)\r
86 \r
87 #define IS_ADC_DATA_ALIGN(ALIGN) ((ALIGN == ADC_DataAlign_Right) || \\r
88                                   (ALIGN == ADC_DataAlign_Left))\r
89 \r
90 /* ADC channels --------------------------------------------------------------*/\r
91 #define ADC_Channel_0                               ((u8)0x00)\r
92 #define ADC_Channel_1                               ((u8)0x01)\r
93 #define ADC_Channel_2                               ((u8)0x02)\r
94 #define ADC_Channel_3                               ((u8)0x03)\r
95 #define ADC_Channel_4                               ((u8)0x04)\r
96 #define ADC_Channel_5                               ((u8)0x05)\r
97 #define ADC_Channel_6                               ((u8)0x06)\r
98 #define ADC_Channel_7                               ((u8)0x07)\r
99 #define ADC_Channel_8                               ((u8)0x08)\r
100 #define ADC_Channel_9                               ((u8)0x09)\r
101 #define ADC_Channel_10                              ((u8)0x0A)\r
102 #define ADC_Channel_11                              ((u8)0x0B)\r
103 #define ADC_Channel_12                              ((u8)0x0C)\r
104 #define ADC_Channel_13                              ((u8)0x0D)\r
105 #define ADC_Channel_14                              ((u8)0x0E)\r
106 #define ADC_Channel_15                              ((u8)0x0F)\r
107 #define ADC_Channel_16                              ((u8)0x10)\r
108 #define ADC_Channel_17                              ((u8)0x11)\r
109 \r
110 #define IS_ADC_CHANNEL(CHANNEL) ((CHANNEL == ADC_Channel_0) || (CHANNEL == ADC_Channel_1) || \\r
111                                  (CHANNEL == ADC_Channel_2) || (CHANNEL == ADC_Channel_3) || \\r
112                                  (CHANNEL == ADC_Channel_4) || (CHANNEL == ADC_Channel_5) || \\r
113                                  (CHANNEL == ADC_Channel_6) || (CHANNEL == ADC_Channel_7) || \\r
114                                  (CHANNEL == ADC_Channel_8) || (CHANNEL == ADC_Channel_9) || \\r
115                                  (CHANNEL == ADC_Channel_10) || (CHANNEL == ADC_Channel_11) || \\r
116                                  (CHANNEL == ADC_Channel_12) || (CHANNEL == ADC_Channel_13) || \\r
117                                  (CHANNEL == ADC_Channel_14) || (CHANNEL == ADC_Channel_15) || \\r
118                                  (CHANNEL == ADC_Channel_16) || (CHANNEL == ADC_Channel_17))\r
119 \r
120 /* ADC sampling times --------------------------------------------------------*/\r
121 #define ADC_SampleTime_1Cycles5                    ((u8)0x00)\r
122 #define ADC_SampleTime_7Cycles5                    ((u8)0x01)\r
123 #define ADC_SampleTime_13Cycles5                   ((u8)0x02)\r
124 #define ADC_SampleTime_28Cycles5                   ((u8)0x03)\r
125 #define ADC_SampleTime_41Cycles5                   ((u8)0x04)\r
126 #define ADC_SampleTime_55Cycles5                   ((u8)0x05)\r
127 #define ADC_SampleTime_71Cycles5                   ((u8)0x06)\r
128 #define ADC_SampleTime_239Cycles5                  ((u8)0x07)\r
129 \r
130 #define IS_ADC_SAMPLE_TIME(TIME) ((TIME == ADC_SampleTime_1Cycles5) || \\r
131                                   (TIME == ADC_SampleTime_7Cycles5) || \\r
132                                   (TIME == ADC_SampleTime_13Cycles5) || \\r
133                                   (TIME == ADC_SampleTime_28Cycles5) || \\r
134                                   (TIME == ADC_SampleTime_41Cycles5) || \\r
135                                   (TIME == ADC_SampleTime_55Cycles5) || \\r
136                                   (TIME == ADC_SampleTime_71Cycles5) || \\r
137                                   (TIME == ADC_SampleTime_239Cycles5))\r
138 \r
139 /* ADC extrenal trigger sources for injected channels conversion -------------*/\r
140 #define ADC_ExternalTrigInjecConv_T1_TRGO          ((u32)0x00000000)\r
141 #define ADC_ExternalTrigInjecConv_T1_CC4           ((u32)0x00001000)\r
142 #define ADC_ExternalTrigInjecConv_T2_TRGO          ((u32)0x00002000)\r
143 #define ADC_ExternalTrigInjecConv_T2_CC1           ((u32)0x00003000)\r
144 #define ADC_ExternalTrigInjecConv_T3_CC4           ((u32)0x00004000)\r
145 #define ADC_ExternalTrigInjecConv_T4_TRGO          ((u32)0x00005000)\r
146 #define ADC_ExternalTrigInjecConv_Ext_IT15         ((u32)0x00006000)\r
147 #define ADC_ExternalTrigInjecConv_None             ((u32)0x00007000)\r
148 \r
149 #define IS_ADC_EXT_INJEC_TRIG(TRIG) ((TRIG == ADC_ExternalTrigInjecConv_T1_TRGO) || \\r
150                                      (TRIG == ADC_ExternalTrigInjecConv_T1_CC4) || \\r
151                                      (TRIG == ADC_ExternalTrigInjecConv_T2_TRGO) || \\r
152                                      (TRIG == ADC_ExternalTrigInjecConv_T2_CC1) || \\r
153                                      (TRIG == ADC_ExternalTrigInjecConv_T3_CC4) || \\r
154                                      (TRIG == ADC_ExternalTrigInjecConv_T4_TRGO) || \\r
155                                      (TRIG == ADC_ExternalTrigInjecConv_Ext_IT15) || \\r
156                                      (TRIG == ADC_ExternalTrigInjecConv_None))\r
157 \r
158 /* ADC injected channel selection --------------------------------------------*/\r
159 #define ADC_InjectedChannel_1                       ((u8)0x14)\r
160 #define ADC_InjectedChannel_2                       ((u8)0x18)\r
161 #define ADC_InjectedChannel_3                       ((u8)0x1C)\r
162 #define ADC_InjectedChannel_4                       ((u8)0x20)\r
163 \r
164 #define IS_ADC_INJECTED_CHANNEL(CHANNEL) ((CHANNEL == ADC_InjectedChannel_1) || \\r
165                                           (CHANNEL == ADC_InjectedChannel_2) || \\r
166                                           (CHANNEL == ADC_InjectedChannel_3) || \\r
167                                           (CHANNEL == ADC_InjectedChannel_4))\r
168 \r
169 /* ADC analog watchdog selection ---------------------------------------------*/\r
170 #define ADC_AnalogWatchdog_SingleRegEnable         ((u32)0x00800200)\r
171 #define ADC_AnalogWatchdog_SingleInjecEnable       ((u32)0x00400200)\r
172 #define ADC_AnalogWatchdog_SingleRegOrInjecEnable  ((u32)0x00C00200)\r
173 #define ADC_AnalogWatchdog_AllRegEnable            ((u32)0x00800000)\r
174 #define ADC_AnalogWatchdog_AllInjecEnable          ((u32)0x00400000)\r
175 #define ADC_AnalogWatchdog_AllRegAllInjecEnable    ((u32)0x00C00000)\r
176 #define ADC_AnalogWatchdog_None                    ((u32)0x00000000)\r
177 \r
178 #define IS_ADC_ANALOG_WATCHDOG(WATCHDOG) ((WATCHDOG == ADC_AnalogWatchdog_SingleRegEnable) || \\r
179                                           (WATCHDOG == ADC_AnalogWatchdog_SingleInjecEnable) || \\r
180                                           (WATCHDOG == ADC_AnalogWatchdog_SingleRegOrInjecEnable) || \\r
181                                           (WATCHDOG == ADC_AnalogWatchdog_AllRegEnable) || \\r
182                                           (WATCHDOG == ADC_AnalogWatchdog_AllInjecEnable) || \\r
183                                           (WATCHDOG == ADC_AnalogWatchdog_AllRegAllInjecEnable) || \\r
184                                           (WATCHDOG == ADC_AnalogWatchdog_None))\r
185 \r
186 /* ADC interrupts definition -------------------------------------------------*/\r
187 #define ADC_IT_EOC                                 ((u16)0x0220)\r
188 #define ADC_IT_AWD                                 ((u16)0x0140)\r
189 #define ADC_IT_JEOC                                ((u16)0x0480)\r
190 \r
191 #define IS_ADC_IT(IT) (((IT & (u16)0xF81F) == 0x00) && (IT != 0x00))\r
192 #define IS_ADC_GET_IT(IT) ((IT == ADC_IT_EOC) || (IT == ADC_IT_AWD) || \\r
193                            (IT == ADC_IT_JEOC))\r
194 \r
195 /* ADC flags definition ------------------------------------------------------*/\r
196 #define ADC_FLAG_AWD                               ((u8)0x01)\r
197 #define ADC_FLAG_EOC                               ((u8)0x02)\r
198 #define ADC_FLAG_JEOC                              ((u8)0x04)\r
199 #define ADC_FLAG_JSTRT                             ((u8)0x08)\r
200 #define ADC_FLAG_STRT                              ((u8)0x10)\r
201 \r
202 #define IS_ADC_CLEAR_FLAG(FLAG) (((FLAG & (u8)0xE0) == 0x00) && (FLAG != 0x00))\r
203 #define IS_ADC_GET_FLAG(FLAG) ((FLAG == ADC_FLAG_AWD) || (FLAG == ADC_FLAG_EOC) || \\r
204                                (FLAG == ADC_FLAG_JEOC) || (FLAG == ADC_FLAG_JSTRT) || \\r
205                                (FLAG == ADC_FLAG_STRT))\r
206 \r
207 /* ADC thresholds ------------------------------------------------------------*/\r
208 #define IS_ADC_THRESHOLD(THRESHOLD) (THRESHOLD <= 0xFFF)\r
209 \r
210 /* ADC injected offset -------------------------------------------------------*/\r
211 #define IS_ADC_OFFSET(OFFSET) (OFFSET <= 0xFFF)\r
212 \r
213 /* ADC injected length -------------------------------------------------------*/\r
214 #define IS_ADC_INJECTED_LENGTH(LENGTH) ((LENGTH >= 0x1) && (LENGTH <= 0x4))\r
215 \r
216 /* ADC injected rank ---------------------------------------------------------*/\r
217 #define IS_ADC_INJECTED_RANK(RANK) ((RANK >= 0x1) && (RANK <= 0x4))\r
218 \r
219 /* ADC regular length --------------------------------------------------------*/\r
220 #define IS_ADC_REGULAR_LENGTH(LENGTH) ((LENGTH >= 0x1) && (LENGTH <= 0x10))\r
221 \r
222 /* ADC regular rank ----------------------------------------------------------*/\r
223 #define IS_ADC_REGULAR_RANK(RANK) ((RANK >= 0x1) && (RANK <= 0x10))\r
224 \r
225 /* ADC regular discontinuous mode number -------------------------------------*/\r
226 #define IS_ADC_REGULAR_DISC_NUMBER(NUMBER) ((NUMBER >= 0x1) && (NUMBER <= 0x8))\r
227 \r
228 /* Exported macro ------------------------------------------------------------*/\r
229 /* Exported functions ------------------------------------------------------- */\r
230 void ADC_DeInit(ADC_TypeDef* ADCx);\r
231 void ADC_Init(ADC_TypeDef* ADCx, ADC_InitTypeDef* ADC_InitStruct);\r
232 void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct);\r
233 void ADC_Cmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
234 void ADC_DMACmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
235 void ADC_ITConfig(ADC_TypeDef* ADCx, u16 ADC_IT, FunctionalState NewState);\r
236 void ADC_ResetCalibration(ADC_TypeDef* ADCx);\r
237 FlagStatus ADC_GetResetCalibrationStatus(ADC_TypeDef* ADCx);\r
238 void ADC_StartCalibration(ADC_TypeDef* ADCx);\r
239 FlagStatus ADC_GetCalibrationStatus(ADC_TypeDef* ADCx);\r
240 void ADC_SoftwareStartConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
241 FlagStatus ADC_GetSoftwareStartConvStatus(ADC_TypeDef* ADCx);\r
242 void ADC_DiscModeChannelCountConfig(ADC_TypeDef* ADCx, u8 Number);\r
243 void ADC_DiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
244 void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime);\r
245 void ADC_ExternalTrigConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
246 u16 ADC_GetConversionValue(ADC_TypeDef* ADCx);\r
247 u32 ADC_GetDualModeConversionValue(void);\r
248 void ADC_AutoInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
249 void ADC_InjectedDiscModeCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
250 void ADC_ExternalTrigInjectedConvConfig(ADC_TypeDef* ADCx, u32 ADC_ExternalTrigInjecConv);\r
251 void ADC_ExternalTrigInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
252 void ADC_SoftwareStartInjectedConvCmd(ADC_TypeDef* ADCx, FunctionalState NewState);\r
253 FlagStatus ADC_GetSoftwareStartInjectedConvCmdStatus(ADC_TypeDef* ADCx);\r
254 void ADC_InjectedChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel, u8 Rank, u8 ADC_SampleTime);\r
255 void ADC_InjectedSequencerLengthConfig(ADC_TypeDef* ADCx, u8 Length);\r
256 void ADC_SetInjectedOffset(ADC_TypeDef* ADCx, u8 ADC_InjectedChannel, u16 Offset);\r
257 u16 ADC_GetInjectedConversionValue(ADC_TypeDef* ADCx, u8 ADC_InjectedChannel);\r
258 void ADC_AnalogWatchdogCmd(ADC_TypeDef* ADCx, u32 ADC_AnalogWatchdog);\r
259 void ADC_AnalogWatchdogThresholdsConfig(ADC_TypeDef* ADCx, u16 HighThreshold, u16 LowThreshold);\r
260 void ADC_AnalogWatchdogSingleChannelConfig(ADC_TypeDef* ADCx, u8 ADC_Channel);\r
261 void ADC_TempSensorCmd(FunctionalState NewState);\r
262 FlagStatus ADC_GetFlagStatus(ADC_TypeDef* ADCx, u8 ADC_FLAG);\r
263 void ADC_ClearFlag(ADC_TypeDef* ADCx, u8 ADC_FLAG);\r
264 ITStatus ADC_GetITStatus(ADC_TypeDef* ADCx, u16 ADC_IT);\r
265 void ADC_ClearITPendingBit(ADC_TypeDef* ADCx, u16 ADC_IT);\r
266 \r
267 #endif /*__STM32F10x_ADC_H */\r
268 \r
269 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r