Subversion Repositories ScreenTimer

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f0xx_hal_dma.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of DMA HAL module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * <h2><center>&copy; Copyright (c) 2016 STMicroelectronics.
10
  * All rights reserved.</center></h2>
11
  *
12
  * This software component is licensed by ST under BSD 3-Clause license,
13
  * the "License"; You may not use this file except in compliance with the
14
  * License. You may obtain a copy of the License at:
15
  *                        opensource.org/licenses/BSD-3-Clause
16
  *
17
  ******************************************************************************
18
  */
19
 
20
/* Define to prevent recursive inclusion -------------------------------------*/
21
#ifndef __STM32F0xx_HAL_DMA_H
22
#define __STM32F0xx_HAL_DMA_H
23
 
24
#ifdef __cplusplus
25
 extern "C" {
26
#endif
27
 
28
/* Includes ------------------------------------------------------------------*/
29
#include "stm32f0xx_hal_def.h"
30
 
31
/** @addtogroup STM32F0xx_HAL_Driver
32
  * @{
33
  */
34
 
35
/** @addtogroup DMA
36
  * @{
37
  */
38
 
39
/* Exported types ------------------------------------------------------------*/
40
 
41
/** @defgroup DMA_Exported_Types DMA Exported Types
42
  * @{
43
  */
44
 
45
/**
46
  * @brief  DMA Configuration Structure definition  
47
  */
48
typedef struct
49
{
50
  uint32_t Direction;                 /*!< Specifies if the data will be transferred from memory to peripheral,
51
                                           from memory to memory or from peripheral to memory.
52
                                           This parameter can be a value of @ref DMA_Data_transfer_direction */
53
 
54
  uint32_t PeriphInc;                 /*!< Specifies whether the Peripheral address register should be incremented or not.
55
                                           This parameter can be a value of @ref DMA_Peripheral_incremented_mode */
56
 
57
  uint32_t MemInc;                    /*!< Specifies whether the memory address register should be incremented or not.
58
                                           This parameter can be a value of @ref DMA_Memory_incremented_mode */
59
 
60
  uint32_t PeriphDataAlignment;       /*!< Specifies the Peripheral data width.
61
                                           This parameter can be a value of @ref DMA_Peripheral_data_size */
62
 
63
  uint32_t MemDataAlignment;          /*!< Specifies the Memory data width.
64
                                           This parameter can be a value of @ref DMA_Memory_data_size */
65
 
66
  uint32_t Mode;                      /*!< Specifies the operation mode of the DMAy Channelx.
67
                                           This parameter can be a value of @ref DMA_mode
68
                                           @note The circular buffer mode cannot be used if the memory-to-memory
69
                                                 data transfer is configured on the selected Channel */
70
 
71
  uint32_t Priority;                   /*!< Specifies the software priority for the DMAy Channelx.
72
                                            This parameter can be a value of @ref DMA_Priority_level */
73
} DMA_InitTypeDef;
74
 
75
/**
76
  * @brief  HAL DMA State structures definition  
77
  */
78
typedef enum
79
{
80
  HAL_DMA_STATE_RESET             = 0x00U,  /*!< DMA not yet initialized or disabled */  
81
  HAL_DMA_STATE_READY             = 0x01U,  /*!< DMA initialized and ready for use   */
82
  HAL_DMA_STATE_BUSY              = 0x02U,  /*!< DMA process is ongoing              */    
83
  HAL_DMA_STATE_TIMEOUT           = 0x03U   /*!< DMA timeout state                   */  
84
}HAL_DMA_StateTypeDef;
85
 
86
/**
87
  * @brief  HAL DMA Error Code structure definition  
88
  */
89
typedef enum
90
{
91
  HAL_DMA_FULL_TRANSFER      = 0x00U,    /*!< Full transfer     */
92
  HAL_DMA_HALF_TRANSFER      = 0x01U     /*!< Half Transfer     */
93
}HAL_DMA_LevelCompleteTypeDef;      
94
 
95
/**
96
  * @brief  HAL DMA Callback ID structure definition
97
  */
98
typedef enum
99
{
100
  HAL_DMA_XFER_CPLT_CB_ID          = 0x00U,    /*!< Full transfer     */
101
  HAL_DMA_XFER_HALFCPLT_CB_ID      = 0x01U,    /*!< Half transfer     */
102
  HAL_DMA_XFER_ERROR_CB_ID         = 0x02U,    /*!< Error             */
103
  HAL_DMA_XFER_ABORT_CB_ID         = 0x03U,    /*!< Abort             */
104
  HAL_DMA_XFER_ALL_CB_ID           = 0x04U     /*!< All               */
105
 
106
}HAL_DMA_CallbackIDTypeDef;                                                                
107
 
108
/**
109
  * @brief  DMA handle Structure definition  
110
  */
111
typedef struct __DMA_HandleTypeDef
112
{  
113
  DMA_Channel_TypeDef   *Instance;                                                    /*!< Register base address                  */
114
 
115
  DMA_InitTypeDef       Init;                                                         /*!< DMA communication parameters           */
116
 
117
  HAL_LockTypeDef       Lock;                                                         /*!< DMA locking object                     */  
118
 
119
  __IO HAL_DMA_StateTypeDef  State;                                                   /*!< DMA transfer state                     */
120
 
121
  void                  *Parent;                                                      /*!< Parent object state                    */  
122
 
123
  void                  (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma);     /*!< DMA transfer complete callback         */
124
 
125
  void                  (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma); /*!< DMA Half transfer complete callback    */
126
 
127
  void                  (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma);    /*!< DMA transfer error callback            */
128
 
129
  void                  (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma);    /*!< DMA transfer abort callback            */  
130
 
131
  __IO uint32_t         ErrorCode;                                                    /*!< DMA Error code                         */
132
 
133
  DMA_TypeDef          *DmaBaseAddress;                                               /*!< DMA Channel Base Address                */
134
 
135
  uint32_t              ChannelIndex;                                                 /*!< DMA Channel Index                       */
136
} DMA_HandleTypeDef;    
137
 
138
/**
139
  * @}
140
  */
141
 
142
/* Exported constants --------------------------------------------------------*/
143
 
144
/** @defgroup DMA_Exported_Constants DMA Exported Constants
145
  * @{
146
  */
147
 
148
/** @defgroup DMA_Error_Code DMA Error Code
149
  * @{
150
  */
151
#define HAL_DMA_ERROR_NONE          (0x00000000U)    /*!< No error             */
152
#define HAL_DMA_ERROR_TE            (0x00000001U)    /*!< Transfer error       */
153
#define HAL_DMA_ERROR_NO_XFER       (0x00000004U)    /*!< no ongoin transfer   */
154
#define HAL_DMA_ERROR_TIMEOUT       (0x00000020U)    /*!< Timeout error        */
155
#define HAL_DMA_ERROR_NOT_SUPPORTED (0x00000100U)    /*!< Not supported mode */     
156
/**
157
  * @}
158
  */
159
 
160
/** @defgroup DMA_Data_transfer_direction DMA Data transfer direction
161
  * @{
162
  */
163
#define DMA_PERIPH_TO_MEMORY         (0x00000000U)        /*!< Peripheral to memory direction */
164
#define DMA_MEMORY_TO_PERIPH         ((uint32_t)DMA_CCR_DIR)       /*!< Memory to peripheral direction */
165
#define DMA_MEMORY_TO_MEMORY         ((uint32_t)(DMA_CCR_MEM2MEM)) /*!< Memory to memory direction     */
166
 
167
/**
168
  * @}
169
  */
170
 
171
/** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode
172
  * @{
173
  */
174
#define DMA_PINC_ENABLE        ((uint32_t)DMA_CCR_PINC)  /*!< Peripheral increment mode Enable */
175
#define DMA_PINC_DISABLE       (0x00000000U)    /*!< Peripheral increment mode Disable */
176
/**
177
  * @}
178
  */
179
 
180
/** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode
181
  * @{
182
  */
183
#define DMA_MINC_ENABLE         ((uint32_t)DMA_CCR_MINC)  /*!< Memory increment mode Enable  */
184
#define DMA_MINC_DISABLE        (0x00000000U)    /*!< Memory increment mode Disable */
185
/**
186
  * @}
187
  */
188
 
189
/** @defgroup DMA_Peripheral_data_size DMA Peripheral data size
190
  * @{
191
  */
192
#define DMA_PDATAALIGN_BYTE          (0x00000000U)       /*!< Peripheral data alignment : Byte     */
193
#define DMA_PDATAALIGN_HALFWORD      ((uint32_t)DMA_CCR_PSIZE_0)  /*!< Peripheral data alignment : HalfWord */
194
#define DMA_PDATAALIGN_WORD          ((uint32_t)DMA_CCR_PSIZE_1)  /*!< Peripheral data alignment : Word     */
195
/**
196
  * @}
197
  */
198
 
199
/** @defgroup DMA_Memory_data_size DMA Memory data size
200
  * @{
201
  */
202
#define DMA_MDATAALIGN_BYTE          (0x00000000U)       /*!< Memory data alignment : Byte     */
203
#define DMA_MDATAALIGN_HALFWORD      ((uint32_t)DMA_CCR_MSIZE_0)  /*!< Memory data alignment : HalfWord */
204
#define DMA_MDATAALIGN_WORD          ((uint32_t)DMA_CCR_MSIZE_1)  /*!< Memory data alignment : Word     */
205
/**
206
  * @}
207
  */
208
 
209
/** @defgroup DMA_mode DMA mode
210
  * @{
211
  */
212
#define DMA_NORMAL         (0x00000000U)      /*!< Normal Mode                  */
213
#define DMA_CIRCULAR       ((uint32_t)DMA_CCR_CIRC)    /*!< Circular Mode                */
214
/**
215
  * @}
216
  */
217
 
218
/** @defgroup DMA_Priority_level DMA Priority level
219
  * @{
220
  */
221
#define DMA_PRIORITY_LOW             (0x00000000U)    /*!< Priority level : Low       */
222
#define DMA_PRIORITY_MEDIUM          ((uint32_t)DMA_CCR_PL_0)  /*!< Priority level : Medium    */
223
#define DMA_PRIORITY_HIGH            ((uint32_t)DMA_CCR_PL_1)  /*!< Priority level : High      */
224
#define DMA_PRIORITY_VERY_HIGH       ((uint32_t)DMA_CCR_PL)    /*!< Priority level : Very_High */
225
/**
226
  * @}
227
  */
228
 
229
 
230
/** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions
231
  * @{
232
  */
233
#define DMA_IT_TC                         ((uint32_t)DMA_CCR_TCIE)
234
#define DMA_IT_HT                         ((uint32_t)DMA_CCR_HTIE)
235
#define DMA_IT_TE                         ((uint32_t)DMA_CCR_TEIE)
236
/**
237
  * @}
238
  */
239
 
240
/** @defgroup DMA_flag_definitions DMA flag definitions
241
  * @{
242
  */
243
 
244
#define DMA_FLAG_GL1                      (0x00000001U) /*!< Channel 1 global interrupt flag  */
245
#define DMA_FLAG_TC1                      (0x00000002U) /*!< Channel 1 transfer complete flag */
246
#define DMA_FLAG_HT1                      (0x00000004U) /*!< Channel 1 half transfer flag     */
247
#define DMA_FLAG_TE1                      (0x00000008U) /*!< Channel 1 transfer error flag    */
248
#define DMA_FLAG_GL2                      (0x00000010U) /*!< Channel 2 global interrupt flag  */
249
#define DMA_FLAG_TC2                      (0x00000020U) /*!< Channel 2 transfer complete flag */
250
#define DMA_FLAG_HT2                      (0x00000040U) /*!< Channel 2 half transfer flag     */
251
#define DMA_FLAG_TE2                      (0x00000080U) /*!< Channel 2 transfer error flag    */
252
#define DMA_FLAG_GL3                      (0x00000100U) /*!< Channel 3 global interrupt flag  */
253
#define DMA_FLAG_TC3                      (0x00000200U) /*!< Channel 3 transfer complete flag */
254
#define DMA_FLAG_HT3                      (0x00000400U) /*!< Channel 3 half transfer flag     */
255
#define DMA_FLAG_TE3                      (0x00000800U) /*!< Channel 3 transfer error flag    */
256
#define DMA_FLAG_GL4                      (0x00001000U) /*!< Channel 4 global interrupt flag  */
257
#define DMA_FLAG_TC4                      (0x00002000U) /*!< Channel 4 transfer complete flag */
258
#define DMA_FLAG_HT4                      (0x00004000U) /*!< Channel 4 half transfer flag     */
259
#define DMA_FLAG_TE4                      (0x00008000U) /*!< Channel 4 transfer error flag    */
260
#define DMA_FLAG_GL5                      (0x00010000U) /*!< Channel 5 global interrupt flag  */
261
#define DMA_FLAG_TC5                      (0x00020000U) /*!< Channel 5 transfer complete flag */
262
#define DMA_FLAG_HT5                      (0x00040000U) /*!< Channel 5 half transfer flag     */
263
#define DMA_FLAG_TE5                      (0x00080000U) /*!< Channel 5 transfer error flag    */
264
#define DMA_FLAG_GL6                      (0x00100000U) /*!< Channel 6 global interrupt flag  */
265
#define DMA_FLAG_TC6                      (0x00200000U) /*!< Channel 6 transfer complete flag */
266
#define DMA_FLAG_HT6                      (0x00400000U) /*!< Channel 6 half transfer flag     */
267
#define DMA_FLAG_TE6                      (0x00800000U) /*!< Channel 6 transfer error flag    */
268
#define DMA_FLAG_GL7                      (0x01000000U) /*!< Channel 7 global interrupt flag  */
269
#define DMA_FLAG_TC7                      (0x02000000U) /*!< Channel 7 transfer complete flag */
270
#define DMA_FLAG_HT7                      (0x04000000U) /*!< Channel 7 half transfer flag     */
271
#define DMA_FLAG_TE7                      (0x08000000U) /*!< Channel 7 transfer error flag    */
272
 
273
/**
274
  * @}
275
  */
276
 
277
#if defined(SYSCFG_CFGR1_DMA_RMP)
278
/** @defgroup HAL_DMA_remapping HAL DMA remapping
279
  *        Elements values convention: 0xYYYYYYYY
280
  *           - YYYYYYYY  : Position in the SYSCFG register CFGR1
281
  * @{  
282
  */
283
#define DMA_REMAP_ADC_DMA_CH2         ((uint32_t)SYSCFG_CFGR1_ADC_DMA_RMP) /*!< ADC DMA remap 
284
                                                                         0: No remap (ADC DMA requests mapped on DMA channel 1
285
                                                                         1: Remap (ADC DMA requests mapped on DMA channel 2 */
286
#define DMA_REMAP_USART1_TX_DMA_CH4   ((uint32_t)SYSCFG_CFGR1_USART1TX_DMA_RMP) /*!< USART1 TX DMA remap 
287
                                                                         0: No remap (USART1_TX DMA request mapped on DMA channel 2
288
                                                                         1: Remap (USART1_TX DMA request mapped on DMA channel 4 */
289
#define DMA_REMAP_USART1_RX_DMA_CH5   ((uint32_t)SYSCFG_CFGR1_USART1RX_DMA_RMP) /*!< USART1 RX DMA remap 
290
                                                                         0: No remap (USART1_RX DMA request mapped on DMA channel 3
291
                                                                         1: Remap (USART1_RX DMA request mapped on DMA channel 5 */
292
#define DMA_REMAP_TIM16_DMA_CH4       ((uint32_t)SYSCFG_CFGR1_TIM16_DMA_RMP) /*!< TIM16 DMA request remap
293
                                                                         0: No remap (TIM16_CH1 and TIM16_UP DMA requests mapped on DMA channel 3)
294
                                                                         1: Remap (TIM16_CH1 and TIM16_UP DMA requests mapped on DMA channel 4) */
295
#define DMA_REMAP_TIM17_DMA_CH2       ((uint32_t)SYSCFG_CFGR1_TIM17_DMA_RMP) /*!< TIM17 DMA request remap
296
                                                                         0: No remap (TIM17_CH1 and TIM17_UP DMA requests mapped on DMA channel 1
297
                                                                         1: Remap (TIM17_CH1 and TIM17_UP DMA requests mapped on DMA channel 2) */
298
#if defined (STM32F070xB)
299
#define DMA_REMAP_USART3_DMA_CH32     ((uint32_t)SYSCFG_CFGR1_USART3_DMA_RMP) /*!< USART3 DMA request remapping bit. Available on STM32F070xB devices only.
300
                                                                         0: Disabled, need to remap before use
301
                                                                         1: Remap (USART3_RX and USART3_TX DMA requests mapped on DMA channel 3 and 2 respectively) */
302
 
303
#endif
304
 
305
#if defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx)
306
#define DMA_REMAP_TIM16_DMA_CH6       ((uint32_t)SYSCFG_CFGR1_TIM16_DMA_RMP2) /*!< TIM16 alternate DMA request remapping bit. Available on STM32F07x devices only
307
                                                                         0: No alternate remap (TIM16 DMA requestsmapped according to TIM16_DMA_RMP bit)
308
                                                                         1: Alternate remap (TIM16_CH1 and TIM16_UP DMA requests mapped on DMA channel 6) */
309
#define DMA_REMAP_TIM17_DMA_CH7       ((uint32_t)SYSCFG_CFGR1_TIM17_DMA_RMP2) /*!< TIM17 alternate DMA request remapping bit. Available on STM32F07x devices only
310
                                                                         0: No alternate remap (TIM17 DMA requestsmapped according to TIM17_DMA_RMP bit)
311
                                                                         1: Alternate remap (TIM17_CH1 and TIM17_UP DMA requests mapped on DMA channel 7) */
312
#define DMA_REMAP_SPI2_DMA_CH67       ((uint32_t)SYSCFG_CFGR1_SPI2_DMA_RMP) /*!< SPI2 DMA request remapping bit. Available on STM32F07x devices only.
313
                                                                         0: No remap (SPI2_RX and SPI2_TX DMA requests mapped on DMA channel 4 and 5 respectively)
314
                                                                         1: Remap (SPI2_RX and SPI2_TX DMA requests mapped on DMA channel 6 and 7 respectively) */
315
#define DMA_REMAP_USART2_DMA_CH67     ((uint32_t)SYSCFG_CFGR1_USART2_DMA_RMP) /*!< USART2 DMA request remapping bit. Available on STM32F07x devices only.
316
                                                                         0: No remap (USART2_RX and USART2_TX DMA requests mapped on DMA channel 5 and 4 respectively)
317
                                                                         1: 1: Remap (USART2_RX and USART2_TX DMA requests mapped on DMA channel 6 and 7 respectively) */
318
#define DMA_REMAP_USART3_DMA_CH32     ((uint32_t)SYSCFG_CFGR1_USART3_DMA_RMP) /*!< USART3 DMA request remapping bit. Available on STM32F07x devices only.
319
                                                                         0: No remap (USART3_RX and USART3_TX DMA requests mapped on DMA channel 6 and 7 respectively)
320
                                                                         1: Remap (USART3_RX and USART3_TX DMA requests mapped on DMA channel 3 and 2 respectively) */
321
#define DMA_REMAP_I2C1_DMA_CH76       ((uint32_t)SYSCFG_CFGR1_I2C1_DMA_RMP) /*!< I2C1 DMA request remapping bit. Available on STM32F07x devices only.
322
                                                                         0: No remap (I2C1_RX and I2C1_TX DMA requests mapped on DMA channel 3 and 2 respectively)
323
                                                                         1: Remap (I2C1_RX and I2C1_TX DMA requests mapped on DMA channel 7 and 6 respectively) */
324
#define DMA_REMAP_TIM1_DMA_CH6        ((uint32_t)SYSCFG_CFGR1_TIM1_DMA_RMP) /*!< TIM1 DMA request remapping bit. Available on STM32F07x devices only.
325
                                                                         0: No remap (TIM1_CH1, TIM1_CH2 and TIM1_CH3 DMA requests mapped on DMA channel 2, 3 and 4 respectively)
326
                                                                         1: Remap (TIM1_CH1, TIM1_CH2 and TIM1_CH3 DMA requests mapped on DMA channel 6 */
327
#define DMA_REMAP_TIM2_DMA_CH7        ((uint32_t)SYSCFG_CFGR1_TIM2_DMA_RMP) /*!< TIM2 DMA request remapping bit. Available on STM32F07x devices only.
328
                                                                         0: No remap (TIM2_CH2 and TIM2_CH4 DMA requests mapped on DMA channel 3 and 4 respectively)
329
                                                                         1: Remap (TIM2_CH2 and TIM2_CH4 DMA requests mapped on DMA channel 7 */
330
#define DMA_REMAP_TIM3_DMA_CH6        ((uint32_t)SYSCFG_CFGR1_TIM3_DMA_RMP) /*!< TIM3 DMA request remapping bit. Available on STM32F07x devices only.
331
                                                                         0: No remap (TIM3_CH1 and TIM3_TRIG DMA requests mapped on DMA channel 4)
332
                                                                         1: Remap (TIM3_CH1 and TIM3_TRIG DMA requests mapped on DMA channel 6) */
333
#endif
334
 
335
/**
336
  * @}
337
  */
338
 
339
#endif /* SYSCFG_CFGR1_DMA_RMP */
340
/**
341
  * @}
342
  */
343
 
344
/* Exported macro ------------------------------------------------------------*/
345
/** @defgroup DMA_Exported_Macros DMA Exported Macros
346
  * @{
347
  */
348
 
349
/** @brief  Reset DMA handle state
350
  * @param  __HANDLE__ DMA handle.
351
  * @retval None
352
  */
353
#define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET)
354
 
355
/**
356
  * @brief  Enable the specified DMA Channel.
357
  * @param  __HANDLE__ DMA handle
358
  * @retval None
359
  */
360
#define __HAL_DMA_ENABLE(__HANDLE__)        ((__HANDLE__)->Instance->CCR |= DMA_CCR_EN)
361
 
362
/**
363
  * @brief  Disable the specified DMA Channel.
364
  * @param  __HANDLE__ DMA handle
365
  * @retval None
366
  */
367
#define __HAL_DMA_DISABLE(__HANDLE__)       ((__HANDLE__)->Instance->CCR &= ~DMA_CCR_EN)
368
 
369
 
370
/* Interrupt & Flag management */
371
 
372
/**
373
  * @brief  Enables the specified DMA Channel interrupts.
374
  * @param  __HANDLE__ DMA handle
375
  * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled.
376
  *          This parameter can be any combination of the following values:
377
  *            @arg DMA_IT_TC:  Transfer complete interrupt mask
378
  *            @arg DMA_IT_HT:  Half transfer complete interrupt mask
379
  *            @arg DMA_IT_TE:  Transfer error interrupt mask
380
  * @retval None
381
  */
382
#define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__)   ((__HANDLE__)->Instance->CCR |= (__INTERRUPT__))
383
 
384
/**
385
  * @brief  Disables the specified DMA Channel interrupts.
386
  * @param  __HANDLE__ DMA handle
387
  * @param __INTERRUPT__ specifies the DMA interrupt sources to be enabled or disabled.
388
  *          This parameter can be any combination of the following values:
389
  *            @arg DMA_IT_TC:  Transfer complete interrupt mask
390
  *            @arg DMA_IT_HT:  Half transfer complete interrupt mask
391
  *            @arg DMA_IT_TE:  Transfer error interrupt mask
392
  * @retval None
393
  */
394
#define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__)  ((__HANDLE__)->Instance->CCR &= ~(__INTERRUPT__))
395
 
396
/**
397
  * @brief  Checks whether the specified DMA Channel interrupt is enabled or disabled.
398
  * @param  __HANDLE__ DMA handle
399
  * @param  __INTERRUPT__ specifies the DMA interrupt source to check.
400
  *          This parameter can be one of the following values:
401
  *            @arg DMA_IT_TC:  Transfer complete interrupt mask
402
  *            @arg DMA_IT_HT:  Half transfer complete interrupt mask
403
  *            @arg DMA_IT_TE:  Transfer error interrupt mask
404
  * @retval The state of DMA_IT (SET or RESET).
405
  */
406
#define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  (((__HANDLE__)->Instance->CCR & (__INTERRUPT__)))
407
 
408
/**
409
  * @brief  Returns the number of remaining data units in the current DMAy Channelx transfer.
410
  * @param  __HANDLE__ DMA handle
411
  *  
412
  * @retval The number of remaining data units in the current DMA Channel transfer.
413
  */
414
#define __HAL_DMA_GET_COUNTER(__HANDLE__) ((__HANDLE__)->Instance->CNDTR)
415
 
416
#if defined(SYSCFG_CFGR1_DMA_RMP)
417
/** @brief  DMA remapping enable/disable macros
418
  * @param __DMA_REMAP__ This parameter can be a value of @ref HAL_DMA_remapping
419
  */
420
#define __HAL_DMA_REMAP_CHANNEL_ENABLE(__DMA_REMAP__)   do {assert_param(IS_DMA_REMAP((__DMA_REMAP__)));                  \
421
                                                           SYSCFG->CFGR1 |= (__DMA_REMAP__);                              \
422
                                                         }while(0)
423
#define __HAL_DMA_REMAP_CHANNEL_DISABLE(__DMA_REMAP__)  do {assert_param(IS_DMA_REMAP((__DMA_REMAP__)));                  \
424
                                                           SYSCFG->CFGR1 &= ~(__DMA_REMAP__);                             \
425
                                                         }while(0)
426
#endif /* SYSCFG_CFGR1_DMA_RMP */
427
 
428
/**
429
  * @}
430
  */
431
 
432
/* Include DMA HAL Extension module */
433
#include "stm32f0xx_hal_dma_ex.h"   
434
 
435
/* Exported functions --------------------------------------------------------*/
436
/** @addtogroup DMA_Exported_Functions
437
  * @{
438
  */
439
 
440
/** @addtogroup DMA_Exported_Functions_Group1
441
  * @{
442
  */
443
/* Initialization and de-initialization functions *****************************/
444
HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma);
445
HAL_StatusTypeDef HAL_DMA_DeInit (DMA_HandleTypeDef *hdma);
446
/**
447
  * @}
448
  */
449
 
450
/** @addtogroup DMA_Exported_Functions_Group2
451
  * @{
452
  */
453
/* Input and Output operation functions *****************************************************/
454
HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
455
HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
456
HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);
457
HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma);
458
HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, uint32_t CompleteLevel, uint32_t Timeout);
459
void HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);
460
HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)( DMA_HandleTypeDef * _hdma));
461
HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID);
462
 
