Subversion Repositories NaviCtrl

Rev

Rev 1 | Rev 238 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1 Rev 196
1
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
1
/******************** (C) COPYRIGHT 2008 STMicroelectronics ********************
2
* File Name          : 91x_adc.c
2
* File Name          : 91x_adc.c
3
* Author             : MCD Application Team
3
* Author             : MCD Application Team
-
 
4
* Version            : V2.1
4
* Date First Issued  : 05/18/2006 : Version 1.0
5
* Date               : 12/22/2008
5
* Description        : This file provides all the ADC software functions.
6
* Description        : This file provides all the ADC firmware functions.
6
********************************************************************************
-
 
7
* History:
-
 
8
* 05/22/2007 : Version 1.2
-
 
9
* 05/24/2006 : Version 1.1
-
 
10
* 05/18/2006 : Version 1.0
-
 
11
********************************************************************************
7
********************************************************************************
12
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
8
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH
13
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
9
* CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS
14
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
10
* A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT, INDIRECT
15
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
11
* OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
16
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
12
* OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
17
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
13
* CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
18
*******************************************************************************/
14
*******************************************************************************/
19
 
15
 
20
 
16
 
21
/* Standard include ----------------------------------------------------------*/
17
/* Standard include ----------------------------------------------------------*/
22
#include "91x_adc.h"
18
#include "91x_adc.h"
23
#include "91x_scu.h"
19
#include "91x_scu.h"
24
/* Include of other module interface headers ---------------------------------*/
20
/* Include of other module interface headers ---------------------------------*/
25
/* Local includes ------------------------------------------------------------*/
21
/* Local includes ------------------------------------------------------------*/
26
/* Private typedef -----------------------------------------------------------*/
22
/* Private typedef -----------------------------------------------------------*/
27
/* Private define ------------------------------------------------------------*/
23
/* Private define ------------------------------------------------------------*/
28
 
24
 
29
/* ADC mask */
25
/* ADC mask */
30
#define   ADC_FLAG_MASK           0x001F     /* ADC Flag Mask           */
26
#define   ADC_FLAG_MASK           0x001F     /* ADC Flag Mask           */
31
#define   ADC_RESULT_MASK         0x03FF     /* ADC Result Mask         */
27
#define   ADC_RESULT_MASK         0x03FF     /* ADC Result Mask         */
32
#define   ADC_SCAN_MODE_MASK      0x0020     /* ADC Sacn Mode Mask      */
28
#define   ADC_SCAN_MODE_MASK      0x0020     /* ADC Sacn Mode Mask      */
33
#define   ADC_STANDBY_MODE_MASK   0x0008     /* ADC Standby Mode Mask   */
29
#define   ADC_STANDBY_MODE_MASK   0x0008     /* ADC Standby Mode Mask   */
34
#define   ADC_CMD_MASK            0x0002     /* ADC Command Mask        */
30
#define   ADC_CMD_MASK            0x0002     /* ADC Command Mask        */
35
#define   ADC_CHANNEL_MASK        0xFE3F     /* ADC Channel Select Mask */
31
#define   ADC_CHANNEL_MASK        0xFE3F     /* ADC Channel Select Mask */
36
/* Private macro -------------------------------------------------------------*/
32
/* Private macro -------------------------------------------------------------*/
37
/* Private variables ---------------------------------------------------------*/
33
/* Private variables ---------------------------------------------------------*/
38
/* Private function prototypes -----------------------------------------------*/
34
/* Private function prototypes -----------------------------------------------*/
39
/* Interface functions -------------------------------------------------------*/
35
/* Interface functions -------------------------------------------------------*/
40
/* Private functions ---------------------------------------------------------*/
36
/* Private functions ---------------------------------------------------------*/
41
 
37
 
42
/*******************************************************************************
38
/*******************************************************************************
43
* Function Name  : ADC_DeInit
39
* Function Name  : ADC_DeInit
44
* Description    : Deinitialize the ADC module registers to their default reset
40
* Description    : Deinitialize the ADC module registers to their default reset
45
*                  values
41
*                  values
46
* Input          : None
42
* Input          : None
47
* Output         : None
43
* Output         : None
48
* Return         : None
44
* Return         : None
49
*******************************************************************************/
45
*******************************************************************************/
50
void ADC_DeInit(void)
46
void ADC_DeInit(void)
51
{
47
{
52
  /* Reset the ADC registers values */
48
  /* Reset the ADC registers values */
53
  SCU_APBPeriphReset(__ADC,ENABLE);
49
  SCU_APBPeriphReset(__ADC,ENABLE);
54
  SCU_APBPeriphReset(__ADC,DISABLE);
50
  SCU_APBPeriphReset(__ADC,DISABLE);
55
}
51
}
56
 
52
 
