Subversion Repositories EDIS_Ignition

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
18 mjames 1
/**
2
  ******************************************************************************
3
  * @file    stm32f1xx_hal_dma_ex.h
4
  * @author  MCD Application Team
5
  * @brief   Header file of DMA HAL extension module.
6
  ******************************************************************************
7
  * @attention
8
  *
9
  * Copyright (c) 2016 STMicroelectronics.
10
  * All rights reserved.
11
  *
12
  * This software is licensed under terms that can be found in the LICENSE file in
13
  * the root directory of this software component.
14
  * If no LICENSE file comes with this software, it is provided AS-IS.
15
  *
16
  ******************************************************************************
17
  */
18
 
19
/* Define to prevent recursive inclusion -------------------------------------*/
20
#ifndef __STM32F1xx_HAL_DMA_EX_H
21
#define __STM32F1xx_HAL_DMA_EX_H
22
 
23
#ifdef __cplusplus
24
 extern "C" {
25
#endif
26
 
27
/* Includes ------------------------------------------------------------------*/
28
#include "stm32f1xx_hal_def.h"
29
 
30
/** @addtogroup STM32F1xx_HAL_Driver
31
  * @{
32
  */
33
 
34
/** @defgroup DMAEx DMAEx
35
  * @{
36
  */
37
 
38
/* Exported types ------------------------------------------------------------*/
39
/* Exported constants --------------------------------------------------------*/
40
/* Exported macro ------------------------------------------------------------*/
41
/** @defgroup DMAEx_Exported_Macros DMA Extended Exported Macros
42
  * @{
43
  */
44
/* Interrupt & Flag management */
45
#if defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || \
46
    defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC)
47
/** @defgroup DMAEx_High_density_XL_density_Product_devices DMAEx High density and XL density product devices
48
  * @{
49
  */
50
 
51
/**
52
  * @brief  Returns the current DMA Channel transfer complete flag.
53
  * @param  __HANDLE__: DMA handle
54
  * @retval The specified transfer complete flag index.
55
  */
56
#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \
57
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\
58
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\
59
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\
60
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\
61
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\
62
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\
63
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TC7 :\
64
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TC1 :\
65
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TC2 :\
66
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TC3 :\
67
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TC4 :\
68
   DMA_FLAG_TC5)
69
 
70
/**
71
  * @brief  Returns the current DMA Channel half transfer complete flag.
72
  * @param  __HANDLE__: DMA handle
73
  * @retval The specified half transfer complete flag index.
74
  */      
75
#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\
76
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\
77
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\
78
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\
79
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\
80
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\
81
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\
82
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_HT7 :\
83
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_HT1 :\
84
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_HT2 :\
85
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_HT3 :\
86
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_HT4 :\
87
   DMA_FLAG_HT5)
88
 
89
/**
90
  * @brief  Returns the current DMA Channel transfer error flag.
91
  * @param  __HANDLE__: DMA handle
92
  * @retval The specified transfer error flag index.
93
  */
94
#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\
95
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\
96
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\
97
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\
98
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\
99
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\
100
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\
101
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TE7 :\
102
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TE1 :\
103
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TE2 :\
104
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TE3 :\
105
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TE4 :\
106
   DMA_FLAG_TE5)
107
 
108
/**
109
  * @brief  Return the current DMA Channel Global interrupt flag.
110
  * @param  __HANDLE__: DMA handle
111
  * @retval The specified transfer error flag index.
112
  */
113
#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__)\
114
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GL1 :\
115
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GL2 :\
116
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GL3 :\
117
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GL4 :\
118
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_GL5 :\
119
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_GL6 :\
120
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_GL7 :\
121
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_GL1 :\
122
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_GL2 :\
123
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_GL3 :\
124
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_GL4 :\
125
   DMA_FLAG_GL5)
126
 
127
/**
128
  * @brief  Get the DMA Channel pending flags.
129
  * @param  __HANDLE__: DMA handle
130
  * @param  __FLAG__: Get the specified flag.
131
  *          This parameter can be any combination of the following values:
132
  *            @arg DMA_FLAG_TCx:  Transfer complete flag
133
  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
134
  *            @arg DMA_FLAG_TEx:  Transfer error flag
135
  *         Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag.  
136
  * @retval The state of FLAG (SET or RESET).
137
  */
