]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_STM32F103_IAR/STM32F10xFWLib/src/stm32f10x_dma.c
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_STM32F103_IAR / STM32F10xFWLib / src / stm32f10x_dma.c
1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
2 * File Name          : stm32f10x_dma.c\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 09/29/2006\r
5 * Description        : This file provides all the DMA firmware functions.\r
6 ********************************************************************************\r
7 * History:\r
8 * 04/02/2007: V0.2\r
9 * 02/05/2007: V0.1\r
10 * 09/29/2006: V0.01\r
11 ********************************************************************************\r
12 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
14 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
15 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
16 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
17 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18 *******************************************************************************/\r
19 \r
20 /* Includes ------------------------------------------------------------------*/\r
21 #include "stm32f10x_dma.h"\r
22 #include "stm32f10x_rcc.h"\r
23 \r
24 /* Private typedef -----------------------------------------------------------*/\r
25 /* Private define ------------------------------------------------------------*/\r
26 /* DMA ENABLE mask */\r
27 #define CCR_ENABLE_Set          ((u32)0x00000001)\r
28 #define CCR_ENABLE_Reset        ((u32)0xFFFFFFFE)\r
29 \r
30 /* DMA Channelx interrupt pending bit masks */\r
31 #define DMA_Channel1_IT_Mask    ((u32)0x0000000F)\r
32 #define DMA_Channel2_IT_Mask    ((u32)0x000000F0)\r
33 #define DMA_Channel3_IT_Mask    ((u32)0x00000F00)\r
34 #define DMA_Channel4_IT_Mask    ((u32)0x0000F000)\r
35 #define DMA_Channel5_IT_Mask    ((u32)0x000F0000)\r
36 #define DMA_Channel6_IT_Mask    ((u32)0x00F00000)\r
37 #define DMA_Channel7_IT_Mask    ((u32)0x0F000000)\r
38 \r
39 /* DMA registers Masks */\r
40 #define CCR_CLEAR_Mask          ((u32)0xFFFF800F)\r
41 \r
42 /* Private macro -------------------------------------------------------------*/\r
43 /* Private variables ---------------------------------------------------------*/\r
44 /* Private function prototypes -----------------------------------------------*/\r
45 /* Private functions ---------------------------------------------------------*/\r
46 \r
47 /*******************************************************************************\r
48 * Function Name  : DMA_DeInit\r
49 * Description    : Deinitializes the DMA Channelx registers to their default reset\r
50 *                  values.\r
51 * Input          : - DMA_Channelx: where x can be 1, 2 to 7 to select the DMA\r
52 *                    Channel.\r
53 * Output         : None\r
54 * Return         : None\r
55 *******************************************************************************/\r
56 void DMA_DeInit(DMA_Channel_TypeDef* DMA_Channelx)\r
57 {\r
58   /* DMA Channelx disable */\r
59   DMA_Cmd(DMA_Channelx, DISABLE);\r
60 \r
61   /* Reset Channelx control register */\r
62   DMA_Channelx->CCR  = 0;\r
63   \r
64   /* Reset Channelx remaining bytes register */\r
65   DMA_Channelx->CNDTR = 0;\r
66   \r
67   /* Reset Channelx peripheral address register */\r
68   DMA_Channelx->CPAR  = 0;\r
69   \r
70   /* Reset Channelx memory address register */\r
71   DMA_Channelx->CMAR = 0;\r
72 \r
73   switch (*(u32*)&DMA_Channelx)\r
74   {\r
75     case DMA_Channel1_BASE:\r
76       /* Reset interrupt pending bits for Channel1 */\r
77       DMA->IFCR |= DMA_Channel1_IT_Mask;\r
78       break;\r
79 \r
80     case DMA_Channel2_BASE:\r
81       /* Reset interrupt pending bits for Channel2 */\r
82       DMA->IFCR |= DMA_Channel2_IT_Mask;\r
83       break;\r
84 \r
85     case DMA_Channel3_BASE:\r
86       /* Reset interrupt pending bits for Channel3 */\r
87       DMA->IFCR |= DMA_Channel3_IT_Mask;\r
88       break;\r
89 \r
90     case DMA_Channel4_BASE:\r
91       /* Reset interrupt pending bits for Channel4 */\r
92       DMA->IFCR |= DMA_Channel4_IT_Mask;\r
93       break;\r
94 \r
95     case DMA_Channel5_BASE:\r
96       /* Reset interrupt pending bits for Channel5 */\r
97       DMA->IFCR |= DMA_Channel5_IT_Mask;\r
98       break;\r
99 \r
100     case DMA_Channel6_BASE:\r
101       /* Reset interrupt pending bits for Channel6 */\r
102       DMA->IFCR |= DMA_Channel6_IT_Mask;\r
103       break;\r
104 \r
105     case DMA_Channel7_BASE:\r
106       /* Reset interrupt pending bits for Channel7 */\r
107       DMA->IFCR |= DMA_Channel7_IT_Mask;\r
108       break;\r
109 \r
110     default:\r
111       break;\r
112   }\r
113 }\r
114 \r
115 /*******************************************************************************\r
116 * Function Name  : DMA_Init\r
117 * Description    : Initializes the DMA Channelx according to the specified\r
118 *                  parameters in the DMA_InitStruct.\r
119 * Input          : - DMA_Channelx: where x can be 1, 2 to 7 to select the DMA\r
120 *                    Channel.\r
121 *                  - DMA_InitStruct: pointer to a DMA_InitTypeDef structure that\r
122 *                    contains the configuration information for the specified\r
123 *                    DMA Channel.\r
124 * Output         : None\r
125 * Return         : None\r
126 ******************************************************************************/\r
127 void DMA_Init(DMA_Channel_TypeDef* DMA_Channelx, DMA_InitTypeDef* DMA_InitStruct)\r
128 {\r
129   u32 tmpreg = 0;\r
130 \r
131   /* Check the parameters */\r
132   assert(IS_DMA_DIR(DMA_InitStruct->DMA_DIR));\r
133   assert(IS_DMA_BUFFER_SIZE(DMA_InitStruct->DMA_BufferSize));      \r
134   assert(IS_DMA_PERIPHERAL_INC_STATE(DMA_InitStruct->DMA_PeripheralInc));  \r
135   assert(IS_DMA_MEMORY_INC_STATE(DMA_InitStruct->DMA_MemoryInc));   \r
136   assert(IS_DMA_PERIPHERAL_DATA_SIZE(DMA_InitStruct->DMA_PeripheralDataSize));\r
137   assert(IS_DMA_MEMORY_DATA_SIZE(DMA_InitStruct->DMA_MemoryDataSize));\r
138   assert(IS_DMA_MODE(DMA_InitStruct->DMA_Mode));\r
139   assert(IS_DMA_PRIORITY(DMA_InitStruct->DMA_Priority));\r
140   assert(IS_DMA_M2M_STATE(DMA_InitStruct->DMA_M2M));\r
141 \r
142 /*--------------------------- DMA Channelx CCR Configuration -----------------*/\r
143   /* Get the DMA_Channelx CCR value */\r
144   tmpreg = DMA_Channelx->CCR;\r
145   /* Clear MEM2MEM, PL, MSIZE, PSIZE, MINC, PINC, CIRCULAR and DIR bits */\r
146   tmpreg &= CCR_CLEAR_Mask;\r
147   /* Configure DMA Channelx: data transfer, data size, priority level and mode */\r
148   /* Set DIR bit according to DMA_DIR value */\r
149   /* Set CIRCULAR bit according to DMA_Mode value */\r
150   /* Set PINC bit according to DMA_PeripheralInc value */\r
151   /* Set MINC bit according to DMA_MemoryInc value */\r
152   /* Set PSIZE bits according to DMA_PeripheralDataSize value */\r
153   /* Set MSIZE bits according to DMA_MemoryDataSize value */\r
154   /* Set PL bits according to DMA_Priority value */\r
155   /* Set the MEM2MEM bit according to DMA_M2M value */\r
156   tmpreg |= DMA_InitStruct->DMA_DIR | DMA_InitStruct->DMA_Mode |\r
157             DMA_InitStruct->DMA_PeripheralInc | DMA_InitStruct->DMA_MemoryInc |\r
158             DMA_InitStruct->DMA_PeripheralDataSize | DMA_InitStruct->DMA_MemoryDataSize |\r
159             DMA_InitStruct->DMA_Priority | DMA_InitStruct->DMA_M2M;\r
160   /* Write to DMA Channelx CCR */\r
161   DMA_Channelx->CCR = tmpreg;\r
162 \r
163 /*--------------------------- DMA Channelx CNBTR Configuration ---------------*/\r
164   /* Write to DMA Channelx CNBTR */\r
165   DMA_Channelx->CNDTR = DMA_InitStruct->DMA_BufferSize;\r
166 \r
167 /*--------------------------- DMA Channelx CPAR Configuration ----------------*/\r
168   /* Write to DMA Channelx CPAR */\r
169   DMA_Channelx->CPAR = DMA_InitStruct->DMA_PeripheralBaseAddr;\r
170 \r
171 /*--------------------------- DMA Channelx CMAR Configuration ----------------*/\r
172   /* Write to DMA Channelx CMAR */\r
173   DMA_Channelx->CMAR = DMA_InitStruct->DMA_MemoryBaseAddr;\r
174 }\r
175 \r
176 /*******************************************************************************\r
177 * Function Name  : DMA_StructInit\r
178 * Description    : Fills each DMA_InitStruct member with its default value.\r
179 * Input          : - DMA_InitStruct : pointer to a DMA_InitTypeDef structure\r
180 *                    which will be initialized.\r
181 * Output         : None\r
182 * Return         : None\r
183 *******************************************************************************/\r
184 void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct)\r
185 {\r
186 /*-------------- Reset DMA init structure parameters values ------------------*/\r
187   /* Initialize the DMA_PeripheralBaseAddr member */\r
188   DMA_InitStruct->DMA_PeripheralBaseAddr = 0;\r
189 \r
190   /* Initialize the DMA_MemoryBaseAddr member */\r
191   DMA_InitStruct->DMA_MemoryBaseAddr = 0;\r
192 \r
193   /* Initialize the DMA_DIR member */\r
194   DMA_InitStruct->DMA_DIR = DMA_DIR_PeripheralSRC;\r
195 \r
196   /* Initialize the DMA_BufferSize member */\r
197   DMA_InitStruct->DMA_BufferSize = 0;\r
198 \r
199   /* Initialize the DMA_PeripheralInc member */\r
200   DMA_InitStruct->DMA_PeripheralInc = DMA_PeripheralInc_Disable;\r
201 \r
202   /* Initialize the DMA_MemoryInc member */\r
203   DMA_InitStruct->DMA_MemoryInc = DMA_MemoryInc_Disable;\r
204 \r
205   /* Initialize the DMA_PeripheralDataSize member */\r
206   DMA_InitStruct->DMA_PeripheralDataSize = DMA_PeripheralDataSize_Byte;\r
207 \r
208   /* Initialize the DMA_MemoryDataSize member */\r
209   DMA_InitStruct->DMA_MemoryDataSize = DMA_MemoryDataSize_Byte;\r
210 \r
211   /* Initialize the DMA_Mode member */\r
212   DMA_InitStruct->DMA_Mode = DMA_Mode_Normal;\r
213 \r
214   /* Initialize the DMA_Priority member */\r
215   DMA_InitStruct->DMA_Priority = DMA_Priority_Low;\r
216 \r
217   /* Initialize the DMA_M2M member */\r
218   DMA_InitStruct->DMA_M2M = DMA_M2M_Disable;\r
219 }\r
220 \r
221 /*******************************************************************************\r
222 * Function Name  : DMA_Cmd\r
223 * Description    : Enables or disables the specified DMA Channel.\r
224 * Input          : - DMA_Channelx: where x can be 1, 2 to 7 to select the DMA\r
225 *                    Channel.\r
226 *                  - NewState: new state of the DMAx Channel. \r
227 *                    This parameter can be: ENABLE or DISABLE.\r
228 * Output         : None\r
229 * Return         : None\r
230 *******************************************************************************/\r
231 void DMA_Cmd(DMA_Channel_TypeDef*  DMA_Channelx, FunctionalState NewState)\r
232 {\r
233   /* Check the parameters */\r
234   assert(IS_FUNCTIONAL_STATE(NewState));\r
235 \r
236   if (NewState != DISABLE)\r
237   {\r
238     /* Enable the selected DMA Channelx */\r
239     DMA_Channelx->CCR |= CCR_ENABLE_Set;\r
240   }\r
241   else\r
242   {\r
243     /* Disable the selected DMA Channelx */\r
244     DMA_Channelx->CCR &= CCR_ENABLE_Reset;\r
245   }\r
246 }\r
247 \r
248 /*******************************************************************************\r
249 * Function Name  : DMA_ITConfig\r
250 * Description    : Enables or disables the specified DMA interrupts.\r
251 * Input          : - DMA_IT: specifies the DMA interrupts sources to be enabled\r
252 *                    or disabled. \r
253 *                    This parameter can be any combination of the following values:\r
254 *                       - DMA_IT_TC:  Transfer complete interrupt mask\r
255 *                       - DMA_IT_HT:  Half transfer interrupt mask\r
256 *                       - DMA_IT_TE:  Transfer error interrupt mask\r
257 *                  - NewState: new state of the specified DMA interrupts.\r
258 *                    This parameter can be: ENABLE or DISABLE.\r
259 * Output         : None\r
260 * Return         : None\r
261 *******************************************************************************/\r
262 void DMA_ITConfig(DMA_Channel_TypeDef* DMA_Channelx, u32 DMA_IT, FunctionalState NewState)\r
263 {\r
264   /* Check the parameters */\r
265   assert(IS_DMA_CONFIG_IT(DMA_IT));\r
266   assert(IS_FUNCTIONAL_STATE(NewState));\r
267 \r
268   if (NewState != DISABLE)\r
269   {\r
270     /* Enable the selected DMA interrupts */\r
271     DMA_Channelx->CCR |= DMA_IT;\r
272   }\r
273   else\r
274   {\r
275     /* Disable the selected DMA interrupts */\r
276     DMA_Channelx->CCR &= ~DMA_IT;\r
277   }\r
278 }\r
279 \r
280 /*******************************************************************************\r
281 * Function Name  : DMA_GetCurrDataCounter\r
282 * Description    : Returns the number of remaining data units in the current\r
283 *                  DMA Channel transfer.\r
284 * Input          : - DMA_Channelx: where x can be 1, 2 to 7 to select the DMA\r
285 *                    Channel.\r
286 * Output         : None\r
287 * Return         : The number of remaining data units in the current DMA Channel\r
288 *                  transfer..\r
289 *******************************************************************************/\r
290 u16 DMA_GetCurrDataCounter(DMA_Channel_TypeDef*  DMA_Channelx)\r
291 {\r
292   /* Return the current memory address value for Channelx */\r
293   return ((u16)(DMA_Channelx->CNDTR));\r
294 }\r
295 \r
296 /*******************************************************************************\r
297 * Function Name  : DMA_GetFlagStatus\r
298 * Description    : Checks whether the specified DMA flag is set or not.\r
299 * Input          : - DMA_FLAG: specifies the flag to check. \r
300 *                    This parameter can be one of the following values:\r
301 *                       - DMA_FLAG_GL1: Channel1 global flag.\r
302 *                       - DMA_FLAG_TC1: Channel1 transfer complete flag.\r
303 *                       - DMA_FLAG_HT1: Channel1 half transfer flag.\r
304 *                       - DMA_FLAG_TE1: Channel1 transfer error flag.\r
305 *                       - DMA_FLAG_GL2: Channel2 global flag.\r
306 *                       - DMA_FLAG_TC2: Channel2 transfer complete flag.\r
307 *                       - DMA_FLAG_HT2: Channel2 half transfer flag.\r
308 *                       - DMA_FLAG_TE2: Channel2 transfer error flag.\r
309 *                       - DMA_FLAG_GL3: Channel3 global flag.\r
310 *                       - DMA_FLAG_TC3: Channel3 transfer complete flag.\r
311 *                       - DMA_FLAG_HT3: Channel3 half transfer flag.\r
312 *                       - DMA_FLAG_TE3: Channel3 transfer error flag.\r
313 *                       - DMA_FLAG_GL4: Channel4 global flag.\r
314 *                       - DMA_FLAG_TC4: Channel4 transfer complete flag.\r
315 *                       - DMA_FLAG_HT4: Channel4 half transfer flag.\r
316 *                       - DMA_FLAG_TE4: Channel4 transfer error flag.\r
317 *                       - DMA_FLAG_GL5: Channel5 global flag.\r
318 *                       - DMA_FLAG_TC5: Channel5 transfer complete flag.\r
319 *                       - DMA_FLAG_HT5: Channel5 half transfer flag.\r
320 *                       - DMA_FLAG_TE5: Channel5 transfer error flag.\r
321 *                       - DMA_FLAG_GL6: Channel6 global flag.\r
322 *                       - DMA_FLAG_TC6: Channel6 transfer complete flag.\r
323 *                       - DMA_FLAG_HT6: Channel6 half transfer flag.\r
324 *                       - DMA_FLAG_TE6: Channel6 transfer error flag.\r
325 *                       - DMA_FLAG_GL7: Channel7 global flag.\r
326 *                       - DMA_FLAG_TC7: Channel7 transfer complete flag.\r
327 *                       - DMA_FLAG_HT7: Channel7 half transfer flag.\r
328 *                       - DMA_FLAG_TE7: Channel7 transfer error flag.\r
329 * Output         : None\r
330 * Return         : The new state of DMA_FLAG (SET or RESET).\r
331 *******************************************************************************/\r
332 FlagStatus DMA_GetFlagStatus(u32 DMA_FLAG)\r
333 {\r
334   FlagStatus bitstatus = RESET;\r
335 \r
336   /* Check the parameters */\r
337   assert(IS_DMA_GET_FLAG(DMA_FLAG));\r
338 \r
339   /* Check the status of the specified DMA flag */\r
340   if ((DMA->ISR & DMA_FLAG) != (u32)RESET)\r
341   {\r
342     /* DMA_FLAG is set */\r
343     bitstatus = SET;\r
344   }\r
345   else\r
346   {\r
347     /* DMA_FLAG is reset */\r
348     bitstatus = RESET;\r
349   }\r
350   /* Return the DMA_FLAG status */\r
351   return  bitstatus;\r
352 }\r
353 \r
354 /*******************************************************************************\r
355 * Function Name  : DMA_ClearFlag\r
356 * Description    : Clears the DMA's pending flags.\r
357 * Input          : - DMA_FLAG: specifies the flag to clear. \r
358 *                    This parameter can be any combination of the following values:\r
359 *                       - DMA_FLAG_GL1: Channel1 global flag.\r
360 *                       - DMA_FLAG_TC1: Channel1 transfer complete flag.\r
361 *                       - DMA_FLAG_HT1: Channel1 half transfer flag.\r
362 *                       - DMA_FLAG_TE1: Channel1 transfer error flag.\r
363 *                       - DMA_FLAG_GL2: Channel2 global flag.\r
364 *                       - DMA_FLAG_TC2: Channel2 transfer complete flag.\r
365 *                       - DMA_FLAG_HT2: Channel2 half transfer flag.\r
366 *                       - DMA_FLAG_TE2: Channel2 transfer error flag.\r
367 *                       - DMA_FLAG_GL3: Channel3 global flag.\r
368 *                       - DMA_FLAG_TC3: Channel3 transfer complete flag.\r
369 *                       - DMA_FLAG_HT3: Channel3 half transfer flag.\r
370 *                       - DMA_FLAG_TE3: Channel3 transfer error flag.\r
371 *                       - DMA_FLAG_GL4: Channel4 global flag.\r
372 *                       - DMA_FLAG_TC4: Channel4 transfer complete flag.\r
373 *                       - DMA_FLAG_HT4: Channel4 half transfer flag.\r
374 *                       - DMA_FLAG_TE4: Channel4 transfer error flag.\r
375 *                       - DMA_FLAG_GL5: Channel5 global flag.\r
376 *                       - DMA_FLAG_TC5: Channel5 transfer complete flag.\r
377 *                       - DMA_FLAG_HT5: Channel5 half transfer flag.\r
378 *                       - DMA_FLAG_TE5: Channel5 transfer error flag.\r
379 *                       - DMA_FLAG_GL6: Channel6 global flag.\r
380 *                       - DMA_FLAG_TC6: Channel6 transfer complete flag.\r
381 *                       - DMA_FLAG_HT6: Channel6 half transfer flag.\r
382 *                       - DMA_FLAG_TE6: Channel6 transfer error flag.\r
383 *                       - DMA_FLAG_GL7: Channel7 global flag.\r
384 *                       - DMA_FLAG_TC7: Channel7 transfer complete flag.\r
385 *                       - DMA_FLAG_HT7: Channel7 half transfer flag.\r
386 *                       - DMA_FLAG_TE7: Channel7 transfer error flag.\r
387 * Output         : None\r
388 * Return         : None\r
389 *******************************************************************************/\r
390 void DMA_ClearFlag(u32 DMA_FLAG)\r
391 {\r
392   /* Check the parameters */\r
393   assert(IS_DMA_CLEAR_FLAG(DMA_FLAG));\r
394 \r
395   /* Clear the selected DMA flags */\r
396   DMA->IFCR = DMA_FLAG;\r
397 }\r
398 \r
399 /*******************************************************************************\r
400 * Function Name  : DMA_GetITStatus\r
401 * Description    : Checks whether the specified DMA interrupt has occurred or not.\r
402 * Input          : - DMA_IT: specifies the DMA interrupt source to check. \r
403 *                    This parameter can be one of the following values:\r
404 *                       - DMA_IT_GL1: Channel1 global interrupt.\r
405 *                       - DMA_IT_TC1: Channel1 transfer complete interrupt.\r
406 *                       - DMA_IT_HT1: Channel1 half transfer interrupt.\r
407 *                       - DMA_IT_TE1: Channel1 transfer error interrupt.\r
408 *                       - DMA_IT_GL2: Channel2 global interrupt.\r
409 *                       - DMA_IT_TC2: Channel2 transfer complete interrupt.\r
410 *                       - DMA_IT_HT2: Channel2 half transfer interrupt.\r
411 *                       - DMA_IT_TE2: Channel2 transfer error interrupt.\r
412 *                       - DMA_IT_GL3: Channel3 global interrupt.\r
413 *                       - DMA_IT_TC3: Channel3 transfer complete interrupt.\r
414 *                       - DMA_IT_HT3: Channel3 half transfer interrupt.\r
415 *                       - DMA_IT_TE3: Channel3 transfer error interrupt.\r
416 *                       - DMA_IT_GL4: Channel4 global interrupt.\r
417 *                       - DMA_IT_TC4: Channel4 transfer complete interrupt.\r
418 *                       - DMA_IT_HT4: Channel4 half transfer interrupt.\r
419 *                       - DMA_IT_TE4: Channel4 transfer error interrupt.\r
420 *                       - DMA_IT_GL5: Channel5 global interrupt.\r
421 *                       - DMA_IT_TC5: Channel5 transfer complete interrupt.\r
422 *                       - DMA_IT_HT5: Channel5 half transfer interrupt.\r
423 *                       - DMA_IT_TE5: Channel5 transfer error interrupt.\r
424 *                       - DMA_IT_GL6: Channel6 global interrupt.\r
425 *                       - DMA_IT_TC6: Channel6 transfer complete interrupt.\r
426 *                       - DMA_IT_HT6: Channel6 half transfer interrupt.\r
427 *                       - DMA_IT_TE6: Channel6 transfer error interrupt.\r
428 *                       - DMA_IT_GL7: Channel7 global interrupt.\r
429 *                       - DMA_IT_TC7: Channel7 transfer complete interrupt.\r
430 *                       - DMA_IT_HT7: Channel7 half transfer interrupt.\r
431 *                       - DMA_IT_TE7: Channel7 transfer error interrupt.\r
432 * Output         : None\r
433 * Return         : The new state of DMA_IT (SET or RESET).\r
434 *******************************************************************************/\r
435 ITStatus DMA_GetITStatus(u32 DMA_IT)\r
436 {\r
437   ITStatus bitstatus = RESET;\r
438 \r
439   /* Check the parameters */\r
440   assert(IS_DMA_GET_IT(DMA_IT));\r
441 \r
442   /* Check the status of the specified DMA interrupt */\r
443   if ((DMA->ISR & DMA_IT) != (u32)RESET)\r
444   {\r
445     /* DMA_IT is set */\r
446     bitstatus = SET;\r
447   }\r
448   else\r
449   {\r
450     /* DMA_IT is reset */\r
451     bitstatus = RESET;\r
452   }\r
453   /* Return the DMA_IT status */\r
454   return  bitstatus;\r
455 }\r
456 \r
457 /*******************************************************************************\r
458 * Function Name  : DMA_ClearITPendingBit\r
459 * Description    : Clears the DMA\92s interrupt pending bits.\r
460 * Input          : - DMA_IT: specifies the DMA interrupt pending bit to clear.\r
461 *                    This parameter can be any combination of the following values:\r
462 *                       - DMA_IT_GL1: Channel1 global interrupt.\r
463 *                       - DMA_IT_TC1: Channel1 transfer complete interrupt.\r
464 *                       - DMA_IT_HT1: Channel1 half transfer interrupt.\r
465 *                       - DMA_IT_TE1: Channel1 transfer error interrupt.\r
466 *                       - DMA_IT_GL2: Channel2 global interrupt.\r
467 *                       - DMA_IT_TC2: Channel2 transfer complete interrupt.\r
468 *                       - DMA_IT_HT2: Channel2 half transfer interrupt.\r
469 *                       - DMA_IT_TE2: Channel2 transfer error interrupt.\r
470 *                       - DMA_IT_GL3: Channel3 global interrupt.\r
471 *                       - DMA_IT_TC3: Channel3 transfer complete interrupt.\r
472 *                       - DMA_IT_HT3: Channel3 half transfer interrupt.\r
473 *                       - DMA_IT_TE3: Channel3 transfer error interrupt.\r
474 *                       - DMA_IT_GL4: Channel4 global interrupt.\r
475 *                       - DMA_IT_TC4: Channel4 transfer complete interrupt.\r
476 *                       - DMA_IT_HT4: Channel4 half transfer interrupt.\r
477 *                       - DMA_IT_TE4: Channel4 transfer error interrupt.\r
478 *                       - DMA_IT_GL5: Channel5 global interrupt.\r
479 *                       - DMA_IT_TC5: Channel5 transfer complete interrupt.\r
480 *                       - DMA_IT_HT5: Channel5 half transfer interrupt.\r
481 *                       - DMA_IT_TE5: Channel5 transfer error interrupt.\r
482 *                       - DMA_IT_GL6: Channel6 global interrupt.\r
483 *                       - DMA_IT_TC6: Channel6 transfer complete interrupt.\r
484 *                       - DMA_IT_HT6: Channel6 half transfer interrupt.\r
485 *                       - DMA_IT_TE6: Channel6 transfer error interrupt.\r
486 *                       - DMA_IT_GL7: Channel7 global interrupt.\r
487 *                       - DMA_IT_TC7: Channel7 transfer complete interrupt.\r
488 *                       - DMA_IT_HT7: Channel7 half transfer interrupt.\r
489 *                       - DMA_IT_TE7: Channel7 transfer error interrupt.\r
490 * Output         : None\r
491 * Return         : None\r
492 *******************************************************************************/\r
493 void DMA_ClearITPendingBit(u32 DMA_IT)\r
494 {\r
495   /* Check the parameters */\r
496   assert(IS_DMA_CLEAR_IT(DMA_IT));\r
497 \r
498   /* Clear the selected DMA interrupt pending bits */\r
499   DMA->IFCR = DMA_IT;\r
500 }\r
501 \r
502 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r
503 \r