]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M0_STM32F0518_IAR/Libraries/STM32F0xx_StdPeriph_Driver/inc/stm32f0xx_dma.h
Add FreeRTOS-Plus directory.
[freertos] / FreeRTOS / Demo / CORTEX_M0_STM32F0518_IAR / Libraries / STM32F0xx_StdPeriph_Driver / inc / stm32f0xx_dma.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f0xx_dma.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    27-January-2012\r
7   * @brief   This file contains all the functions prototypes for the DMA firmware\r
8   *          library.\r
9   ******************************************************************************\r
10   * @attention\r
11   *\r
12   * THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
13   * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE\r
14   * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY\r
15   * DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING\r
16   * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE\r
17   * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
18   *\r
19   * FOR MORE INFORMATION PLEASE READ CAREFULLY THE LICENSE AGREEMENT FILE\r
20   * LOCATED IN THE ROOT DIRECTORY OF THIS FIRMWARE PACKAGE.\r
21   *\r
22   * <h2><center>&copy; COPYRIGHT 2012 STMicroelectronics</center></h2>\r
23   ******************************************************************************\r
24   */\r
25 \r
26 /* Define to prevent recursive inclusion -------------------------------------*/\r
27 #ifndef __STM32F0XX_DMA_H\r
28 #define __STM32F0XX_DMA_H\r
29 \r
30 #ifdef __cplusplus\r
31  extern "C" {\r
32 #endif\r
33 \r
34 /* Includes ------------------------------------------------------------------*/\r
35 #include "stm32f0xx.h"\r
36 \r
37 /** @addtogroup STM32F0xx_StdPeriph_Driver\r
38   * @{\r
39   */\r
40 \r
41 /** @addtogroup DMA\r
42   * @{\r
43   */\r
44 /* Exported types ------------------------------------------------------------*/\r
45 \r
46 /** \r
47   * @brief  DMA Init structures definition\r
48   */\r
49 typedef struct\r
50 {\r
51   uint32_t DMA_PeripheralBaseAddr; /*!< Specifies the peripheral base address for DMAy Channelx.              */\r
52 \r
53   uint32_t DMA_MemoryBaseAddr;     /*!< Specifies the memory base address for DMAy Channelx.                  */\r
54 \r
55   uint32_t DMA_DIR;                /*!< Specifies if the peripheral is the source or destination.\r
56                                         This parameter can be a value of @ref DMA_data_transfer_direction     */\r
57 \r
58   uint32_t DMA_BufferSize;         /*!< Specifies the buffer size, in data unit, of the specified Channel. \r
59                                         The data unit is equal to the configuration set in DMA_PeripheralDataSize\r
60                                         or DMA_MemoryDataSize members depending in the transfer direction     */\r
61 \r
62   uint32_t DMA_PeripheralInc;      /*!< Specifies whether the Peripheral address register is incremented or not.\r
63                                         This parameter can be a value of @ref DMA_peripheral_incremented_mode */\r
64 \r
65   uint32_t DMA_MemoryInc;          /*!< Specifies whether the memory address register is incremented or not.\r
66                                         This parameter can be a value of @ref DMA_memory_incremented_mode     */\r
67 \r
68   uint32_t DMA_PeripheralDataSize; /*!< Specifies the Peripheral data width.\r
69                                         This parameter can be a value of @ref DMA_peripheral_data_size        */\r
70 \r
71   uint32_t DMA_MemoryDataSize;     /*!< Specifies the Memory data width.\r
72                                         This parameter can be a value of @ref DMA_memory_data_size            */\r
73 \r
74   uint32_t DMA_Mode;               /*!< Specifies the operation mode of the DMAy Channelx.\r
75                                         This parameter can be a value of @ref DMA_circular_normal_mode\r
76                                         @note: The circular buffer mode cannot be used if the memory-to-memory\r
77                                               data transfer is configured on the selected Channel */\r
78 \r
79   uint32_t DMA_Priority;           /*!< Specifies the software priority for the DMAy Channelx.\r
80                                         This parameter can be a value of @ref DMA_priority_level              */\r
81 \r
82   uint32_t DMA_M2M;                /*!< Specifies if the DMAy Channelx will be used in memory-to-memory transfer.\r
83                                         This parameter can be a value of @ref DMA_memory_to_memory            */\r
84 }DMA_InitTypeDef;\r
85 \r
86 /* Exported constants --------------------------------------------------------*/\r
87 \r
88 /** @defgroup DMA_Exported_Constants\r
89   * @{\r
90   */\r
91 \r
92 #define IS_DMA_ALL_PERIPH(PERIPH) (((PERIPH) == DMA1_Channel1) || \\r
93                                    ((PERIPH) == DMA1_Channel2) || \\r
94                                    ((PERIPH) == DMA1_Channel3) || \\r
95                                    ((PERIPH) == DMA1_Channel4) || \\r
96                                    ((PERIPH) == DMA1_Channel5))\r
97 \r
98 /** @defgroup DMA_data_transfer_direction \r
99   * @{\r
100   */\r
101 \r
102 #define DMA_DIR_PeripheralSRC              ((uint32_t)0x00000000)\r
103 #define DMA_DIR_PeripheralDST              DMA_CCR_DIR\r
104 \r
105 #define IS_DMA_DIR(DIR) (((DIR) == DMA_DIR_PeripheralSRC) || \\r
106                          ((DIR) == DMA_DIR_PeripheralDST))\r
107 /**\r
108   * @}\r
109   */\r
110 \r
111 /** @defgroup DMA_peripheral_incremented_mode \r
112   * @{\r
113   */\r
114 \r
115 #define DMA_PeripheralInc_Disable          ((uint32_t)0x00000000)\r
116 #define DMA_PeripheralInc_Enable           DMA_CCR_PINC\r
117 \r
118 #define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PeripheralInc_Disable) || \\r
119                                             ((STATE) == DMA_PeripheralInc_Enable))\r
120 /**\r
121   * @}\r
122   */\r
123 \r
124 /** @defgroup DMA_memory_incremented_mode \r
125   * @{\r
126   */\r
127 \r
128 #define DMA_MemoryInc_Disable              ((uint32_t)0x00000000)\r
129 #define DMA_MemoryInc_Enable               DMA_CCR_MINC\r
130 \r
131 #define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MemoryInc_Disable) || \\r
132                                         ((STATE) == DMA_MemoryInc_Enable))\r
133 /**\r
134   * @}\r
135   */\r
136 \r
137 /** @defgroup DMA_peripheral_data_size \r
138   * @{\r
139   */\r
140 \r
141 #define DMA_PeripheralDataSize_Byte        ((uint32_t)0x00000000)\r
142 #define DMA_PeripheralDataSize_HalfWord    DMA_CCR_PSIZE_0\r
143 #define DMA_PeripheralDataSize_Word        DMA_CCR_PSIZE_1\r
144 \r
145 #define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PeripheralDataSize_Byte) || \\r
146                                            ((SIZE) == DMA_PeripheralDataSize_HalfWord) || \\r
147                                            ((SIZE) == DMA_PeripheralDataSize_Word))\r
148 /**\r
149   * @}\r
150   */\r
151 \r
152 /** @defgroup DMA_memory_data_size \r
153   * @{\r
154   */\r
155 \r
156 #define DMA_MemoryDataSize_Byte            ((uint32_t)0x00000000)\r
157 #define DMA_MemoryDataSize_HalfWord        DMA_CCR_MSIZE_0\r
158 #define DMA_MemoryDataSize_Word            DMA_CCR_MSIZE_1\r
159 \r
160 #define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MemoryDataSize_Byte) || \\r
161                                        ((SIZE) == DMA_MemoryDataSize_HalfWord) || \\r
162                                        ((SIZE) == DMA_MemoryDataSize_Word))\r
163 /**\r
164   * @}\r
165   */\r
166 \r
167 /** @defgroup DMA_circular_normal_mode \r
168   * @{\r
169   */\r
170 \r
171 #define DMA_Mode_Normal                    ((uint32_t)0x00000000)\r
172 #define DMA_Mode_Circular                  DMA_CCR_CIRC\r
173 \r
174 #define IS_DMA_MODE(MODE) (((MODE) == DMA_Mode_Normal) || ((MODE) == DMA_Mode_Circular))\r
175 /**\r
176   * @}\r
177   */\r
178 \r
179 /** @defgroup DMA_priority_level \r
180   * @{\r
181   */\r
182 \r
183 #define DMA_Priority_VeryHigh              DMA_CCR_PL\r
184 #define DMA_Priority_High                  DMA_CCR_PL_1\r
185 #define DMA_Priority_Medium                DMA_CCR_PL_0\r
186 #define DMA_Priority_Low                   ((uint32_t)0x00000000)\r
187 \r
188 #define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_Priority_VeryHigh) || \\r
189                                    ((PRIORITY) == DMA_Priority_High) || \\r
190                                    ((PRIORITY) == DMA_Priority_Medium) || \\r
191                                    ((PRIORITY) == DMA_Priority_Low))\r
192 /**\r
193   * @}\r
194   */\r
195 \r
196 /** @defgroup DMA_memory_to_memory \r
197   * @{\r
198   */\r
199 \r
200 #define DMA_M2M_Disable                    ((uint32_t)0x00000000)\r
201 #define DMA_M2M_Enable                     DMA_CCR_MEM2MEM\r
202 \r
203 #define IS_DMA_M2M_STATE(STATE) (((STATE) == DMA_M2M_Disable) || ((STATE) == DMA_M2M_Enable))\r
204 \r
205 /**\r
206   * @}\r
207   */\r
208 \r
209 /** @defgroup DMA_interrupts_definition\r
210   * @{\r
211   */\r
212 \r
213 #define DMA_IT_TC                          DMA_CCR_TCIE\r
214 #define DMA_IT_HT                          DMA_CCR_HTIE\r
215 #define DMA_IT_TE                          DMA_CCR_TEIE\r
216 \r
217 #define IS_DMA_CONFIG_IT(IT) ((((IT) & 0xFFFFFFF1) == 0x00) && ((IT) != 0x00))\r
218 \r
219 #define DMA1_IT_GL1                        DMA_ISR_GIF1\r
220 #define DMA1_IT_TC1                        DMA_ISR_TCIF1\r
221 #define DMA1_IT_HT1                        DMA_ISR_HTIF1\r
222 #define DMA1_IT_TE1                        DMA_ISR_TEIF1\r
223 #define DMA1_IT_GL2                        DMA_ISR_GIF2\r
224 #define DMA1_IT_TC2                        DMA_ISR_TCIF2\r
225 #define DMA1_IT_HT2                        DMA_ISR_HTIF2\r
226 #define DMA1_IT_TE2                        DMA_ISR_TEIF2\r
227 #define DMA1_IT_GL3                        DMA_ISR_GIF3\r
228 #define DMA1_IT_TC3                        DMA_ISR_TCIF3\r
229 #define DMA1_IT_HT3                        DMA_ISR_HTIF3\r
230 #define DMA1_IT_TE3                        DMA_ISR_TEIF3\r
231 #define DMA1_IT_GL4                        DMA_ISR_GIF4\r
232 #define DMA1_IT_TC4                        DMA_ISR_TCIF4\r
233 #define DMA1_IT_HT4                        DMA_ISR_HTIF4\r
234 #define DMA1_IT_TE4                        DMA_ISR_TEIF4\r
235 #define DMA1_IT_GL5                        DMA_ISR_GIF5\r
236 #define DMA1_IT_TC5                        DMA_ISR_TCIF5\r
237 #define DMA1_IT_HT5                        DMA_ISR_HTIF5\r
238 #define DMA1_IT_TE5                        DMA_ISR_TEIF5\r
239 \r
240 #define IS_DMA_CLEAR_IT(IT) ((((IT) & 0xFFF00000) == 0x00) && ((IT) != 0x00))\r
241 \r
242 #define IS_DMA_GET_IT(IT) (((IT) == DMA1_IT_GL1) || ((IT) == DMA1_IT_TC1) || \\r
243                            ((IT) == DMA1_IT_HT1) || ((IT) == DMA1_IT_TE1) || \\r
244                            ((IT) == DMA1_IT_GL2) || ((IT) == DMA1_IT_TC2) || \\r
245                            ((IT) == DMA1_IT_HT2) || ((IT) == DMA1_IT_TE2) || \\r
246                            ((IT) == DMA1_IT_GL3) || ((IT) == DMA1_IT_TC3) || \\r
247                            ((IT) == DMA1_IT_HT3) || ((IT) == DMA1_IT_TE3) || \\r
248                            ((IT) == DMA1_IT_GL4) || ((IT) == DMA1_IT_TC4) || \\r
249                            ((IT) == DMA1_IT_HT4) || ((IT) == DMA1_IT_TE4) || \\r
250                            ((IT) == DMA1_IT_GL5) || ((IT) == DMA1_IT_TC5) || \\r
251                            ((IT) == DMA1_IT_HT5) || ((IT) == DMA1_IT_TE5))\r
252 \r
253 /**\r
254   * @}\r
255   */\r
256 \r
257 /** @defgroup DMA_flags_definition \r
258   * @{\r
259   */\r
260 #define DMA1_FLAG_GL1                      DMA_ISR_GIF1\r
261 #define DMA1_FLAG_TC1                      DMA_ISR_TCIF1\r
262 #define DMA1_FLAG_HT1                      DMA_ISR_HTIF1\r
263 #define DMA1_FLAG_TE1                      DMA_ISR_TEIF1\r
264 #define DMA1_FLAG_GL2                      DMA_ISR_GIF2\r
265 #define DMA1_FLAG_TC2                      DMA_ISR_TCIF2\r
266 #define DMA1_FLAG_HT2                      DMA_ISR_HTIF2\r
267 #define DMA1_FLAG_TE2                      DMA_ISR_TEIF2\r
268 #define DMA1_FLAG_GL3                      DMA_ISR_GIF3\r
269 #define DMA1_FLAG_TC3                      DMA_ISR_TCIF3\r
270 #define DMA1_FLAG_HT3                      DMA_ISR_HTIF3\r
271 #define DMA1_FLAG_TE3                      DMA_ISR_TEIF3\r
272 #define DMA1_FLAG_GL4                      DMA_ISR_GIF4\r
273 #define DMA1_FLAG_TC4                      DMA_ISR_TCIF4\r
274 #define DMA1_FLAG_HT4                      DMA_ISR_HTIF4\r
275 #define DMA1_FLAG_TE4                      DMA_ISR_TEIF4\r
276 #define DMA1_FLAG_GL5                      DMA_ISR_GIF5\r
277 #define DMA1_FLAG_TC5                      DMA_ISR_TCIF5\r
278 #define DMA1_FLAG_HT5                      DMA_ISR_HTIF5\r
279 #define DMA1_FLAG_TE5                      DMA_ISR_TEIF5\r
280 \r
281 #define IS_DMA_CLEAR_FLAG(FLAG) ((((FLAG) & 0xFFF00000) == 0x00) && ((FLAG) != 0x00))\r
282 \r
283 #define IS_DMA_GET_FLAG(FLAG) (((FLAG) == DMA1_FLAG_GL1) || ((FLAG) == DMA1_FLAG_TC1) || \\r
284                                ((FLAG) == DMA1_FLAG_HT1) || ((FLAG) == DMA1_FLAG_TE1) || \\r
285                                ((FLAG) == DMA1_FLAG_GL2) || ((FLAG) == DMA1_FLAG_TC2) || \\r
286                                ((FLAG) == DMA1_FLAG_HT2) || ((FLAG) == DMA1_FLAG_TE2) || \\r
287                                ((FLAG) == DMA1_FLAG_GL3) || ((FLAG) == DMA1_FLAG_TC3) || \\r
288                                ((FLAG) == DMA1_FLAG_HT3) || ((FLAG) == DMA1_FLAG_TE3) || \\r
289                                ((FLAG) == DMA1_FLAG_GL4) || ((FLAG) == DMA1_FLAG_TC4) || \\r
290                                ((FLAG) == DMA1_FLAG_HT4) || ((FLAG) == DMA1_FLAG_TE4) || \\r
291                                ((FLAG) == DMA1_FLAG_GL5) || ((FLAG) == DMA1_FLAG_TC5) || \\r
292                                ((FLAG) == DMA1_FLAG_HT5) || ((FLAG) == DMA1_FLAG_TE5))\r
293 \r
294 /**\r
295   * @}\r
296   */\r
297 \r
298 /** @defgroup DMA_Buffer_Size \r
299   * @{\r
300   */\r
301 \r
302 #define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1) && ((SIZE) < 0x10000))\r
303 \r
304 /**\r
305   * @}\r
306   */\r
307 \r
308 /**\r
309   * @}\r
310   */\r
311 \r
312 /* Exported macro ------------------------------------------------------------*/\r
313 /* Exported functions ------------------------------------------------------- */\r
314 \r
315 /* Function used to set the DMA configuration to the default reset state ******/\r
316 void DMA_DeInit(DMA_Channel_TypeDef* DMAy_Channelx);\r
317 \r
318 /* Initialization and Configuration functions *********************************/\r
319 void DMA_Init(DMA_Channel_TypeDef* DMAy_Channelx, DMA_InitTypeDef* DMA_InitStruct);\r
320 void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);\r
321 void DMA_Cmd(DMA_Channel_TypeDef* DMAy_Channelx, FunctionalState NewState);\r
322 \r
323 /* Data Counter functions******************************************************/ \r
324 void DMA_SetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx, uint16_t DataNumber);\r
325 uint16_t DMA_GetCurrDataCounter(DMA_Channel_TypeDef* DMAy_Channelx);\r
326 \r
327 /* Interrupts and flags management functions **********************************/\r
328 void DMA_ITConfig(DMA_Channel_TypeDef* DMAy_Channelx, uint32_t DMA_IT, FunctionalState NewState);\r
329 FlagStatus DMA_GetFlagStatus(uint32_t DMA_FLAG);\r
330 void DMA_ClearFlag(uint32_t DMA_FLAG);\r
331 ITStatus DMA_GetITStatus(uint32_t DMA_IT);\r
332 void DMA_ClearITPendingBit(uint32_t DMA_IT);\r
333 \r
334 #ifdef __cplusplus\r
335 }\r
336 #endif\r
337 \r
338 #endif /*__STM32F0XX_DMA_H */\r
339 \r
340 /**\r
341   * @}\r
342   */\r
343 \r
344 /**\r
345   * @}\r
346   */\r
347 \r
348 /******************* (C) COPYRIGHT 2012 STMicroelectronics *****END OF FILE****/\r