57
/*******************************************************************************
53
/*******************************************************************************
58
* Function Name  : ADC_Init
54
* Function Name  : ADC_Init
59
* Description    : Initializes ADC  peripheral according to the specified
55
* Description    : Initializes ADC  peripheral according to the specified
60
*                  parameters in the ADC_InitTypeDef structure.
56
*                  parameters in the ADC_InitTypeDef structure.
61
* Input          : ADC_InitStruct: pointer to a ADC_InitTypeDef structure that
57
* Input          : ADC_InitStruct: pointer to a ADC_InitTypeDef structure that
62
*                  contains the configuration information for the specified
58
*                  contains the configuration information for the specified
63
*                  ADC peripheral.
59
*                  ADC peripheral.
64
* Output         : None
60
* Output         : None
65
* Return         : None
61
* Return         : None
66
*******************************************************************************/
62
*******************************************************************************/
67
void ADC_Init(ADC_InitTypeDef* ADC_InitStruct)
63
void ADC_Init(ADC_InitTypeDef* ADC_InitStruct)
68
{
64
{
69
  /* Set the low threshold of the watchdog */
65
  /* Set the low threshold of the watchdog */
70
  ADC->LTR = ADC_InitStruct->ADC_WDG_Low_Threshold;
66
  ADC->LTR = ADC_InitStruct->ADC_WDG_Low_Threshold;
71
 
67
 
72
  /* Set the high threshold of the watchdog */
68
  /* Set the high threshold of the watchdog */
73
  ADC->HTR = ADC_InitStruct->ADC_WDG_High_Threshold;
69
  ADC->HTR = ADC_InitStruct->ADC_WDG_High_Threshold;
74
 
70
 
75
   
71
   
76
  /* Channel 0 conversion mode */
72
  /* Channel 0 conversion mode */
77
  ADC->CCR &= 0xFFFC;
73
  ADC->CCR &= 0xFFFC;
78
  ADC->CCR |= ADC_InitStruct->ADC_Channel_0_Mode;
74
  ADC->CCR |= ADC_InitStruct->ADC_Channel_0_Mode;
79
 
75
 
80
  /* Channel 1 conversion mode */
76
  /* Channel 1 conversion mode */
81
  ADC->CCR &= 0xFFF3;
77
  ADC->CCR &= 0xFFF3;
82
  ADC->CCR |= ADC_InitStruct->ADC_Channel_1_Mode << 0x2;
78
  ADC->CCR |= ADC_InitStruct->ADC_Channel_1_Mode << 0x2;
83
 
79
 
84
  /* Channel 2 conversion mode */
80
  /* Channel 2 conversion mode */
85
  ADC->CCR &= 0xFFCF;
81
  ADC->CCR &= 0xFFCF;
86
  ADC->CCR |= ADC_InitStruct->ADC_Channel_2_Mode << 0x4;
82
  ADC->CCR |= ADC_InitStruct->ADC_Channel_2_Mode << 0x4;
87
 
83
 
88
  /* Channel 3 conversion mode */
84
  /* Channel 3 conversion mode */
89
  ADC->CCR &= 0xFF3F;
85
  ADC->CCR &= 0xFF3F;
90
  ADC->CCR |= ADC_InitStruct->ADC_Channel_3_Mode << 0x6;
86
  ADC->CCR |= ADC_InitStruct->ADC_Channel_3_Mode << 0x6;
91
 
87
 
92
  /* Channel 4 conversion mode */
88
  /* Channel 4 conversion mode */
93
  ADC->CCR &= 0xFCFF;
89
  ADC->CCR &= 0xFCFF;
94
  ADC->CCR |= ADC_InitStruct->ADC_Channel_4_Mode << 0x8;
90
  ADC->CCR |= ADC_InitStruct->ADC_Channel_4_Mode << 0x8;
95
 
91
 
96
  /* Channel 5 conversion mode */
92
  /* Channel 5 conversion mode */
97
  ADC->CCR &= 0xF3FF;
93
  ADC->CCR &= 0xF3FF;
98
  ADC->CCR |= ADC_InitStruct->ADC_Channel_5_Mode << 0xA;
94
  ADC->CCR |= ADC_InitStruct->ADC_Channel_5_Mode << 0xA;
99
 
95
 
100
  /* Channel 6 conversion mode */
96
  /* Channel 6 conversion mode */
101
  ADC->CCR &= 0xCFFF;
97
  ADC->CCR &= 0xCFFF;
102
  ADC->CCR |= ADC_InitStruct->ADC_Channel_6_Mode << 0xC;
98
  ADC->CCR |= ADC_InitStruct->ADC_Channel_6_Mode << 0xC;
103
 
99
 
104
  /* Channel 7 conversion mode */
100
  /* Channel 7 conversion mode */
105
  ADC->CCR &= 0x3FFF;
101
  ADC->CCR &= 0x3FFF;
106
  ADC->CCR |= ADC_InitStruct->ADC_Channel_7_Mode << 0xE;
102
  ADC->CCR |= ADC_InitStruct->ADC_Channel_7_Mode << 0xE;
107
 
103
 
108
  /* Select the channel to be converted */
104
  /* Select the channel to be converted */
109
  ADC->CR &= ADC_CHANNEL_MASK;
105
  ADC->CR &= ADC_CHANNEL_MASK;
110
  ADC->CR |= ADC_InitStruct->ADC_Select_Channel << 0x6;
106
  ADC->CR |= ADC_InitStruct->ADC_Select_Channel << 0x6;
111
 
107
 
112
  /* Enable/disable the scan mode */
108
  /* Enable/disable the scan mode */
113
  if (ADC_InitStruct->ADC_Scan_Mode == ENABLE)
109
  if (ADC_InitStruct->ADC_Scan_Mode == ENABLE)
114
  {
110
  {
115
    /* Enable the scan mode */
111
    /* Enable the scan mode */
116
    ADC->CR |= ADC_SCAN_MODE_MASK;
112
    ADC->CR |= ADC_SCAN_MODE_MASK;
117
  }
113
  }
118
  else
114
  else
119
  {
115
  {
120
    /* Disable the scan mode */
116
    /* Disable the scan mode */
121
    ADC->CR &= ~ADC_SCAN_MODE_MASK;
117
    ADC->CR &= ~ADC_SCAN_MODE_MASK;
122
  }
118
  }
123
 
119
 
124
  /* Configure the conversion mode */
120
  /* Configure the conversion mode */
125
  if (ADC_InitStruct->ADC_Conversion_Mode == ADC_Continuous_Mode)
121
  if (ADC_InitStruct->ADC_Conversion_Mode == ADC_Continuous_Mode)
126
  {
122
  {
127
    /* ADC continuous mode */
123
    /* ADC continuous mode */
128
    ADC->CR |= ADC_Continuous_Mode;
124
    ADC->CR |= ADC_Continuous_Mode;
129
  }
125
  }
130
  else
126
  else
131
  {
127
  {
132
    /* ADC single mode */
128
    /* ADC single mode */
133
    ADC->CR &= ADC_Single_Mode;
129
    ADC->CR &= ADC_Single_Mode;
134
  }
130
  }
135
}
131
}
136
 
132
 