138
#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\
139
(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->ISR & (__FLAG__)) :\
140
  (DMA1->ISR & (__FLAG__)))
141
 
142
/**
143
  * @brief  Clears the DMA Channel pending flags.
144
  * @param  __HANDLE__: DMA handle
145
  * @param  __FLAG__: specifies the flag to clear.
146
  *          This parameter can be any combination of the following values:
147
  *            @arg DMA_FLAG_TCx:  Transfer complete flag
148
  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
149
  *            @arg DMA_FLAG_TEx:  Transfer error flag
150
  *         Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag.  
151
  * @retval None
152
  */
153
#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \
154
(((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->IFCR = (__FLAG__)) :\
155
  (DMA1->IFCR = (__FLAG__)))
156
 
157
/**
158
  * @}
159
  */
160
 
161
#else
162
/** @defgroup DMA_Low_density_Medium_density_Product_devices DMA Low density and Medium density product devices
163
  * @{
164
  */
165
 
166
/**
167
  * @brief  Returns the current DMA Channel transfer complete flag.
168
  * @param  __HANDLE__: DMA handle
169
  * @retval The specified transfer complete flag index.
170
  */
171
#define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \
172
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\
173
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\
174
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\
175
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\
176
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\
177
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\
178
   DMA_FLAG_TC7)
179
 
180
/**
181
  * @brief  Return the current DMA Channel half transfer complete flag.
182
  * @param  __HANDLE__: DMA handle
183
  * @retval The specified half transfer complete flag index.
184
  */
185
#define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\
186
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\
187
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\
188
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\
189
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\
190
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\
191
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\
192
   DMA_FLAG_HT7)
193
 
194
/**
195
  * @brief  Return the current DMA Channel transfer error flag.
196
  * @param  __HANDLE__: DMA handle
197
  * @retval The specified transfer error flag index.
198
  */
199
#define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\
200
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\
201
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\
202
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\
203
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\
204
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\
205
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\
206
   DMA_FLAG_TE7)
207
 
208
/**
209
  * @brief  Return the current DMA Channel Global interrupt flag.
210
  * @param  __HANDLE__: DMA handle
211
  * @retval The specified transfer error flag index.
212
  */
213
#define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__)\
214
(((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GL1 :\
215
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GL2 :\
216
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GL3 :\
217
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GL4 :\
218
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_GL5 :\
219
 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_GL6 :\
220
   DMA_FLAG_GL7)
221
 
222
/**
223
  * @brief  Get the DMA Channel pending flags.
224
  * @param  __HANDLE__: DMA handle
225
  * @param  __FLAG__: Get the specified flag.
226
  *          This parameter can be any combination of the following values:
227
  *            @arg DMA_FLAG_TCx:  Transfer complete flag
228
  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
229
  *            @arg DMA_FLAG_TEx:  Transfer error flag
230
  *            @arg DMA_FLAG_GLx:  Global interrupt flag
231
  *         Where x can be 1_7 to select the DMA Channel flag.  
232
  * @retval The state of FLAG (SET or RESET).
233
  */
234
 
235
#define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)   (DMA1->ISR & (__FLAG__))
236
 
237
/**
238
  * @brief  Clear the DMA Channel pending flags.
239
  * @param  __HANDLE__: DMA handle
240
  * @param  __FLAG__: specifies the flag to clear.
241
  *          This parameter can be any combination of the following values:
242
  *            @arg DMA_FLAG_TCx:  Transfer complete flag
243
  *            @arg DMA_FLAG_HTx:  Half transfer complete flag
244
  *            @arg DMA_FLAG_TEx:  Transfer error flag
245
  *            @arg DMA_FLAG_GLx:  Global interrupt flag
246
  *         Where x can be 1_7 to select the DMA Channel flag.  
247
  * @retval None
248
  */
249
#define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR = (__FLAG__))
250
 
251
/**
252
  * @}
253
  */
254
 
255
#endif
256
 
257
/**
258
  * @}
259
  */
260
 
261
/**
262
  * @}
263
  */
264
 
265
/**
266
  * @}
267
  */
268
 
269
#ifdef __cplusplus
270
}
271
#endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || */
272
       /* STM32F103xG || STM32F105xC || STM32F107xC */
273
 
274
#endif /* __STM32F1xx_HAL_DMA_H */
275