463
/**
464
  * @}
465
  */
466
 
467
/** @addtogroup DMA_Exported_Functions_Group3
468
  * @{
469
  */
470
/* Peripheral State and Error functions ***************************************/
471
HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);
472
uint32_t             HAL_DMA_GetError(DMA_HandleTypeDef *hdma);
473
/**
474
  * @}
475
  */
476
 
477
/**
478
  * @}
479
  */
480
 
481
/** @addtogroup DMA_Private_Macros
482
  * @{
483
  */
484
#define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \
485
                                     ((DIRECTION) == DMA_MEMORY_TO_PERIPH)  || \
486
                                     ((DIRECTION) == DMA_MEMORY_TO_MEMORY)) 
487
#define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \
488
                                            ((STATE) == DMA_PINC_DISABLE))
489
 
490
#define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE)  || \
491
                                        ((STATE) == DMA_MINC_DISABLE))
492
 
493
#define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE)     || \
494
                                           ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \
495
                                           ((SIZE) == DMA_PDATAALIGN_WORD))
496
 
497
#define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE)     || \
498
                                       ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \
499
                                       ((SIZE) == DMA_MDATAALIGN_WORD ))
500
 
501
#define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL )  || \
502
                           ((MODE) == DMA_CIRCULAR))
503
#define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW )   || \
504
                                   ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \
505
                                   ((PRIORITY) == DMA_PRIORITY_HIGH)   || \
506
                                   ((PRIORITY) == DMA_PRIORITY_VERY_HIGH)) 
507
#define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x1U) && ((SIZE) < 0x10000U))
508
 
509
#if defined(SYSCFG_CFGR1_DMA_RMP)
510
 
511
#if defined (STM32F071xB) || defined (STM32F072xB) || defined (STM32F078xx)
512
#define IS_DMA_REMAP(RMP) (((RMP) == DMA_REMAP_ADC_DMA_CH2)          || \
513
                              ((RMP) == DMA_REMAP_USART1_TX_DMA_CH4) || \
514
                              ((RMP) == DMA_REMAP_USART1_RX_DMA_CH5) || \
515
                              ((RMP) == DMA_REMAP_TIM16_DMA_CH4)     || \
516
                              ((RMP) == DMA_REMAP_TIM17_DMA_CH2)     || \
517
                              ((RMP) == DMA_REMAP_TIM16_DMA_CH6)     || \
518
                              ((RMP) == DMA_REMAP_TIM17_DMA_CH7)     || \
519
                              ((RMP) == DMA_REMAP_SPI2_DMA_CH67)     || \
520
                              ((RMP) == DMA_REMAP_USART2_DMA_CH67)   || \