137
/*******************************************************************************
133
/*******************************************************************************
138
* Function Name  : ADC_StructInit
134
* Function Name  : ADC_StructInit
139
* Description    : Fills each ADC_InitStruct member with its reset value.
135
* Description    : Fills each ADC_InitStruct member with its reset value.
140
* Input          : ADC_InitStruct : pointer to a ADC_InitTypeDef structure
136
* Input          : ADC_InitStruct : pointer to a ADC_InitTypeDef structure
141
*                   which will be initialized.
137
*                   which will be initialized.
142
* Output         : None
138
* Output         : None
143
* Return         : None.
139
* Return         : None.
144
*******************************************************************************/
140
*******************************************************************************/
145
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct)
141
void ADC_StructInit(ADC_InitTypeDef* ADC_InitStruct)
146
{
142
{
147
  ADC_InitStruct->ADC_WDG_High_Threshold = 0x0000;
143
  ADC_InitStruct->ADC_WDG_High_Threshold = 0x0000;
148
  ADC_InitStruct->ADC_WDG_Low_Threshold  = 0x0000;
144
  ADC_InitStruct->ADC_WDG_Low_Threshold  = 0x0000;
149
  ADC_InitStruct->ADC_Channel_0_Mode     = ADC_No_Conversion;
145
  ADC_InitStruct->ADC_Channel_0_Mode     = ADC_No_Conversion;
150
  ADC_InitStruct->ADC_Channel_1_Mode     = ADC_No_Conversion;
146
  ADC_InitStruct->ADC_Channel_1_Mode     = ADC_No_Conversion;
151
  ADC_InitStruct->ADC_Channel_2_Mode     = ADC_No_Conversion;
147
  ADC_InitStruct->ADC_Channel_2_Mode     = ADC_No_Conversion;
152
  ADC_InitStruct->ADC_Channel_3_Mode     = ADC_No_Conversion;
148
  ADC_InitStruct->ADC_Channel_3_Mode     = ADC_No_Conversion;
153
  ADC_InitStruct->ADC_Channel_4_Mode     = ADC_No_Conversion;
149
  ADC_InitStruct->ADC_Channel_4_Mode     = ADC_No_Conversion;
154
  ADC_InitStruct->ADC_Channel_5_Mode     = ADC_No_Conversion;
150
  ADC_InitStruct->ADC_Channel_5_Mode     = ADC_No_Conversion;
155
  ADC_InitStruct->ADC_Channel_6_Mode     = ADC_No_Conversion;
151
  ADC_InitStruct->ADC_Channel_6_Mode     = ADC_No_Conversion;
156
  ADC_InitStruct->ADC_Channel_7_Mode     = ADC_No_Conversion;
152
  ADC_InitStruct->ADC_Channel_7_Mode     = ADC_No_Conversion;
157
  ADC_InitStruct->ADC_Select_Channel     = ADC_Channel_0;
153
  ADC_InitStruct->ADC_Select_Channel     = ADC_Channel_0;
158
  ADC_InitStruct->ADC_Scan_Mode          = DISABLE;
154
  ADC_InitStruct->ADC_Scan_Mode          = DISABLE;
159
  ADC_InitStruct->ADC_Conversion_Mode    = ADC_Single_Mode;
155
  ADC_InitStruct->ADC_Conversion_Mode    = ADC_Single_Mode;
160
}
156
}
161
 
157
 
