]> git.sur5r.net Git - freertos/blob - Demo/CORTEX_STM32F103_Keil/STM32F10xFWLib/inc/stm32f10x_dma.h
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / CORTEX_STM32F103_Keil / STM32F10xFWLib / inc / stm32f10x_dma.h
1 /******************** (C) COPYRIGHT 2007 STMicroelectronics ********************\r
2 * File Name          : stm32f10x_dma.h\r
3 * Author             : MCD Application Team\r
4 * Date First Issued  : 09/29/2006\r
5 * Description        : This file contains all the functions prototypes for the\r
6 *                      DMA firmware library.\r
7 ********************************************************************************\r
8 * History:\r
9 * 04/02/2007: V0.2\r
10 * 02/05/2007: V0.1\r
11 * 09/29/2006: V0.01\r
12 ********************************************************************************\r
13 * THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS\r
14 * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.\r
15 * AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,\r
16 * INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE\r
17 * CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING\r
18 * INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.\r
19 *******************************************************************************/\r
20 \r
21 /* Define to prevent recursive inclusion -------------------------------------*/\r
22 #ifndef __STM32F10x_DMA_H\r
23 #define __STM32F10x_DMA_H\r
24 \r
25 /* Includes ------------------------------------------------------------------*/\r
26 #include "stm32f10x_map.h"\r
27 \r
28 /* Exported types ------------------------------------------------------------*/\r
29 /* DMA Init structure definition */\r
30 typedef struct\r
31 {\r
32   u32 DMA_PeripheralBaseAddr;\r
33   u32 DMA_MemoryBaseAddr;       \r
34   u32 DMA_DIR;  \r
35   u32 DMA_BufferSize;   \r
36   u32 DMA_PeripheralInc; \r
37   u32 DMA_MemoryInc;\r
38   u32 DMA_PeripheralDataSize;\r
39   u32 DMA_MemoryDataSize;\r
40   u32 DMA_Mode;  \r
41   u32 DMA_Priority; \r
42   u32 DMA_M2M; \r
43 }DMA_InitTypeDef;\r
44 \r
45 /* Exported constants --------------------------------------------------------*/\r
46 /* DMA data transfer direction -----------------------------------------------*/\r
47 #define DMA_DIR_PeripheralDST              ((u32)0x00000010)\r
48 #define DMA_DIR_PeripheralSRC              ((u32)0x00000000)\r
49 \r
50 #define IS_DMA_DIR(DIR) ((DIR == DMA_DIR_PeripheralDST) || \\r
51                          (DIR == DMA_DIR_PeripheralSRC))\r
52 \r
53 /* DMA peripheral incremented mode -------------------------------------------*/\r
54 #define DMA_PeripheralInc_Enable           ((u32)0x00000040)\r
55 #define DMA_PeripheralInc_Disable          ((u32)0x00000000)\r
56 \r
57 #define IS_DMA_PERIPHERAL_INC_STATE(STATE) ((STATE == DMA_PeripheralInc_Enable) || \\r
58                                             (STATE == DMA_PeripheralInc_Disable))\r
59 \r
60 /* DMA memory incremented mode -----------------------------------------------*/\r
61 #define DMA_MemoryInc_Enable               ((u32)0x00000080)\r
62 #define DMA_MemoryInc_Disable              ((u32)0x00000000)\r
63 \r
64 #define IS_DMA_MEMORY_INC_STATE(STATE) ((STATE == DMA_MemoryInc_Enable) || \\r
65                                         (STATE == DMA_MemoryInc_Disable))\r
66 \r
67 /* DMA peripheral data size --------------------------------------------------*/\r
68 #define DMA_PeripheralDataSize_Byte        ((u32)0x00000000)\r
69 #define DMA_PeripheralDataSize_HalfWord    ((u32)0x00000100)\r
70 #define DMA_PeripheralDataSize_Word        ((u32)0x00000200)\r
71 \r
72 #define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) ((SIZE == DMA_PeripheralDataSize_Byte) || \\r
73                                            (SIZE == DMA_PeripheralDataSize_HalfWord) || \\r
74                                            (SIZE == DMA_PeripheralDataSize_Word))\r
75 \r
76 /* DMA memory data size ------------------------------------------------------*/\r
77 #define DMA_MemoryDataSize_Byte            ((u32)0x00000000)\r
78 #define DMA_MemoryDataSize_HalfWord        ((u32)0x00000400)\r
79 #define DMA_MemoryDataSize_Word            ((u32)0x00000800)\r
80 \r
81 #define IS_DMA_MEMORY_DATA_SIZE(SIZE) ((SIZE == DMA_MemoryDataSize_Byte) || \\r
82                                        (SIZE == DMA_MemoryDataSize_HalfWord) || \\r
83                                        (SIZE == DMA_MemoryDataSize_Word))\r
84 \r
85 /* DMA circular/normal mode --------------------------------------------------*/\r
86 #define DMA_Mode_Circular                  ((u32)0x00000020)\r
87 #define DMA_Mode_Normal                    ((u32)0x00000000)\r
88 \r
89 #define IS_DMA_MODE(MODE) ((MODE == DMA_Mode_Circular) || (MODE == DMA_Mode_Normal))\r
90 \r
91 /* DMA priority level --------------------------------------------------------*/\r
92 #define DMA_Priority_VeryHigh              ((u32)0x00003000)\r
93 #define DMA_Priority_High                  ((u32)0x00002000)\r
94 #define DMA_Priority_Medium                ((u32)0x00001000)\r
95 #define DMA_Priority_Low                   ((u32)0x00000000)\r
96 \r
97 #define IS_DMA_PRIORITY(PRIORITY) ((PRIORITY == DMA_Priority_VeryHigh) || \\r
98                                    (PRIORITY == DMA_Priority_High) || \\r
99                                    (PRIORITY == DMA_Priority_Medium) || \\r
100                                    (PRIORITY == DMA_Priority_Low))\r
101 \r
102 /* DMA memory to memory ------------------------------------------------------*/\r
103 #define DMA_M2M_Enable                     ((u32)0x00004000)\r
104 #define DMA_M2M_Disable                    ((u32)0x00000000)\r
105 \r
106 #define IS_DMA_M2M_STATE(STATE) ((STATE == DMA_M2M_Enable) || (STATE == DMA_M2M_Disable))\r
107 \r
108 /* DMA interrupts definition -------------------------------------------------*/\r
109 #define DMA_IT_TC                          ((u32)0x00000002)\r
110 #define DMA_IT_HT                          ((u32)0x00000004)\r
111 #define DMA_IT_TE                          ((u32)0x00000008)\r
112 \r
113 #define IS_DMA_CONFIG_IT(IT) (((IT & 0xFFFFFFF1) == 0x00) && (IT != 0x00))\r
114 \r
115 #define DMA_IT_GL1                         ((u32)0x00000001)\r
116 #define DMA_IT_TC1                         ((u32)0x00000002)\r
117 #define DMA_IT_HT1                         ((u32)0x00000004)\r
118 #define DMA_IT_TE1                         ((u32)0x00000008)\r
119 #define DMA_IT_GL2                         ((u32)0x00000010)\r
120 #define DMA_IT_TC2                         ((u32)0x00000020)\r
121 #define DMA_IT_HT2                         ((u32)0x00000040)\r
122 #define DMA_IT_TE2                         ((u32)0x00000080)\r
123 #define DMA_IT_GL3                         ((u32)0x00000100)\r
124 #define DMA_IT_TC3                         ((u32)0x00000200)\r
125 #define DMA_IT_HT3                         ((u32)0x00000400)\r
126 #define DMA_IT_TE3                         ((u32)0x00000800)\r
127 #define DMA_IT_GL4                         ((u32)0x00001000)\r
128 #define DMA_IT_TC4                         ((u32)0x00002000)\r
129 #define DMA_IT_HT4                         ((u32)0x00004000)\r
130 #define DMA_IT_TE4                         ((u32)0x00008000)\r
131 #define DMA_IT_GL5                         ((u32)0x00010000)\r
132 #define DMA_IT_TC5                         ((u32)0x00020000)\r
133 #define DMA_IT_HT5                         ((u32)0x00040000)\r
134 #define DMA_IT_TE5                         ((u32)0x00080000)\r
135 #define DMA_IT_GL6                         ((u32)0x00100000)\r
136 #define DMA_IT_TC6                         ((u32)0x00200000)\r
137 #define DMA_IT_HT6                         ((u32)0x00400000)\r
138 #define DMA_IT_TE6                         ((u32)0x00800000)\r
139 #define DMA_IT_GL7                         ((u32)0x01000000)\r
140 #define DMA_IT_TC7                         ((u32)0x02000000)\r
141 #define DMA_IT_HT7                         ((u32)0x04000000)\r
142 #define DMA_IT_TE7                         ((u32)0x08000000)\r
143 \r
144 #define IS_DMA_CLEAR_IT(IT) (((IT & 0xF0000000) == 0x00) && (IT != 0x00))\r
145 #define IS_DMA_GET_IT(IT) ((IT == DMA_IT_GL1) || (IT == DMA_IT_TC1) || \\r
146                            (IT == DMA_IT_HT1) || (IT == DMA_IT_TE1) || \\r
147                            (IT == DMA_IT_GL2) || (IT == DMA_IT_TC2) || \\r
148                            (IT == DMA_IT_HT2) || (IT == DMA_IT_TE2) || \\r
149                            (IT == DMA_IT_GL3) || (IT == DMA_IT_TC3) || \\r
150                            (IT == DMA_IT_HT3) || (IT == DMA_IT_TE3) || \\r
151                            (IT == DMA_IT_GL4) || (IT == DMA_IT_TC4) || \\r
152                            (IT == DMA_IT_HT4) || (IT == DMA_IT_TE4) || \\r
153                            (IT == DMA_IT_GL5) || (IT == DMA_IT_TC5) || \\r
154                            (IT == DMA_IT_HT5) || (IT == DMA_IT_TE5) || \\r
155                            (IT == DMA_IT_GL6) || (IT == DMA_IT_TC6) || \\r
156                            (IT == DMA_IT_HT6) || (IT == DMA_IT_TE6) || \\r
157                            (IT == DMA_IT_GL7) || (IT == DMA_IT_TC7) || \\r
158                            (IT == DMA_IT_HT7) || (IT == DMA_IT_TE7))\r
159 \r
160 /* DMA flags definition ------------------------------------------------------*/\r
161 #define DMA_FLAG_GL1                       ((u32)0x00000001)\r
162 #define DMA_FLAG_TC1                       ((u32)0x00000002)\r
163 #define DMA_FLAG_HT1                       ((u32)0x00000004)\r
164 #define DMA_FLAG_TE1                       ((u32)0x00000008)\r
165 #define DMA_FLAG_GL2                       ((u32)0x00000010)\r
166 #define DMA_FLAG_TC2                       ((u32)0x00000020)\r
167 #define DMA_FLAG_HT2                       ((u32)0x00000040)\r
168 #define DMA_FLAG_TE2                       ((u32)0x00000080)\r
169 #define DMA_FLAG_GL3                       ((u32)0x00000100)\r
170 #define DMA_FLAG_TC3                       ((u32)0x00000200)\r
171 #define DMA_FLAG_HT3                       ((u32)0x00000400)\r
172 #define DMA_FLAG_TE3                       ((u32)0x00000800)\r
173 #define DMA_FLAG_GL4                       ((u32)0x00001000)\r
174 #define DMA_FLAG_TC4                       ((u32)0x00002000)\r
175 #define DMA_FLAG_HT4                       ((u32)0x00004000)\r
176 #define DMA_FLAG_TE4                       ((u32)0x00008000)\r
177 #define DMA_FLAG_GL5                       ((u32)0x00010000)\r
178 #define DMA_FLAG_TC5                       ((u32)0x00020000)\r
179 #define DMA_FLAG_HT5                       ((u32)0x00040000)\r
180 #define DMA_FLAG_TE5                       ((u32)0x00080000)\r
181 #define DMA_FLAG_GL6                       ((u32)0x00100000)\r
182 #define DMA_FLAG_TC6                       ((u32)0x00200000)\r
183 #define DMA_FLAG_HT6                       ((u32)0x00400000)\r
184 #define DMA_FLAG_TE6                       ((u32)0x00800000)\r
185 #define DMA_FLAG_GL7                       ((u32)0x01000000)\r
186 #define DMA_FLAG_TC7                       ((u32)0x02000000)\r
187 #define DMA_FLAG_HT7                       ((u32)0x04000000)\r
188 #define DMA_FLAG_TE7                       ((u32)0x08000000)\r
189 \r
190 #define IS_DMA_CLEAR_FLAG(FLAG) (((FLAG & 0xF0000000) == 0x00) && (FLAG != 0x00))\r
191 #define IS_DMA_GET_FLAG(FLAG) ((FLAG == DMA_FLAG_GL1) || (FLAG == DMA_FLAG_TC1) || \\r
192                                (FLAG == DMA_FLAG_HT1) || (FLAG == DMA_FLAG_TE1) || \\r
193                                (FLAG == DMA_FLAG_GL2) || (FLAG == DMA_FLAG_TC2) || \\r
194                                (FLAG == DMA_FLAG_HT2) || (FLAG == DMA_FLAG_TE2) || \\r
195                                (FLAG == DMA_FLAG_GL3) || (FLAG == DMA_FLAG_TC3) || \\r
196                                (FLAG == DMA_FLAG_HT3) || (FLAG == DMA_FLAG_TE3) || \\r
197                                (FLAG == DMA_FLAG_GL4) || (FLAG == DMA_FLAG_TC4) || \\r
198                                (FLAG == DMA_FLAG_HT4) || (FLAG == DMA_FLAG_TE4) || \\r
199                                (FLAG == DMA_FLAG_GL5) || (FLAG == DMA_FLAG_TC5) || \\r
200                                (FLAG == DMA_FLAG_HT5) || (FLAG == DMA_FLAG_TE5) || \\r
201                                (FLAG == DMA_FLAG_GL6) || (FLAG == DMA_FLAG_TC6) || \\r
202                                (FLAG == DMA_FLAG_HT6) || (FLAG == DMA_FLAG_TE6) || \\r
203                                (FLAG == DMA_FLAG_GL7) || (FLAG == DMA_FLAG_TC7) || \\r
204                                (FLAG == DMA_FLAG_HT7) || (FLAG == DMA_FLAG_TE7))\r
205 \r
206 /* DMA Buffer Size -----------------------------------------------------------*/\r
207 #define IS_DMA_BUFFER_SIZE(SIZE) ((SIZE >= 0x1) && (SIZE < 0x10000))\r
208 \r
209 /* Exported macro ------------------------------------------------------------*/\r
210 /* Exported functions ------------------------------------------------------- */\r
211 void DMA_DeInit(DMA_Channel_TypeDef* DMA_Channelx);\r
212 void DMA_Init(DMA_Channel_TypeDef*  DMA_Channelx, DMA_InitTypeDef* DMA_InitStruct);\r
213 void DMA_StructInit(DMA_InitTypeDef* DMA_InitStruct);\r
214 void DMA_Cmd(DMA_Channel_TypeDef*  DMA_Channelx, FunctionalState NewState);\r
215 void DMA_ITConfig(DMA_Channel_TypeDef*  DMA_Channelx, u32 DMA_IT, FunctionalState NewState);\r
216 u16 DMA_GetCurrDataCounter(DMA_Channel_TypeDef*  DMA_Channelx);\r
217 FlagStatus DMA_GetFlagStatus(u32 DMA_FLAG);\r
218 void DMA_ClearFlag(u32 DMA_FLAG);\r
219 ITStatus DMA_GetITStatus(u32 DMA_IT);\r
220 void DMA_ClearITPendingBit(u32 DMA_IT);\r
221 \r
222 #endif /*__STM32F10x_DMA_H */\r
223 \r
224 /******************* (C) COPYRIGHT 2007 STMicroelectronics *****END OF FILE****/\r