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 |