162
/*******************************************************************************
158
/*******************************************************************************
163
* Function Name  : ADC_PrescalerConfig
159
* Function Name  : ADC_PrescalerConfig
164
* Description    : This routine is used to configure the ADC prescaler value.
160
* Description    : This routine is used to configure the ADC prescaler value.
165
* Input          : ADC_Prescaler: specifies the prescaler value. This parameter
161
* Input          : ADC_Prescaler: specifies the prescaler value. This parameter
166
*                  can be a value from 0x0 to 0xFF.
162
*                  can be a value from 0x0 to 0xFF.
167
* Output         : None
163
* Output         : None
168
* Return         : None
164
* Return         : None
169
*******************************************************************************/
165
*******************************************************************************/
170
void ADC_PrescalerConfig(u8 ADC_Prescaler)
166
void ADC_PrescalerConfig(u8 ADC_Prescaler)
171
{
167
{
172
  ADC->PRS &= 0xFF00;
168
  ADC->PRS &= 0xFF00;
173
  ADC->PRS |= ADC_Prescaler;
169
  ADC->PRS |= ADC_Prescaler;
174
 
170
 
175
}
171
}
176
/*******************************************************************************
172
/*******************************************************************************
177
* Function Name  : ADC_GetPrescalerValue
173
* Function Name  : ADC_GetPrescalerValue
178
* Description    : This routine is used to get the ADC prescaler value.
174
* Description    : This routine is used to get the ADC prescaler value.
179
* Input          : None
175
* Input          : None
180
* Output         : None
176
* Output         : None
181
* Return         : The prescaler value.
177
* Return         : The prescaler value.
182
*******************************************************************************/
178
*******************************************************************************/
183
u8 ADC_GetPrescalerValue(void)
179
u8 ADC_GetPrescalerValue(void)
184
{
180
{
185
  return ADC->PRS & 0x00FF;
181
  return ADC->PRS & 0x00FF;
186
}
182
}
187
/*******************************************************************************
183
/*******************************************************************************
188
* Function Name  : ADC_GetFlagStatus
184
* Function Name  : ADC_GetFlagStatus
189
* Description    : Checks whether the specified ADC flag is set or not.
185
* Description    : Checks whether the specified ADC flag is set or not.
190
* Input          : ADC_Flag: flag to check.
186
* Input          : ADC_Flag: flag to check.
191
*                  This parameter can be one of the following values:
187
*                  This parameter can be one of the following values:
192
*                     - ADC_FLAG_OV_CH_0: Conversion overflow status for
188
*                     - ADC_FLAG_OV_CH_0: Conversion overflow status for
193
*                                         channel 0.
189
*                                         channel 0.
194
*                     - ADC_FLAG_OV_CH_1: Conversion overflow status for
190
*                     - ADC_FLAG_OV_CH_1: Conversion overflow status for
195
*                                         channel 1.
191
*                                         channel 1.
196
*                     - ADC_FLAG_OV_CH_2: Conversion overflow status for
192
*                     - ADC_FLAG_OV_CH_2: Conversion overflow status for
197
*                                         channel 2.
193
*                                         channel 2.
198
*                     - ADC_FLAG_OV_CH_3: Conversion overflow status for
194
*                     - ADC_FLAG_OV_CH_3: Conversion overflow status for
199
*                                         channel 3.
195
*                                         channel 3.
200
*                     - ADC_FLAG_OV_CH_4: Conversion overflow status for
196
*                     - ADC_FLAG_OV_CH_4: Conversion overflow status for
201
*                                         channel 4.
197
*                                         channel 4.
202
*                     - ADC_FLAG_OV_CH_5: Conversion overflow status for
198
*                     - ADC_FLAG_OV_CH_5: Conversion overflow status for
203
*                                         channel 5.
199
*                                         channel 5.
204
*                     - ADC_FLAG_OV_CH_6: Conversion overflow status for
200
*                     - ADC_FLAG_OV_CH_6: Conversion overflow status for
205
*                                         channel 6.
201
*                                         channel 6.
206
*                     - ADC_FLAG_OV_CH_7: Conversion overflow status for
202
*                     - ADC_FLAG_OV_CH_7: Conversion overflow status for
207
*                                         channel 7.
203
*                                         channel 7.
208
*                     - ADC_FLAG_ECV:     End of conversion status.
204
*                     - ADC_FLAG_ECV:     End of conversion status.
209
*                     - ADC_FLAG_AWD:     Analog watchdog status.
205
*                     - ADC_FLAG_AWD:     Analog watchdog status.
210
* Output         : None
206
* Output         : None
211
* Return         : The NewState of the ADC_Flag (SET or RESET).
207
* Return         : The NewState of the ADC_Flag (SET or RESET).
212
*******************************************************************************/
208
*******************************************************************************/
213
FlagStatus ADC_GetFlagStatus(u16 ADC_Flag)
209
FlagStatus ADC_GetFlagStatus(u16 ADC_Flag)
214
{
210
{
215
  u8 AdcReg = 0, FlagPos = 0;
211
  u8 AdcReg = 0, FlagPos = 0;
216
 
212
 
217
  /* Get the ADC register index */
213
  /* Get the ADC register index */
218
  AdcReg = ADC_Flag >> 5;
214
  AdcReg = ADC_Flag >> 5;
219
 
215
 
220
  /* Get the flag position */
216
  /* Get the flag position */
221
  FlagPos = ADC_Flag & ADC_FLAG_MASK;
217
  FlagPos = ADC_Flag & ADC_FLAG_MASK;
222
 
218
 
223
  if(AdcReg == 1) /* The flag to check is in CR register */
219
  if(AdcReg == 1) /* The flag to check is in CR register */
224
  {
220
  {
225
    if((ADC->CR & (1<<FlagPos))!= RESET)
221
    if((ADC->CR & (1<<FlagPos))!= RESET)
226
    {
222
    {
227
      return SET;
223
      return SET;
228
    }
224
    }
229
    else
225
    else
230
    {
226
    {
231
      return RESET;
227
      return RESET;
232
    }
228
    }
233
  }
229
  }
234
  else if(AdcReg == 6) /* The flag to check is in DR0 register */
230
  else if(AdcReg == 6) /* The flag to check is in DR0 register */
235
  {
231
  {
236
    if((ADC->DR0 & (1<<FlagPos))!= RESET)
232
    if((ADC->DR0 & (1<<FlagPos))!= RESET)
237
    {
233
    {
238
      return SET;
234
      return SET;
239
    }
235
    }
240
    else
236
    else
241
    {
237
    {
242
      return RESET;
238
      return RESET;
243
    }
239
    }
244
  }
240
  }
245
  else if(AdcReg == 7) /* The flag to check is in DR1 register */
241
  else if(AdcReg == 7) /* The flag to check is in DR1 register */
246
  {
242
  {
247
    if((ADC->DR1 & (1<<FlagPos))!= RESET)
243
    if((ADC->DR1 & (1<<FlagPos))!= RESET)
248
    {
244
    {
249
      return SET;
245
      return SET;
250
    }
246
    }
251
    else
247
    else
252
    {
248
    {
253
      return RESET;
249
      return RESET;
254
    }
250
    }
255
  }
251
  }
256
  else if(AdcReg == 8) /* The flag to check is in DR2 register */
252
  else if(AdcReg == 8) /* The flag to check is in DR2 register */
257
  {
253
  {
258
    if((ADC->DR2 & (1<<FlagPos))!= RESET)
254
    if((ADC->DR2 & (1<<FlagPos))!= RESET)
259
    {
255
    {
260
      return SET;
256
      return SET;
261
    }
257
    }
262
    else
258
    else
263
    {
259
    {
264
      return RESET;
260
      return RESET;
265
    }
261
    }
266
  }
262
  }
267
  else if(AdcReg == 9) /* The flag to check is in DR3 register */
263
  else if(AdcReg == 9) /* The flag to check is in DR3 register */
268
  {
264
  {
269
    if((ADC->DR3 & (1<<FlagPos))!= RESET)
265
    if((ADC->DR3 & (1<<FlagPos))!= RESET)
270
    {
266
    {
271
      return SET;
267
      return SET;
272
    }
268
    }
273
    else
269
    else
274
    {
270
    {
275
      return RESET;
271
      return RESET;
276
    }
272
    }
277
  }
273
  }
278
 
274
 
279
  else if(AdcReg == 0xA) /* The flag to check is in DR4 register */
275
  else if(AdcReg == 0xA) /* The flag to check is in DR4 register */
280
  {
276
  {
281
    if((ADC->DR4 & (1<<FlagPos))!= RESET)
277
    if((ADC->DR4 & (1<<FlagPos))!= RESET)
282
    {
278
    {
283
      return SET;
279
      return SET;
284
    }
280
    }
285
    else
281
    else
286
    {
282
    {
287
      return RESET;
283
      return RESET;
288
    }
284
    }
289
  }
285
  }
290
  else if(AdcReg == 0xB) /* The flag to check is in DR5 register */
286
  else if(AdcReg == 0xB) /* The flag to check is in DR5 register */
291
  {
287
  {
292
    if((ADC->DR5 & (1<<FlagPos))!= RESET)
288
    if((ADC->DR5 & (1<<FlagPos))!= RESET)
293
    {
289
    {
294
      return SET;
290
      return SET;
295
    }
291
    }
296
    else
292
    else
297
    {
293
    {
298
      return RESET;
294
      return RESET;
299
    }
295
    }
300
  }
296
  }
301
  else if(AdcReg == 0xC) /* The flag to check is in DR6 register */
297
  else if(AdcReg == 0xC) /* The flag to check is in DR6 register */
302
  {
298
  {
303
    if((ADC->DR6 & (1<<FlagPos))!= RESET)
299
    if((ADC->DR6 & (1<<FlagPos))!= RESET)
304
    {
300
    {
305
      return SET;
301
      return SET;
306
    }
302
    }
307
    else
303
    else
308
    {
304
    {
309
      return RESET;
305
      return RESET;
310
    }
306
    }
311
  }
307
  }
312
  else /* (AdcReg == 0xD), The flag to check is in DR7 register */
308
  else /* (AdcReg == 0xD), The flag to check is in DR7 register */
313
  {
309
  {
314
    if((ADC->DR7 & (1<<FlagPos))!= RESET)
310
    if((ADC->DR7 & (1<<FlagPos))!= RESET)
315
    {
311
    {
316
      return SET;
312
      return SET;
317
    }
313
    }
318
    else
314
    else
319
    {
315
    {
320
      return RESET;
316
      return RESET;
321
    }
317
    }
322
  }
318
  }
323
}
319
}
324
 
320
 