521
                              ((RMP) == DMA_REMAP_USART3_DMA_CH32)   || \
522
                              ((RMP) == DMA_REMAP_I2C1_DMA_CH76)     || \
523
                              ((RMP) == DMA_REMAP_TIM1_DMA_CH6)      || \
524
                              ((RMP) == DMA_REMAP_TIM2_DMA_CH7)      || \
525
                              ((RMP) == DMA_REMAP_TIM3_DMA_CH6))
526
#elif defined (STM32F070xB)
527
#define IS_DMA_REMAP(RMP)     (((RMP) == DMA_REMAP_USART3_DMA_CH32)  || \
528
                              ((RMP) == DMA_REMAP_ADC_DMA_CH2)       || \
529
                              ((RMP) == DMA_REMAP_USART1_TX_DMA_CH4) || \
530
                              ((RMP) == DMA_REMAP_USART1_RX_DMA_CH5) || \
531
                              ((RMP) == DMA_REMAP_TIM16_DMA_CH4)     || \
532
                              ((RMP) == DMA_REMAP_TIM17_DMA_CH2))
533
#else
534
#define IS_DMA_REMAP(RMP)     (((RMP) == DMA_REMAP_ADC_DMA_CH2)      || \
535
                              ((RMP) == DMA_REMAP_USART1_TX_DMA_CH4) || \
536
                              ((RMP) == DMA_REMAP_USART1_RX_DMA_CH5) || \
537
                              ((RMP) == DMA_REMAP_TIM16_DMA_CH4)     || \
538
                              ((RMP) == DMA_REMAP_TIM17_DMA_CH2))
539
#endif
540
 
541
#endif /* SYSCFG_CFGR1_DMA_RMP */  
542
 
543
 
544
/**
545
  * @}
546
  */
547
 
548
/**
549
  * @}
550
  */
551
 
552
/**
553
  * @}
554
  */
555
 
556
#ifdef __cplusplus
557
}
558
#endif
559
 
560
#endif /* __STM32F0xx_HAL_DMA_H */
561
 
562
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
563