]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil/ST_Library/include/stm32f7xx_hal_dma.h
Final V8.2.1 release ready for tagging:
[freertos] / FreeRTOS / Demo / CORTEX_M7_STM32F7_STM32756G-EVAL_IAR_Keil / ST_Library / include / stm32f7xx_hal_dma.h
1 /**\r
2   ******************************************************************************\r
3   * @file    stm32f7xx_hal_dma.h\r
4   * @author  MCD Application Team\r
5   * @version V1.0.0RC1\r
6   * @date    24-March-2015\r
7   * @brief   Header file of DMA HAL module.\r
8   ******************************************************************************\r
9   * @attention\r
10   *\r
11   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>\r
12   *\r
13   * Redistribution and use in source and binary forms, with or without modification,\r
14   * are permitted provided that the following conditions are met:\r
15   *   1. Redistributions of source code must retain the above copyright notice,\r
16   *      this list of conditions and the following disclaimer.\r
17   *   2. Redistributions in binary form must reproduce the above copyright notice,\r
18   *      this list of conditions and the following disclaimer in the documentation\r
19   *      and/or other materials provided with the distribution.\r
20   *   3. Neither the name of STMicroelectronics nor the names of its contributors\r
21   *      may be used to endorse or promote products derived from this software\r
22   *      without specific prior written permission.\r
23   *\r
24   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
25   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
26   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
27   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
28   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
29   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
30   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
31   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
32   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
33   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
34   *\r
35   ******************************************************************************\r
36   */ \r
37 \r
38 /* Define to prevent recursive inclusion -------------------------------------*/\r
39 #ifndef __STM32F7xx_HAL_DMA_H\r
40 #define __STM32F7xx_HAL_DMA_H\r
41 \r
42 #ifdef __cplusplus\r
43  extern "C" {\r
44 #endif\r
45 \r
46 /* Includes ------------------------------------------------------------------*/\r
47 #include "stm32f7xx_hal_def.h"\r
48 \r
49 /** @addtogroup STM32F7xx_HAL_Driver\r
50   * @{\r
51   */\r
52 \r
53 /** @addtogroup DMA\r
54   * @{\r
55   */ \r
56 \r
57 /* Exported types ------------------------------------------------------------*/\r
58 \r
59 /** @defgroup DMA_Exported_Types DMA Exported Types\r
60   * @brief    DMA Exported Types \r
61   * @{\r
62   */\r
63    \r
64 /** \r
65   * @brief  DMA Configuration Structure definition\r
66   */\r
67 typedef struct\r
68 {\r
69   uint32_t Channel;              /*!< Specifies the channel used for the specified stream. \r
70                                       This parameter can be a value of @ref DMA_Channel_selection                    */\r
71 \r
72   uint32_t Direction;            /*!< Specifies if the data will be transferred from memory to peripheral, \r
73                                       from memory to memory or from peripheral to memory.\r
74                                       This parameter can be a value of @ref DMA_Data_transfer_direction              */\r
75 \r
76   uint32_t PeriphInc;            /*!< Specifies whether the Peripheral address register should be incremented or not.\r
77                                       This parameter can be a value of @ref DMA_Peripheral_incremented_mode          */\r
78 \r
79   uint32_t MemInc;               /*!< Specifies whether the memory address register should be incremented or not.\r
80                                       This parameter can be a value of @ref DMA_Memory_incremented_mode              */\r
81 \r
82   uint32_t PeriphDataAlignment;  /*!< Specifies the Peripheral data width.\r
83                                       This parameter can be a value of @ref DMA_Peripheral_data_size                 */\r
84 \r
85   uint32_t MemDataAlignment;     /*!< Specifies the Memory data width.\r
86                                       This parameter can be a value of @ref DMA_Memory_data_size                     */\r
87 \r
88   uint32_t Mode;                 /*!< Specifies the operation mode of the DMAy Streamx.\r
89                                       This parameter can be a value of @ref DMA_mode\r
90                                       @note The circular buffer mode cannot be used if the memory-to-memory\r
91                                             data transfer is configured on the selected Stream                        */\r
92 \r
93   uint32_t Priority;             /*!< Specifies the software priority for the DMAy Streamx.\r
94                                       This parameter can be a value of @ref DMA_Priority_level                       */\r
95 \r
96   uint32_t FIFOMode;             /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.\r
97                                       This parameter can be a value of @ref DMA_FIFO_direct_mode\r
98                                       @note The Direct mode (FIFO mode disabled) cannot be used if the \r
99                                             memory-to-memory data transfer is configured on the selected stream       */\r
100 \r
101   uint32_t FIFOThreshold;        /*!< Specifies the FIFO threshold level.\r
102                                       This parameter can be a value of @ref DMA_FIFO_threshold_level                  */\r
103 \r
104   uint32_t MemBurst;             /*!< Specifies the Burst transfer configuration for the memory transfers. \r
105                                       It specifies the amount of data to be transferred in a single non interruptible \r
106                                       transaction.\r
107                                       This parameter can be a value of @ref DMA_Memory_burst \r
108                                       @note The burst mode is possible only if the address Increment mode is enabled. */\r
109 \r
110   uint32_t PeriphBurst;          /*!< Specifies the Burst transfer configuration for the peripheral transfers. \r
111                                       It specifies the amount of data to be transferred in a single non interruptible \r
112                                       transaction. \r
113                                       This parameter can be a value of @ref DMA_Peripheral_burst\r
114                                       @note The burst mode is possible only if the address Increment mode is enabled. */\r
115 }DMA_InitTypeDef;\r
116 \r
117 /** \r
118   * @brief  HAL DMA State structures definition\r
119   */\r
120 typedef enum\r
121 {\r
122   HAL_DMA_STATE_RESET             = 0x00,  /*!< DMA not yet initialized or disabled */\r
123   HAL_DMA_STATE_READY             = 0x01,  /*!< DMA initialized and ready for use   */\r
124   HAL_DMA_STATE_READY_MEM0        = 0x11,  /*!< DMA Mem0 process success            */\r
125   HAL_DMA_STATE_READY_MEM1        = 0x21,  /*!< DMA Mem1 process success            */\r
126   HAL_DMA_STATE_READY_HALF_MEM0   = 0x31,  /*!< DMA Mem0 Half process success       */\r
127   HAL_DMA_STATE_READY_HALF_MEM1   = 0x41,  /*!< DMA Mem1 Half process success       */\r
128   HAL_DMA_STATE_BUSY              = 0x02,  /*!< DMA process is ongoing              */\r
129   HAL_DMA_STATE_BUSY_MEM0         = 0x12,  /*!< DMA Mem0 process is ongoing         */\r
130   HAL_DMA_STATE_BUSY_MEM1         = 0x22,  /*!< DMA Mem1 process is ongoing         */\r
131   HAL_DMA_STATE_TIMEOUT           = 0x03,  /*!< DMA timeout state                   */\r
132   HAL_DMA_STATE_ERROR             = 0x04,  /*!< DMA error state                     */\r
133 }HAL_DMA_StateTypeDef;\r
134 \r
135 /** \r
136   * @brief  HAL DMA Error Code structure definition\r
137   */\r
138 typedef enum\r
139 {\r
140   HAL_DMA_FULL_TRANSFER      = 0x00,    /*!< Full transfer     */\r
141   HAL_DMA_HALF_TRANSFER      = 0x01,    /*!< Half Transfer     */\r
142 }HAL_DMA_LevelCompleteTypeDef;\r
143 \r
144 /** \r
145   * @brief  DMA handle Structure definition\r
146   */\r
147 typedef struct __DMA_HandleTypeDef\r
148 {\r
149   DMA_Stream_TypeDef         *Instance;                                                    /*!< Register base address                  */\r
150 \r
151   DMA_InitTypeDef            Init;                                                         /*!< DMA communication parameters           */ \r
152 \r
153   HAL_LockTypeDef            Lock;                                                         /*!< DMA locking object                     */  \r
154 \r
155   __IO HAL_DMA_StateTypeDef  State;                                                        /*!< DMA transfer state                     */\r
156 \r
157   void                       *Parent;                                                      /*!< Parent object state                    */  \r
158 \r
159   void                       (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma);     /*!< DMA transfer complete callback         */\r
160 \r
161   void                       (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA Half transfer complete callback    */\r
162 \r
163   void                       (* XferM1CpltCallback)( struct __DMA_HandleTypeDef * hdma);   /*!< DMA transfer complete Memory1 callback */\r
164 \r
165   void                       (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma);    /*!< DMA transfer error callback            */\r
166 \r
167  __IO uint32_t              ErrorCode;                                                    /*!< DMA Error code                          */\r
168 }DMA_HandleTypeDef;\r
169 \r
170 /**\r
171   * @}\r
172   */\r
173 \r
174 \r
175 /* Exported constants --------------------------------------------------------*/\r
176 \r
177 /** @defgroup DMA_Exported_Constants DMA Exported Constants\r
178   * @brief    DMA Exported constants \r
179   * @{\r
180   */\r
181 \r
182 /** @defgroup DMA_Error_Code DMA Error Code\r
183   * @brief    DMA Error Code \r
184   * @{\r
185   */ \r
186 #define HAL_DMA_ERROR_NONE      ((uint32_t)0x00000000)    /*!< No error             */\r
187 #define HAL_DMA_ERROR_TE        ((uint32_t)0x00000001)    /*!< Transfer error       */\r
188 #define HAL_DMA_ERROR_FE        ((uint32_t)0x00000002)    /*!< FIFO error           */\r
189 #define HAL_DMA_ERROR_DME       ((uint32_t)0x00000004)    /*!< Direct Mode error    */\r
190 #define HAL_DMA_ERROR_TIMEOUT   ((uint32_t)0x00000020)    /*!< Timeout error        */\r
191 /**\r
192   * @}\r
193   */\r
194 \r
195 /** @defgroup DMA_Channel_selection DMA Channel selection\r
196   * @brief    DMA channel selection \r
197   * @{\r
198   */ \r
199 #define DMA_CHANNEL_0        ((uint32_t)0x00000000)  /*!< DMA Channel 0 */\r
200 #define DMA_CHANNEL_1        ((uint32_t)0x02000000)  /*!< DMA Channel 1 */\r
201 #define DMA_CHANNEL_2        ((uint32_t)0x04000000)  /*!< DMA Channel 2 */\r
202 #define DMA_CHANNEL_3        ((uint32_t)0x06000000)  /*!< DMA Channel 3 */\r
203 #define DMA_CHANNEL_4        ((uint32_t)0x08000000)  /*!< DMA Channel 4 */\r
204 #define DMA_CHANNEL_5        ((uint32_t)0x0A000000)  /*!< DMA Channel 5 */\r
205 #define DMA_CHANNEL_6        ((uint32_t)0x0C000000)  /*!< DMA Channel 6 */\r
206 #define DMA_CHANNEL_7        ((uint32_t)0x0E000000)  /*!< DMA Channel 7 */\r
207 /**\r
208   * @}\r
209   */\r
210 \r
211 /** @defgroup DMA_Data_transfer_direction DMA Data transfer direction\r
212   * @brief    DMA data transfer direction \r
213   * @{\r
214   */ \r
215 #define DMA_PERIPH_TO_MEMORY         ((uint32_t)0x00000000)      /*!< Peripheral to memory direction */\r
216 #define DMA_MEMORY_TO_PERIPH         ((uint32_t)DMA_SxCR_DIR_0)  /*!< Memory to peripheral direction */\r
217 #define DMA_MEMORY_TO_MEMORY         ((uint32_t)DMA_SxCR_DIR_1)  /*!< Memory to memory direction     */\r
218 /**\r
219   * @}\r
220   */\r
221         \r
222 /** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode\r
223   * @brief    DMA peripheral incremented mode \r
224   * @{\r
225   */ \r
226 #define DMA_PINC_ENABLE        ((uint32_t)DMA_SxCR_PINC)  /*!< Peripheral increment mode enable  */\r
227 #define DMA_PINC_DISABLE       ((uint32_t)0x00000000)     /*!< Peripheral increment mode disable */\r
228 /**\r
229   * @}\r
230   */ \r
231 \r
232 /** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode\r
233   * @brief    DMA memory incremented mode \r
234   * @{\r
235   */ \r
236 #define DMA_MINC_ENABLE         ((uint32_t)DMA_SxCR_MINC)  /*!< Memory increment mode enable  */\r
237 #define DMA_MINC_DISABLE        ((uint32_t)0x00000000)     /*!< Memory increment mode disable */\r
238 /**\r
239   * @}\r
240   */\r
241 \r
242 \r
243 /** @defgroup DMA_Peripheral_data_size DMA Peripheral data size\r
244   * @brief    DMA peripheral data size \r
245   * @{\r
246   */ \r
247 #define DMA_PDATAALIGN_BYTE          ((uint32_t)0x00000000)        /*!< Peripheral data alignment: Byte     */\r
248 #define DMA_PDATAALIGN_HALFWORD      ((uint32_t)DMA_SxCR_PSIZE_0)  /*!< Peripheral data alignment: HalfWord */\r
249 #define DMA_PDATAALIGN_WORD          ((uint32_t)DMA_SxCR_PSIZE_1)  /*!< Peripheral data alignment: Word     */\r
250 /**\r
251   * @}\r
252   */ \r
253 \r
254 \r
255 /** @defgroup DMA_Memory_data_size DMA Memory data size\r
256   * @brief    DMA memory data size \r
257   * @{ \r
258   */\r
259 #define DMA_MDATAALIGN_BYTE          ((uint32_t)0x00000000)        /*!< Memory data alignment: Byte     */\r
260 #define DMA_MDATAALIGN_HALFWORD      ((uint32_t)DMA_SxCR_MSIZE_0)  /*!< Memory data alignment: HalfWord */\r
261 #define DMA_MDATAALIGN_WORD          ((uint32_t)DMA_SxCR_MSIZE_1)  /*!< Memory data alignment: Word     */\r
262 /**\r
263   * @}\r
264   */\r
265 \r
266 /** @defgroup DMA_mode DMA mode\r
267   * @brief    DMA mode \r
268   * @{\r
269   */ \r
270 #define DMA_NORMAL         ((uint32_t)0x00000000)       /*!< Normal mode                  */\r
271 #define DMA_CIRCULAR       ((uint32_t)DMA_SxCR_CIRC)    /*!< Circular mode                */\r
272 #define DMA_PFCTRL         ((uint32_t)DMA_SxCR_PFCTRL)  /*!< Peripheral flow control mode */\r
273 /**\r
274   * @}\r
275   */\r
276 \r
277 \r
278 /** @defgroup DMA_Priority_level DMA Priority level\r
279   * @brief    DMA priority levels \r
280   * @{\r
281   */\r
282 #define DMA_PRIORITY_LOW             ((uint32_t)0x00000000)     /*!< Priority level: Low       */\r
283 #define DMA_PRIORITY_MEDIUM          ((uint32_t)DMA_SxCR_PL_0)  /*!< Priority level: Medium    */\r
284 #define DMA_PRIORITY_HIGH            ((uint32_t)DMA_SxCR_PL_1)  /*!< Priority level: High      */\r
285 #define DMA_PRIORITY_VERY_HIGH       ((uint32_t)DMA_SxCR_PL)    /*!< Priority level: Very High */\r
286 /**\r
287   * @}\r
288   */ \r
289 \r
290 \r
291 /** @defgroup DMA_FIFO_direct_mode DMA FIFO direct mode\r
292   * @brief    DMA FIFO direct mode\r
293   * @{\r
294   */\r
295 #define DMA_FIFOMODE_DISABLE        ((uint32_t)0x00000000)       /*!< FIFO mode disable */\r
296 #define DMA_FIFOMODE_ENABLE         ((uint32_t)DMA_SxFCR_DMDIS)  /*!< FIFO mode enable  */\r
297 /**\r
298   * @}\r
299   */ \r
300 \r
301 /** @defgroup DMA_FIFO_threshold_level DMA FIFO threshold level\r
302   * @brief    DMA FIFO level \r
303   * @{\r
304   */\r
305 #define DMA_FIFO_THRESHOLD_1QUARTERFULL       ((uint32_t)0x00000000)       /*!< FIFO threshold 1 quart full configuration  */\r
306 #define DMA_FIFO_THRESHOLD_HALFFULL           ((uint32_t)DMA_SxFCR_FTH_0)  /*!< FIFO threshold half full configuration     */\r
307 #define DMA_FIFO_THRESHOLD_3QUARTERSFULL      ((uint32_t)DMA_SxFCR_FTH_1)  /*!< FIFO threshold 3 quarts full configuration */\r
308 #define DMA_FIFO_THRESHOLD_FULL               ((uint32_t)DMA_SxFCR_FTH)    /*!< FIFO threshold full configuration          */\r
309 /**\r
310   * @}\r
311   */ \r
312 \r
313 /** @defgroup DMA_Memory_burst DMA Memory burst\r
314   * @brief    DMA memory burst \r
315   * @{\r
316   */ \r
317 #define DMA_MBURST_SINGLE       ((uint32_t)0x00000000)  \r
318 #define DMA_MBURST_INC4         ((uint32_t)DMA_SxCR_MBURST_0)  \r
319 #define DMA_MBURST_INC8         ((uint32_t)DMA_SxCR_MBURST_1)  \r
320 #define DMA_MBURST_INC16        ((uint32_t)DMA_SxCR_MBURST)  \r
321 /**\r
322   * @}\r
323   */ \r
324 \r
325 \r
326 /** @defgroup DMA_Peripheral_burst DMA Peripheral burst\r
327   * @brief    DMA peripheral burst \r
328   * @{\r
329   */ \r
330 #define DMA_PBURST_SINGLE       ((uint32_t)0x00000000)  \r
331 #define DMA_PBURST_INC4         ((uint32_t)DMA_SxCR_PBURST_0)  \r
332 #define DMA_PBURST_INC8         ((uint32_t)DMA_SxCR_PBURST_1)  \r
333 #define DMA_PBURST_INC16        ((uint32_t)DMA_SxCR_PBURST)  \r
334 /**\r
335   * @}\r
336   */\r
337 \r
338 /** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions\r
339   * @brief    DMA interrupts definition \r
340   * @{\r
341   */\r
342 #define DMA_IT_TC                         ((uint32_t)DMA_SxCR_TCIE)\r
343 #define DMA_IT_HT                         ((uint32_t)DMA_SxCR_HTIE)\r
344 #define DMA_IT_TE                         ((uint32_t)DMA_SxCR_TEIE)\r
345 #define DMA_IT_DME                        ((uint32_t)DMA_SxCR_DMEIE)\r
346 #define DMA_IT_FE                         ((uint32_t)0x00000080)\r
347 /**\r
348   * @}\r
349   */\r
350 \r
351 /** @defgroup DMA_flag_definitions DMA flag definitions\r
352   * @brief    DMA flag definitions \r
353   * @{\r
354   */ \r
355 #define DMA_FLAG_FEIF0_4                    ((uint32_t)0x00800001)\r
356 #define DMA_FLAG_DMEIF0_4                   ((uint32_t)0x00800004)\r
357 #define DMA_FLAG_TEIF0_4                    ((uint32_t)0x00000008)\r
358 #define DMA_FLAG_HTIF0_4                    ((uint32_t)0x00000010)\r
359 #define DMA_FLAG_TCIF0_4                    ((uint32_t)0x00000020)\r
360 #define DMA_FLAG_FEIF1_5                    ((uint32_t)0x00000040)\r
361 #define DMA_FLAG_DMEIF1_5                   ((uint32_t)0x00000100)\r
362 #define DMA_FLAG_TEIF1_5                    ((uint32_t)0x00000200)\r
363 #define DMA_FLAG_HTIF1_5                    ((uint32_t)0x00000400)\r
364 #define DMA_FLAG_TCIF1_5                    ((uint32_t)0x00000800)\r
365 #define DMA_FLAG_FEIF2_6                    ((uint32_t)0x00010000)\r
366 #define DMA_FLAG_DMEIF2_6                   ((uint32_t)0x00040000)\r
367 #define DMA_FLAG_TEIF2_6                    ((uint32_t)0x00080000)\r
368 #define DMA_FLAG_HTIF2_6                    ((uint32_t)0x00100000)\r
369 #define DMA_FLAG_TCIF2_6                    ((uint32_t)0x00200000)\r
370 #define DMA_FLAG_FEIF3_7                    ((uint32_t)0x00400000)\r
371 #define DMA_FLAG_DMEIF3_7                   ((uint32_t)0x01000000)\r
372 #define DMA_FLAG_TEIF3_7                    ((uint32_t)0x02000000)\r
373 #define DMA_FLAG_HTIF3_7                    ((uint32_t)0x04000000)\r
374 #define DMA_FLAG_TCIF3_7                    ((uint32_t)0x08000000)\r
375 /**\r
376   * @}\r
377   */\r
378 \r
379 /**\r
380   * @}\r
381   */\r
382  \r
383 /* Exported macro ------------------------------------------------------------*/\r
384 \r
385 /** @brief Reset DMA handle state\r
386   * @param  __HANDLE__: specifies the DMA handle.\r
387   * @retval None\r
388   */\r
389 #define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET)\r
390 \r
391 /**\r
392   * @brief  Return the current DMA Stream FIFO filled level.\r
393   * @param  __HANDLE__: DMA handle\r
394   * @retval The FIFO filling state.\r
395   *           - DMA_FIFOStatus_Less1QuarterFull: when FIFO is less than 1 quarter-full \r
396   *                                              and not empty.\r
397   *           - DMA_FIFOStatus_1QuarterFull: if more than 1 quarter-full.\r
398   *           - DMA_FIFOStatus_HalfFull: if more than 1 half-full.\r
399   *           - DMA_FIFOStatus_3QuartersFull: if more than 3 quarters-full.\r
400   *           - DMA_FIFOStatus_Empty: when FIFO is empty\r
401   *           - DMA_FIFOStatus_Full: when FIFO is full\r
402   */\r
403 #define __HAL_DMA_GET_FS(__HANDLE__)      (((__HANDLE__)->Instance->FCR & (DMA_SxFCR_FS)))\r
404 \r
405 /**\r
406   * @brief  Enable the specified DMA Stream.\r
407   * @param  __HANDLE__: DMA handle\r
408   * @retval None\r
409   */\r
410 #define __HAL_DMA_ENABLE(__HANDLE__)      ((__HANDLE__)->Instance->CR |=  DMA_SxCR_EN)\r
411 \r
412 /**\r
413   * @brief  Disable the specified DMA Stream.\r
414   * @param  __HANDLE__: DMA handle\r
415   * @retval None\r
416   */\r
417 #define __HAL_DMA_DISABLE(__HANDLE__)     ((__HANDLE__)->Instance->CR &=  ~DMA_SxCR_EN)\r
418 \r
419 /* Interrupt & Flag management */\r
420 \r
421 /**\r
422   * @brief  Return the current DMA Stream transfer complete flag.\r
423   * @param  __HANDLE__: DMA handle\r
424   * @retval The specified transfer complete flag index.\r
425   */\r
426 #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \\r
427 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\\r
428  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\\r
429  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\\r
430  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\\r
431  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\\r
432  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\\r
433  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\\r
434  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\\r
435  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\\r
436  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\\r
437  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\\r
438  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\\r
439    DMA_FLAG_TCIF3_7)\r
440 \r
441 /**\r
442   * @brief  Return the current DMA Stream half transfer complete flag.\r
443   * @param  __HANDLE__: DMA handle\r
444   * @retval The specified half transfer complete flag index.\r
445   */      \r
446 #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\\r
447 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\\r
448  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\\r
449  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\\r
450  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\\r
451  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\\r
452  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\\r
453  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\\r
454  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\\r
455  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\\r
456  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\\r
457  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\\r
458  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\\r
459    DMA_FLAG_HTIF3_7)\r
460 \r
461 /**\r
462   * @brief  Return the current DMA Stream transfer error flag.\r
463   * @param  __HANDLE__: DMA handle\r
464   * @retval The specified transfer error flag index.\r
465   */\r
466 #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\\r
467 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\\r
468  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\\r
469  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\\r
470  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\\r
471  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\\r
472  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\\r
473  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\\r
474  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\\r
475  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\\r
476  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\\r
477  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\\r
478  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\\r
479    DMA_FLAG_TEIF3_7)\r
480 \r
481 /**\r
482   * @brief  Return the current DMA Stream FIFO error flag.\r
483   * @param  __HANDLE__: DMA handle\r
484   * @retval The specified FIFO error flag index.\r
485   */\r
486 #define __HAL_DMA_GET_FE_FLAG_INDEX(__HANDLE__)\\r
487 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_FEIF0_4 :\\r
488  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_FEIF0_4 :\\r
489  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_FEIF0_4 :\\r
490  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_FEIF0_4 :\\r
491  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_FEIF1_5 :\\r
492  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_FEIF1_5 :\\r
493  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_FEIF1_5 :\\r
494  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_FEIF1_5 :\\r
495  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_FEIF2_6 :\\r
496  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_FEIF2_6 :\\r
497  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_FEIF2_6 :\\r
498  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_FEIF2_6 :\\r
499    DMA_FLAG_FEIF3_7)\r
500 \r
501 /**\r
502   * @brief  Return the current DMA Stream direct mode error flag.\r
503   * @param  __HANDLE__: DMA handle\r
504   * @retval The specified direct mode error flag index.\r
505   */\r
506 #define __HAL_DMA_GET_DME_FLAG_INDEX(__HANDLE__)\\r
507 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_DMEIF0_4 :\\r
508  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_DMEIF0_4 :\\r
509  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_DMEIF0_4 :\\r
510  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_DMEIF0_4 :\\r
511  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_DMEIF1_5 :\\r
512  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_DMEIF1_5 :\\r
513  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_DMEIF1_5 :\\r
514  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_DMEIF1_5 :\\r
515  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_DMEIF2_6 :\\r
516  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_DMEIF2_6 :\\r
517  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_DMEIF2_6 :\\r
518  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_DMEIF2_6 :\\r
519    DMA_FLAG_DMEIF3_7)\r
520 \r
521 /**\r
522   * @brief  Get the DMA Stream pending flags.\r
523   * @param  __HANDLE__: DMA handle\r
524   * @param  __FLAG__: Get the specified flag.\r
525   *          This parameter can be any combination of the following values:\r
526   *            @arg DMA_FLAG_TCIFx: Transfer complete flag.\r
527   *            @arg DMA_FLAG_HTIFx: Half transfer complete flag.\r
528   *            @arg DMA_FLAG_TEIFx: Transfer error flag.\r
529   *            @arg DMA_FLAG_DMEIFx: Direct mode error flag.\r
530   *            @arg DMA_FLAG_FEIFx: FIFO error flag.\r
531   *         Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.   \r
532   * @retval The state of FLAG (SET or RESET).\r
533   */\r
534 #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\\r
535 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HISR & (__FLAG__)) :\\r
536  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LISR & (__FLAG__)) :\\r
537  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__)))\r
538 \r
539 /**\r
540   * @brief  Clear the DMA Stream pending flags.\r
541   * @param  __HANDLE__: DMA handle\r
542   * @param  __FLAG__: specifies the flag to clear.\r
543   *          This parameter can be any combination of the following values:\r
544   *            @arg DMA_FLAG_TCIFx: Transfer complete flag.\r
545   *            @arg DMA_FLAG_HTIFx: Half transfer complete flag.\r
546   *            @arg DMA_FLAG_TEIFx: Transfer error flag.\r
547   *            @arg DMA_FLAG_DMEIFx: Direct mode error flag.\r
548   *            @arg DMA_FLAG_FEIFx: FIFO error flag.\r
549   *         Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.   \r
550   * @retval None\r
551   */\r
552 #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \\r
553 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HIFCR = (__FLAG__)) :\\r
554  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LIFCR = (__FLAG__)) :\\r
555  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__)))\r
556 \r
557 /**\r
558   * @brief  Enable the specified DMA Stream interrupts.\r
559   * @param  __HANDLE__: DMA handle\r
560   * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled. \r
561   *        This parameter can be any combination of the following values:\r
562   *           @arg DMA_IT_TC: Transfer complete interrupt mask.\r
563   *           @arg DMA_IT_HT: Half transfer complete interrupt mask.\r
564   *           @arg DMA_IT_TE: Transfer error interrupt mask.\r
565   *           @arg DMA_IT_FE: FIFO error interrupt mask.\r
566   *           @arg DMA_IT_DME: Direct mode error interrupt.\r
567   * @retval None\r
568   */\r
569 #define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__)   (((__INTERRUPT__) != DMA_IT_FE)? \\r
570 ((__HANDLE__)->Instance->CR |= (__INTERRUPT__)) : ((__HANDLE__)->Instance->FCR |= (__INTERRUPT__)))\r
571 \r
572 /**\r
573   * @brief  Disable the specified DMA Stream interrupts.\r
574   * @param  __HANDLE__: DMA handle\r
575   * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled. \r
576   *         This parameter can be any combination of the following values:\r
577   *            @arg DMA_IT_TC: Transfer complete interrupt mask.\r
578   *            @arg DMA_IT_HT: Half transfer complete interrupt mask.\r
579   *            @arg DMA_IT_TE: Transfer error interrupt mask.\r
580   *            @arg DMA_IT_FE: FIFO error interrupt mask.\r
581   *            @arg DMA_IT_DME: Direct mode error interrupt.\r
582   * @retval None\r
583   */\r
584 #define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (((__INTERRUPT__) != DMA_IT_FE)? \\r
585 ((__HANDLE__)->Instance->CR &= ~(__INTERRUPT__)) : ((__HANDLE__)->Instance->FCR &= ~(__INTERRUPT__)))\r
586 \r
587 /**\r
588   * @brief  Check whether the specified DMA Stream interrupt has occurred or not.\r
589   * @param  __HANDLE__: DMA handle\r
590   * @param  __INTERRUPT__: specifies the DMA interrupt source to check.\r
591   *         This parameter can be one of the following values:\r
592   *            @arg DMA_IT_TC: Transfer complete interrupt mask.\r
593   *            @arg DMA_IT_HT: Half transfer complete interrupt mask.\r
594   *            @arg DMA_IT_TE: Transfer error interrupt mask.\r
595   *            @arg DMA_IT_FE: FIFO error interrupt mask.\r
596   *            @arg DMA_IT_DME: Direct mode error interrupt.\r
597   * @retval The state of DMA_IT.\r
598   */\r
599 #define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  (((__INTERRUPT__) != DMA_IT_FE)? \\r
600                                                         ((__HANDLE__)->Instance->CR & (__INTERRUPT__)) : \\r
601                                                         ((__HANDLE__)->Instance->FCR & (__INTERRUPT__)))\r
602 \r
603 /**\r
604   * @brief  Writes the number of data units to be transferred on the DMA Stream.\r
605   * @param  __HANDLE__: DMA handle\r
606   * @param  __COUNTER__: Number of data units to be transferred (from 0 to 65535) \r
607   *          Number of data items depends only on the Peripheral data format.\r
608   *            \r
609   * @note   If Peripheral data format is Bytes: number of data units is equal \r
610   *         to total number of bytes to be transferred.\r
611   *           \r
612   * @note   If Peripheral data format is Half-Word: number of data units is  \r
613   *         equal to total number of bytes to be transferred / 2.\r
614   *           \r
615   * @note   If Peripheral data format is Word: number of data units is equal \r
616   *         to total  number of bytes to be transferred / 4.\r
617   *      \r
618   * @retval The number of remaining data units in the current DMAy Streamx transfer.\r
619   */\r
620 #define __HAL_DMA_SET_COUNTER(__HANDLE__, __COUNTER__) ((__HANDLE__)->Instance->NDTR = (uint16_t)(__COUNTER__))\r
621 \r
622 /**\r
623   * @brief  Returns the number of remaining data units in the current DMAy Streamx transfer.\r
624   * @param  __HANDLE__: DMA handle\r
625   *   \r
626   * @retval The number of remaining data units in the current DMA Stream transfer.\r
627   */\r
628 #define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->NDTR)\r
629 \r
630 \r
631 /* Include DMA HAL Extension module */\r
632 #include "stm32f7xx_hal_dma_ex.h"   \r
633 \r
634 /* Exported functions --------------------------------------------------------*/\r
635 \r
636 /** @defgroup DMA_Exported_Functions DMA Exported Functions\r
637   * @brief    DMA Exported functions \r
638   * @{\r
639   */\r
640 \r
641 /** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions\r
642   * @brief   Initialization and de-initialization functions \r
643   * @{\r
644   */\r
645 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma); \r
646 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma);\r
647 /**\r
648   * @}\r
649   */\r
650 \r
651 /** @defgroup DMA_Exported_Functions_Group2 I/O operation functions\r
652   * @brief   I/O operation functions  \r
653   * @{\r
654   */\r
655 HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\r
656 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);\r
657 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);\r
658 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t Timeout);\r
659 void              HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);\r
660 /**\r
661   * @}\r
662   */ \r
663 \r
664 /** @defgroup DMA_Exported_Functions_Group3 Peripheral State functions\r
665   * @brief    Peripheral State functions \r
666   * @{\r
667   */\r
668 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);\r
669 uint32_t             HAL_DMA_GetError(DMA_HandleTypeDef *hdma);\r
670 /**\r
671   * @}\r
672   */ \r
673 /**\r
674   * @}\r
675   */ \r
676 /* Private Constants -------------------------------------------------------------*/\r
677 /** @defgroup DMA_Private_Constants DMA Private Constants\r
678   * @brief    DMA private defines and constants \r
679   * @{\r
680   */\r
681 /**\r
682   * @}\r
683   */ \r
684 \r
685 /* Private macros ------------------------------------------------------------*/\r
686 /** @defgroup DMA_Private_Macros DMA Private Macros\r
687   * @brief    DMA private macros \r
688   * @{\r
689   */\r
690 #define IS_DMA_CHANNEL(CHANNEL) (((CHANNEL) == DMA_CHANNEL_0) || \\r
691                                  ((CHANNEL) == DMA_CHANNEL_1) || \\r
692                                  ((CHANNEL) == DMA_CHANNEL_2) || \\r
693                                  ((CHANNEL) == DMA_CHANNEL_3) || \\r
694                                  ((CHANNEL) == DMA_CHANNEL_4) || \\r
695                                  ((CHANNEL) == DMA_CHANNEL_5) || \\r
696                                  ((CHANNEL) == DMA_CHANNEL_6) || \\r
697                                  ((CHANNEL) == DMA_CHANNEL_7))\r
698 \r
699 #define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \\r
700                                      ((DIRECTION) == DMA_MEMORY_TO_PERIPH)  || \\r
701                                      ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) \r
702 \r
703 #define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1) && ((SIZE) < 0x10000))\r
704 \r
705 #define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \\r
706                                             ((STATE) == DMA_PINC_DISABLE))\r
707 \r
708 #define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE)  || \\r
709                                         ((STATE) == DMA_MINC_DISABLE))\r
710 \r
711 #define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE)     || \\r
712                                            ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \\r
713                                            ((SIZE) == DMA_PDATAALIGN_WORD))\r
714 \r
715 #define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE)     || \\r
716                                        ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \\r
717                                        ((SIZE) == DMA_MDATAALIGN_WORD ))\r
718 \r
719 #define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL )  || \\r
720                            ((MODE) == DMA_CIRCULAR) || \\r
721                            ((MODE) == DMA_PFCTRL)) \r
722 \r
723 #define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW )   || \\r
724                                    ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \\r
725                                    ((PRIORITY) == DMA_PRIORITY_HIGH)   || \\r
726                                    ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) \r
727 \r
728 #define IS_DMA_FIFO_MODE_STATE(STATE) (((STATE) == DMA_FIFOMODE_DISABLE ) || \\r
729                                        ((STATE) == DMA_FIFOMODE_ENABLE))\r
730 \r
731 #define IS_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == DMA_FIFO_THRESHOLD_1QUARTERFULL ) || \\r
732                                           ((THRESHOLD) == DMA_FIFO_THRESHOLD_HALFFULL)      || \\r
733                                           ((THRESHOLD) == DMA_FIFO_THRESHOLD_3QUARTERSFULL) || \\r
734                                           ((THRESHOLD) == DMA_FIFO_THRESHOLD_FULL))\r
735 \r
736 #define IS_DMA_MEMORY_BURST(BURST) (((BURST) == DMA_MBURST_SINGLE) || \\r
737                                     ((BURST) == DMA_MBURST_INC4)   || \\r
738                                     ((BURST) == DMA_MBURST_INC8)   || \\r
739                                     ((BURST) == DMA_MBURST_INC16))\r
740 \r
741 #define IS_DMA_PERIPHERAL_BURST(BURST) (((BURST) == DMA_PBURST_SINGLE) || \\r
742                                         ((BURST) == DMA_PBURST_INC4)   || \\r
743                                         ((BURST) == DMA_PBURST_INC8)   || \\r
744                                         ((BURST) == DMA_PBURST_INC16))\r
745 /**\r
746   * @}\r
747   */ \r
748 \r
749 /* Private functions ---------------------------------------------------------*/\r
750 /** @defgroup DMA_Private_Functions DMA Private Functions\r
751   * @brief    DMA private  functions \r
752   * @{\r
753   */\r
754 /**\r
755   * @}\r
756   */\r
757 \r
758 /**\r
759   * @}\r
760   */ \r
761 \r
762 /**\r
763   * @}\r
764   */\r
765 \r
766 #ifdef __cplusplus\r
767 }\r
768 #endif\r
769 \r
770 #endif /* __STM32F7xx_HAL_DMA_H */\r
771 \r
772 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/\r