325
/*******************************************************************************
321
/*******************************************************************************
326
* Function Name  : ADC_ClearFlag
322
* Function Name  : ADC_ClearFlag
327
* Description    : Clears the ADC Flag passed as a parameter.
323
* Description    : Clears the ADC Flag passed as a parameter.
328
* Input          : ADC_Flag: flag to clear.
324
* Input          : ADC_Flag: flag to clear.
329
*                  This parameter can be one of the following values:
325
*                  This parameter can be one of the following values:
330
*                     - ADC_FLAG_ECV: End of conversion status.
326
*                     - ADC_FLAG_ECV: End of conversion status.
331
*                     - ADC_FLAG_AWD: Analog watchdog status.
327
*                     - ADC_FLAG_AWD: Analog watchdog status.
332
* Output         : None
328
* Output         : None
333
* Return         : None
329
* Return         : None
334
*******************************************************************************/
330
*******************************************************************************/
335
void ADC_ClearFlag(u16 ADC_Flag)
331
void ADC_ClearFlag(u16 ADC_Flag)
336
{  
332
{  
-
 
333
  vu16 tmp=0;
337
  /* Clear the correspondent flag */
334
  /* Clear the correspondent flag */
-
 
335
   if (ADC_Flag==ADC_FLAG_ORD)
-
 
336
   tmp = ADC->DDR;
-
 
337
   else
338
  ADC->CR |= (1<<(ADC_Flag & ADC_FLAG_MASK));
338
   ADC->CR |= (1<<(ADC_Flag & ADC_FLAG_MASK));
339
}
339
}
340
 
340
 
341
/*******************************************************************************
341
/*******************************************************************************
342
* Function Name  : ADC_GetConversionValue
342
* Function Name  : ADC_GetConversionValue
343
* Description    : Read the result of conversion from the appropriate data
343
* Description    : Read the result of conversion from the appropriate data
344
*                  register.
344
*                  register.
345
* Input          : ADC_Channel: the correspondent channel of the ADC peripheral.
345
* Input          : ADC_Channel: the correspondent channel of the ADC peripheral.
346
*                  This parameter can be one of the following values:
346
*                  This parameter can be one of the following values:
347
*                     - ADC_Channel_0: ADC channel 0.
347
*                     - ADC_Channel_0: ADC channel 0.
348
*                     - ADC_Channel_1: ADC channel 1.
348
*                     - ADC_Channel_1: ADC channel 1.
349
*                     - ADC_Channel_2: ADC channel 2.
349
*                     - ADC_Channel_2: ADC channel 2.
350
*                     - ADC_Channel_3: ADC channel 3.
350
*                     - ADC_Channel_3: ADC channel 3.
351
*                     - ADC_Channel_4: ADC channel 4.
351
*                     - ADC_Channel_4: ADC channel 4.
352
*                     - ADC_Channel_5: ADC channel 5.
352
*                     - ADC_Channel_5: ADC channel 5.
353
*                     - ADC_Channel_6: ADC channel 6.
353
*                     - ADC_Channel_6: ADC channel 6.
354
*                     - ADC_Channel_7: ADC channel 7.
354
*                     - ADC_Channel_7: ADC channel 7.
355
* Output         : None
355
* Output         : None
356
* Return         : The result of the conversion for the specific channel.
356
* Return         : The result of the conversion for the specific channel.
357
*******************************************************************************/
357
*******************************************************************************/
358
u16 ADC_GetConversionValue(u16 ADC_Channel)
358
u16 ADC_GetConversionValue(u16 ADC_Channel)
359
{
359
{
360
  u16 ADC_Conversion_Value = 0;
360
  u16 ADC_Conversion_Value = 0;
361
 
361
 
362
  switch (ADC_Channel)
362
  switch (ADC_Channel)
363
  {
363
  {
364
    case (ADC_Channel_0):
364
    case (ADC_Channel_0):
365
      /* Get the conversion value of the channel 0 */
365
      /* Get the conversion value of the channel 0 */
366
      ADC_Conversion_Value = ADC->DR0 & ADC_RESULT_MASK;
366
      ADC_Conversion_Value = ADC->DR0 & ADC_RESULT_MASK;
367
      break;
367
      break;
368
 
368
 
369
    case (ADC_Channel_1):
369
    case (ADC_Channel_1):
370
      /* Get the conversion value of the channel 1 */
370
      /* Get the conversion value of the channel 1 */
371
      ADC_Conversion_Value = ADC->DR1 & ADC_RESULT_MASK;
371
      ADC_Conversion_Value = ADC->DR1 & ADC_RESULT_MASK;
372
      break;
372
      break;
373
 
373
 
374
    case (ADC_Channel_2):
374
    case (ADC_Channel_2):
375
      /* Get the conversion value of the channel 2 */
375
      /* Get the conversion value of the channel 2 */
376
      ADC_Conversion_Value = ADC->DR2 & ADC_RESULT_MASK;
376
      ADC_Conversion_Value = ADC->DR2 & ADC_RESULT_MASK;
377
      break;
377
      break;
378
 
378
 
379
    case (ADC_Channel_3):
379
    case (ADC_Channel_3):
380
      /* Get the conversion value of the channel 3 */
380
      /* Get the conversion value of the channel 3 */
381
      ADC_Conversion_Value = ADC->DR3 & ADC_RESULT_MASK;
381
      ADC_Conversion_Value = ADC->DR3 & ADC_RESULT_MASK;
382
      break;
382
      break;
383
 
383
 
384
    case (ADC_Channel_4):
384
    case (ADC_Channel_4):
385
      /* Get the conversion value of the channel 4 */
385
      /* Get the conversion value of the channel 4 */
386
      ADC_Conversion_Value = ADC->DR4 & ADC_RESULT_MASK;
386
      ADC_Conversion_Value = ADC->DR4 & ADC_RESULT_MASK;
387
      break;
387
      break;
388
 
388
 
389
    case (ADC_Channel_5):
389
    case (ADC_Channel_5):
390
      /* Get the conversion value of the channel 5 */
390
      /* Get the conversion value of the channel 5 */
391
      ADC_Conversion_Value = ADC->DR5 & ADC_RESULT_MASK;
391
      ADC_Conversion_Value = ADC->DR5 & ADC_RESULT_MASK;
392
      break;
392
      break;
393
 
393
 
394
    case (ADC_Channel_6):
394
    case (ADC_Channel_6):
395
      /* Get the conversion value of the channel 6 */
395
      /* Get the conversion value of the channel 6 */
396
      ADC_Conversion_Value = ADC->DR6 & ADC_RESULT_MASK;
396
      ADC_Conversion_Value = ADC->DR6 & ADC_RESULT_MASK;
397
      break;
397
      break;
398
 
398
 
399
    case (ADC_Channel_7):
399
    case (ADC_Channel_7):
400
      /* Get the conversion value of the channel 7 */
400
      /* Get the conversion value of the channel 7 */
401
      ADC_Conversion_Value = ADC->DR7 & ADC_RESULT_MASK;
401
      ADC_Conversion_Value = ADC->DR7 & ADC_RESULT_MASK;
402
      break;
402
      break;
403
 
403
 
404
    default:
404
    default:
405
      break;
405
      break;
406
  }
406
  }
407
 
407
 
408
  return(ADC_Conversion_Value);
408
  return(ADC_Conversion_Value);
409
}
409
}
410
 
410
 
411
/*******************************************************************************
411
/*******************************************************************************
412
* Function Name  : ADC_GetAnalogWatchdogResult
412
* Function Name  : ADC_GetAnalogWatchdogResult
413
* Description    : Return the result of the comparaison on the selected Analog
413
* Description    : Return the result of the comparaison on the selected Analog
414
*                  Watchdog.
414
*                  Watchdog.
415
* Input          : ADC_Channel: the correspondent channel of the ADC peripheral.
415
* Input          : ADC_Channel: the correspondent channel of the ADC peripheral.
416
*                  This parameter can be one of the following values:
416
*                  This parameter can be one of the following values:
417
*                     - ADC_Channel_0: ADC channel 0.
417
*                     - ADC_Channel_0: ADC channel 0.
418
*                     - ADC_Channel_1: ADC channel 1.
418
*                     - ADC_Channel_1: ADC channel 1.
419
*                     - ADC_Channel_2: ADC channel 2.
419
*                     - ADC_Channel_2: ADC channel 2.
420
*                     - ADC_Channel_3: ADC channel 3.
420
*                     - ADC_Channel_3: ADC channel 3.
421
*                     - ADC_Channel_4: ADC channel 4.
421
*                     - ADC_Channel_4: ADC channel 4.
422
*                     - ADC_Channel_5: ADC channel 5.
422
*                     - ADC_Channel_5: ADC channel 5.
423
*                     - ADC_Channel_6: ADC channel 6.
423
*                     - ADC_Channel_6: ADC channel 6.
424
*                     - ADC_Channel_7: ADC channel 7.
424
*                     - ADC_Channel_7: ADC channel 7.
425
* Output         : None
425
* Output         : None
426
* Return         : The state of the comparision (SET or RESET).
426
* Return         : The state of the comparision (SET or RESET).
427
*******************************************************************************/
427
*******************************************************************************/
428
FlagStatus ADC_GetAnalogWatchdogResult(u16 ADC_Channel)
428
FlagStatus ADC_GetAnalogWatchdogResult(u16 ADC_Channel)
429
{
429
{
430
  if (ADC->CRR & (1<<ADC_Channel) != RESET)
430
  if ((ADC->CRR & (1<<ADC_Channel)) != RESET)
431
  {
431
  {
432
      return SET;
432
      return SET;
433
  }
433
  }
434
  else
434
  else
435
  {
435
  {
436
    return RESET;
436
    return RESET;
437
  }
437
  }
438
}
438
}
439
 
439
 
440
/*******************************************************************************
440
/*******************************************************************************
441
* Function Name  : ADC_ClearAnalogWatchdogResult
441
* Function Name  : ADC_ClearAnalogWatchdogResult
442
* Description    : Clear the result of the comparaison on the selected Analog
442
* Description    : Clear the result of the comparaison on the selected Analog
443
*                  Watchdog.
443
*                  Watchdog.
444
* Input          : ADC_Channel: the correspondent channel of the ADC peripheral.
444
* Input          : ADC_Channel: the correspondent channel of the ADC peripheral.
445
*                  This parameter can be one of the following values:
445
*                  This parameter can be one of the following values:
446
*                     - ADC_Channel_0: ADC channel 0.
446
*                     - ADC_Channel_0: ADC channel 0.
447
*                     - ADC_Channel_1: ADC channel 1.
447
*                     - ADC_Channel_1: ADC channel 1.
448
*                     - ADC_Channel_2: ADC channel 2.
448
*                     - ADC_Channel_2: ADC channel 2.
449
*                     - ADC_Channel_3: ADC channel 3.
449
*                     - ADC_Channel_3: ADC channel 3.
450
*                     - ADC_Channel_4: ADC channel 4.
450
*                     - ADC_Channel_4: ADC channel 4.
451
*                     - ADC_Channel_5: ADC channel 5.
451
*                     - ADC_Channel_5: ADC channel 5.
452
*                     - ADC_Channel_6: ADC channel 6.
452
*                     - ADC_Channel_6: ADC channel 6.
453
*                     - ADC_Channel_7: ADC channel 7.
453
*                     - ADC_Channel_7: ADC channel 7.
454
* Output         : None
454
* Output         : None
455
* Return         : None
455
* Return         : None
456
*******************************************************************************/
456
*******************************************************************************/
457
void ADC_ClearAnalogWatchdogResult(u16 ADC_Channel)
457
void ADC_ClearAnalogWatchdogResult(u16 ADC_Channel)
458
{
458
{
459
  /* Clear the correspondent watchdog result */
459
  /* Clear the correspondent watchdog result */
460
  ADC->CRR = 1<<ADC_Channel;
460
  ADC->CRR = 1<<ADC_Channel;
461
}
461
}
462
 
462
 
463
/*******************************************************************************
463
/*******************************************************************************
464
* Function Name  : ADC_GetWatchdogThreshold
464
* Function Name  : ADC_GetWatchdogThreshold
465
* Description    : Get the higher/lower thresholds values of the watchdog.
465
* Description    : Get the higher/lower thresholds values of the watchdog.
466
* Input          : ADC_Threshold: the lower or the higher threshold.
466
* Input          : ADC_Threshold: the lower or the higher threshold.
467
*                  This parameter can be one of the following values:
467
*                  This parameter can be one of the following values:
468
*                     - ADC_HigherThreshold: The higher threshold.
468
*                     - ADC_HigherThreshold: The higher threshold.
469
*                     - ADC_LowerThreshold: The lower threshold.
469
*                     - ADC_LowerThreshold: The lower threshold.
470
* Output         : None
470
* Output         : None
471
* Return         : The selected threshold value.
471
* Return         : The selected threshold value.
472
*******************************************************************************/
472
*******************************************************************************/
473
u16 ADC_GetWatchdogThreshold(ADC_ThresholdType ADC_Threshold)
473
u16 ADC_GetWatchdogThreshold(ADC_ThresholdType ADC_Threshold)
474
{
474
{
475
  u16 ADC_Threshold_Value = 0;
475
  u16 ADC_Threshold_Value = 0;
476
 
476
 
477
  switch (ADC_Threshold)
477
  switch (ADC_Threshold)
478
  {
478
  {
479
    case ADC_LowThreshold:
479
    case ADC_LowThreshold:
480
      /* Get the low threshold of the watchdog */
480
      /* Get the low threshold of the watchdog */
481
      ADC_Threshold_Value = ADC->LTR;
481
      ADC_Threshold_Value = ADC->LTR;
482
      break;
482
      break;
483
 
483
 
484
    case ADC_HighThreshold:
484
    case ADC_HighThreshold:
485
      /* Get the high threshol of the watchdog */
485
      /* Get the high threshol of the watchdog */
486
      ADC_Threshold_Value = ADC->HTR;
486
      ADC_Threshold_Value = ADC->HTR;
487
      break;
487
      break;
488
 
488
 
489
    default:
489
    default:
490
      break;
490
      break;
491
  }
491
  }
492
 
492
 
493
  return(ADC_Threshold_Value);
493
  return(ADC_Threshold_Value);
494
}
494
}
495
 
495
 
496
/*******************************************************************************
496
/*******************************************************************************
497
* Function Name  : ADC_ITConfig
497
* Function Name  : ADC_ITConfig
498
* Description    : Enables or disables the specified ADC interrupts.
498
* Description    : Enables or disables the specified ADC interrupts.
499
* Input          : - ADC_IT: specifies the ADC interrupts sources to be enabled
499
* Input          : - ADC_IT: specifies the ADC interrupts sources to be enabled
500
*                    or disabled.
500
*                    or disabled.
501
*                    This parameter can be one of the following values:
501
*                    This parameter can be one of the following values:
502
*                       - ADC_IT_EndOfConversion: End of conversion interrupt.
502
*                       - ADC_IT_EndOfConversion: End of conversion interrupt.
503
*                       - ADC_IT_AnalogWDG: Analog watchdog interrupt.
503
*                       - ADC_IT_AnalogWDG: Analog watchdog interrupt.
504
*                  - ADC_NewState: new state of the specified ADC interrupts.
504
*                  - ADC_NewState: new state of the specified ADC interrupts.
505
*                    (ADC_Newstate can be ENABLE or DISABLE).
505
*                    (ADC_Newstate can be ENABLE or DISABLE).
506
* Output         : None
506
* Output         : None
507
* Return         : None
507
* Return         : None
508
*******************************************************************************/
508
*******************************************************************************/
509
void ADC_ITConfig(u16 ADC_IT, FunctionalState ADC_NewState)
509
void ADC_ITConfig(u16 ADC_IT, FunctionalState ADC_NewState)
510
{
510
{
511
  if (ADC_NewState == ENABLE)
511
 if (ADC_IT==ADC_IT_ORD)
512
  {
512
  {
-
 
513
   if (ADC_NewState == ENABLE)
-
 
514
 
513
    /* Enable the interrupt */
515
    /* Enable the interrupt */
514
    ADC->CR |= ADC_IT;
516
     ADC->CR2 |= ADC_IT;
-
 
517
 
-
 
518
  else
-
 
519
 
-
 
520
    /* Disable the interrupt */
-
 
521
    ADC->CR2 &= ~ADC_IT;
-
 
522
 
515
  }
523
  }
-
 
524
  else{
-
 
525
 
-
 
526
   if (ADC_NewState == ENABLE)
-
 
527
 
-
 
528
    /* Enable the interrupt */
-
 
529
    ADC->CR |= ADC_IT;
-
 
530
 
516
  else
531
  else
517
  {
532
 
518
    /* Disable the interrupt */
533
    /* Disable the interrupt */
519
    ADC->CR &= ~ADC_IT;
534
    ADC->CR &= ~ADC_IT;
-
 
535
 
-
 
536
  }
520
  }
537
  }
521
}
-
 
522
 
538
 
523
/*******************************************************************************
539
/*******************************************************************************
524
* Function Name  : ADC_StandbyModeCmd
540
* Function Name  : ADC_StandbyModeCmd
525
* Description    : Enable or disable the standby mode.
541
* Description    : Enable or disable the standby mode.
526
* Input          : ADC_NewState: new state of the ADC standby mode.
542
* Input          : ADC_NewState: new state of the ADC standby mode.
527
*                  (ADC_Newstate can be ENABLE or DISABLE).
543
*                  (ADC_Newstate can be ENABLE or DISABLE).
528
* Output         : None
544
* Output         : None
529
* Return         : None
545
* Return         : None
530
*******************************************************************************/
546
*******************************************************************************/
531
void ADC_StandbyModeCmd(FunctionalState ADC_NewState)
547
void ADC_StandbyModeCmd(FunctionalState ADC_NewState)
532
{
548
{
533
  if (ADC_NewState == ENABLE)
549
  if (ADC_NewState == ENABLE)
534
  {
550
  {
535
    /* Enable the standby mode */
551
    /* Enable the standby mode */
536
    ADC->CR |= ADC_STANDBY_MODE_MASK;
552
    ADC->CR |= ADC_STANDBY_MODE_MASK;
537
  }
553
  }
538
  else
554
  else
539
  {
555
  {
540
    /* Disable the standby mode */
556
    /* Disable the standby mode */
541
    ADC->CR &= ~ADC_STANDBY_MODE_MASK;
557
    ADC->CR &= ~ADC_STANDBY_MODE_MASK;
542
  }
558
  }
543
}
559
}
544
 
560
 
545
/*******************************************************************************
561
/*******************************************************************************
546
* Function Name  : ADC_Cmd
562
* Function Name  : ADC_Cmd
547
* Description    : Power on or put in reset mode the ADC peripheral.
563
* Description    : Power on or put in reset mode the ADC peripheral.
548
* Input          : ADC_NewState: new state of the ADC peripheral.
564
* Input          : ADC_NewState: new state of the ADC peripheral.
549
*                  (ADC_Newstate can be ENABLE or DISABLE).
565
*                  (ADC_Newstate can be ENABLE or DISABLE).
550
* Output         : None
566
* Output         : None
551
* Return         : None
567
* Return         : None
552
*******************************************************************************/
568
*******************************************************************************/
553
void ADC_Cmd(FunctionalState ADC_NewState)
569
void ADC_Cmd(FunctionalState ADC_NewState)
554
{
570
{
555
  if (ADC_NewState == ENABLE)
571
  if (ADC_NewState == ENABLE)
556
  {
572
  {
557
    /* Enable the ADC */
573
    /* Enable the ADC */
558
    ADC->CR |= ADC_CMD_MASK;
574
    ADC->CR |= ADC_CMD_MASK;
559
  }
575
  }
560
  else
576
  else
561
  {
577
  {
562
    /* Disable the ADC */
578
    /* Disable the ADC */
563
    ADC->CR &= ~ADC_CMD_MASK;
579
    ADC->CR &= ~ADC_CMD_MASK;
564
  }
580
  }
565
}
581
}
566
 
582
 
567
/*******************************************************************************
583
/*******************************************************************************
568
* Function Name  : ADC_ConversionCmd
584
* Function Name  : ADC_ConversionCmd
569
* Description    : Start or stop the ADC conversion in the selected mode.
585
* Description    : Start or stop the ADC conversion in the selected mode.
570
* Input          : ADC_Conversion: the conversion command.
586
* Input          : ADC_Conversion: the conversion command.
571
*                  This parameter can be one of the following values:
587
*                  This parameter can be one of the following values:
572
*                     - ADC_Conversion_Start: Start the conversion.
588
*                     - ADC_Conversion_Start: Start the conversion.
573
*                     - ADC_Conversion_Stop: Stop the Conversion.
589
*                     - ADC_Conversion_Stop: Stop the Conversion.
574
* Output         : None
590
* Output         : None
575
* Return         : None
591
* Return         : None
576
*******************************************************************************/
592
*******************************************************************************/
577
void ADC_ConversionCmd(u16 ADC_Conversion)
593
void ADC_ConversionCmd(u16 ADC_Conversion)
578
{
594
{
579
  if (ADC_Conversion == ADC_Conversion_Start)
595
  if (ADC_Conversion == ADC_Conversion_Start)
580
  {
596
  {
581
    /* Start the ADC conversion */
597
    /* Start the ADC conversion */
582
    ADC->CR |= ADC_Conversion_Start;
598
    ADC->CR |= ADC_Conversion_Start;
583
  }
599
  }
584
  else
600
  else
585
  {
601
  {
586
    /* Stop the ADC conversion */
602
    /* Stop the ADC conversion */
587
    ADC->CR &= ADC_Conversion_Stop;
603
    ADC->CR &= ADC_Conversion_Stop;
588
  }
604
  }
589
}
605
}
-
 
606
/*******************************************************************************
-
 
607
* Function Name  : ADC_ExternalTrigConfig
-
 
608
* Description    : source and edge selection of external trigg
-
 
609
* Input          : -ADC_ExtTrig_Src
-
 
610
*                  This parameter can be one of the following values:
-
 
611
*                     ADC_PWM_Trig    : PWM Trigger
-
 
612
*                     ADC_TIM_Trig    : Timer Trigger
-
 
613
*                     ADC_PIN_Trig    : External Trigger Pin
-
 
614
*                
-
 
615
*                  -ADC_ExtTrig_Edge
-
 
616
*                   This parameter can be one of the following values:
-
 
617
*                   Falling_ETE        :Falling edge
-
 
618
*                   Rising_ETE         :Rising edge
-
 
619
* Output         : None
-
 
620
* Return         : None
-
 
621
*******************************************************************************/
-
 
622
 
-
 
623
void ADC_ExternalTrigConfig(u16 ADC_ExtTrig_Src ,  u16 ADC_ExtTrig_Edge)
-
 
624
  {
-
 
625
   ADC->CR2 &= 0x3C;
-
 
626
   ADC->CR2 |= ADC_ExtTrig_Src;
-
 
627
 
-
 
628
   if (ADC_ExtTrig_Edge== Falling_ETE)
-
 
629
   ADC->CR2 |= 0x20;
-
 
630
   else
-
 
631
   ADC->CR2 &=~0x20; ;
-
 
632
 
-
 
633
  }
-
 
634
/*******************************************************************************
-
 
635
* Function Name  :  ADC_ExternalTrigCmd
-
 
636
* Description    : Enable or disable the external trigg feature.
-
 
637
* Input          : ADC_NewState:  Can be ENABLE or DISABLE
-
 
638
* Output         : None
-
 
639
* Return         : None
-
 
640
*******************************************************************************/
-
 
641
 
-
 
642
void ADC_ExternalTrigCmd(FunctionalState ADC_NewState)
-
 
643
{
-
 
644
if (ADC_NewState==ENABLE)
-
 
645
  ADC->CR2 |= 0x04;                    
-
 
646
  else
-
 
647
  ADC->CR2  &=~0x04;  
-
 
648
 
-
 
649
}
-
 
650
/*******************************************************************************
-
 
651
* Function Name  : ADC_DMACmd
-
 
652
* Description    : Enable or disable the DMA request for ADC
-
 
653
* Input          : ADC_NewState:  Can be ENABLE or DISABLE
-
 
654
* Output         : None
-
 
655
* Return         : None
-
 
656
*******************************************************************************/
-
 
657
 
-
 
658
void ADC_DMACmd(FunctionalState ADC_NewState)
-
 
659
{
-
 
660
if (ADC_NewState==ENABLE)
-
 
661
  ADC->CR2 |= 0x08;                    
-
 
662
  else
-
 
663
  ADC->CR2  &=~0x08;  
-
 
664
}
-
 
665
 
-
 
666
/*******************************************************************************
-
 
667
* Function Name  : ADC_AutomaticClockGatedCmd
-
 
668
* Description    : Enables or disables the Automatic clock gated mode for Fast
-
 
669
*                  Trigger mode (only in Rev H).
-
 
670
* Input          : ADC_NewState:  Can be ENABLE or DISABLE
-
 
671
* Output         : None
-
 
672
* Return         : None
-
 
673
*******************************************************************************/
-
 
674
 
-
 
675
void ADC_AutomaticClockGatedCmd(FunctionalState ADC_NewState)
-
 
676
{
-
 
677
if (ADC_NewState==ENABLE)
-
 
678
  SCU->GPIOANA |= 0x100;                    
-
 
679
  else
-
 
680
  SCU->GPIOANA  &=~0x100;  
-
 
681
}
-
 
682
 
590
 
683
 
591
/******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE****/
684
/******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
592
 
685