1 | /** |
---|
2 | ****************************************************************************** |
---|
3 | * @file stm32g0xx_ll_dma.h |
---|
4 | * @author MCD Application Team |
---|
5 | * @brief Header file of DMA LL module. |
---|
6 | ****************************************************************************** |
---|
7 | * @attention |
---|
8 | * |
---|
9 | * Copyright (c) 2018 STMicroelectronics. |
---|
10 | * All rights reserved. |
---|
11 | * |
---|
12 | * This software is licensed under terms that can be found in the LICENSE file |
---|
13 | * in 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 STM32G0xx_LL_DMA_H |
---|
21 | #define STM32G0xx_LL_DMA_H |
---|
22 | |
---|
23 | #ifdef __cplusplus |
---|
24 | extern "C" { |
---|
25 | #endif |
---|
26 | |
---|
27 | /* Includes ------------------------------------------------------------------*/ |
---|
28 | #include "stm32g0xx.h" |
---|
29 | #include "stm32g0xx_ll_dmamux.h" |
---|
30 | |
---|
31 | /** @addtogroup STM32G0xx_LL_Driver |
---|
32 | * @{ |
---|
33 | */ |
---|
34 | |
---|
35 | #if defined (DMA1) || defined (DMA2) |
---|
36 | |
---|
37 | /** @defgroup DMA_LL DMA |
---|
38 | * @{ |
---|
39 | */ |
---|
40 | |
---|
41 | /* Private types -------------------------------------------------------------*/ |
---|
42 | /* Private variables ---------------------------------------------------------*/ |
---|
43 | /** @defgroup DMA_LL_Private_Variables DMA Private Variables |
---|
44 | * @{ |
---|
45 | */ |
---|
46 | /* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */ |
---|
47 | static const uint8_t CHANNEL_OFFSET_TAB[] = |
---|
48 | { |
---|
49 | (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), |
---|
50 | (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), |
---|
51 | (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), |
---|
52 | (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), |
---|
53 | (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), |
---|
54 | #if defined(DMA1_Channel6_BASE) |
---|
55 | (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), |
---|
56 | #endif /* DMA1_Channel6_BASE */ |
---|
57 | #if defined(DMA1_Channel7_BASE) |
---|
58 | (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE), |
---|
59 | #endif /* DMA1_Channel7_BASE */ |
---|
60 | }; |
---|
61 | /** |
---|
62 | * @} |
---|
63 | */ |
---|
64 | |
---|
65 | /* Private constants ---------------------------------------------------------*/ |
---|
66 | /* Private macros ------------------------------------------------------------*/ |
---|
67 | |
---|
68 | /** @defgroup DMA_LL_Private_Macros DMA Private Macros |
---|
69 | * @{ |
---|
70 | */ |
---|
71 | /** |
---|
72 | * @brief Helper macro to convert DMA Instance DMAx into DMAMUX channel |
---|
73 | * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. |
---|
74 | * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). |
---|
75 | * @param __DMA_INSTANCE__ DMAx |
---|
76 | * @retval Channel_Offset (LL_DMA_CHANNEL_7 or 0). |
---|
77 | */ |
---|
78 | #define __LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(__DMA_INSTANCE__) \ |
---|
79 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) ? 0 : LL_DMA_CHANNEL_7) |
---|
80 | /** |
---|
81 | * @} |
---|
82 | */ |
---|
83 | /* Exported types ------------------------------------------------------------*/ |
---|
84 | #if defined(USE_FULL_LL_DRIVER) |
---|
85 | /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure |
---|
86 | * @{ |
---|
87 | */ |
---|
88 | typedef struct |
---|
89 | { |
---|
90 | uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer |
---|
91 | or as Source base address in case of memory to memory transfer direction. |
---|
92 | |
---|
93 | This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ |
---|
94 | |
---|
95 | uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer |
---|
96 | or as Destination base address in case of memory to memory transfer direction. |
---|
97 | |
---|
98 | This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ |
---|
99 | |
---|
100 | uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, |
---|
101 | from memory to memory or from peripheral to memory. |
---|
102 | This parameter can be a value of @ref DMA_LL_EC_DIRECTION |
---|
103 | |
---|
104 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ |
---|
105 | |
---|
106 | uint32_t Mode; /*!< Specifies the normal or circular operation mode. |
---|
107 | This parameter can be a value of @ref DMA_LL_EC_MODE |
---|
108 | @note: The circular buffer mode cannot be used if the memory to memory |
---|
109 | data transfer direction is configured on the selected Channel |
---|
110 | |
---|
111 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ |
---|
112 | |
---|
113 | uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction |
---|
114 | is incremented or not. |
---|
115 | This parameter can be a value of @ref DMA_LL_EC_PERIPH |
---|
116 | |
---|
117 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ |
---|
118 | |
---|
119 | uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction |
---|
120 | is incremented or not. |
---|
121 | This parameter can be a value of @ref DMA_LL_EC_MEMORY |
---|
122 | |
---|
123 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ |
---|
124 | |
---|
125 | uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) |
---|
126 | in case of memory to memory transfer direction. |
---|
127 | This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN |
---|
128 | |
---|
129 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ |
---|
130 | |
---|
131 | uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) |
---|
132 | in case of memory to memory transfer direction. |
---|
133 | This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN |
---|
134 | |
---|
135 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ |
---|
136 | |
---|
137 | uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. |
---|
138 | The data unit is equal to the source buffer configuration set in PeripheralSize |
---|
139 | or MemorySize parameters depending in the transfer direction. |
---|
140 | This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF |
---|
141 | |
---|
142 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ |
---|
143 | |
---|
144 | uint32_t PeriphRequest; /*!< Specifies the peripheral request. |
---|
145 | This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST |
---|
146 | |
---|
147 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */ |
---|
148 | |
---|
149 | uint32_t Priority; /*!< Specifies the channel priority level. |
---|
150 | This parameter can be a value of @ref DMA_LL_EC_PRIORITY |
---|
151 | |
---|
152 | This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ |
---|
153 | |
---|
154 | } LL_DMA_InitTypeDef; |
---|
155 | /** |
---|
156 | * @} |
---|
157 | */ |
---|
158 | #endif /*USE_FULL_LL_DRIVER*/ |
---|
159 | |
---|
160 | /* Exported constants --------------------------------------------------------*/ |
---|
161 | /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants |
---|
162 | * @{ |
---|
163 | */ |
---|
164 | /** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines |
---|
165 | * @brief Flags defines which can be used with LL_DMA_WriteReg function |
---|
166 | * @{ |
---|
167 | */ |
---|
168 | #define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ |
---|
169 | #define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ |
---|
170 | #define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ |
---|
171 | #define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ |
---|
172 | #define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ |
---|
173 | #define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ |
---|
174 | #define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ |
---|
175 | #define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ |
---|
176 | #define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ |
---|
177 | #define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ |
---|
178 | #define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ |
---|
179 | #define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ |
---|
180 | #define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ |
---|
181 | #define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ |
---|
182 | #define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ |
---|
183 | #define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ |
---|
184 | #define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ |
---|
185 | #define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ |
---|
186 | #define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ |
---|
187 | #define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ |
---|
188 | #if defined(DMA1_Channel6) |
---|
189 | #define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ |
---|
190 | #define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ |
---|
191 | #define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ |
---|
192 | #define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ |
---|
193 | #endif /* DMA1_Channel6 */ |
---|
194 | #if defined(DMA1_Channel7) |
---|
195 | #define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ |
---|
196 | #define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ |
---|
197 | #define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ |
---|
198 | #define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ |
---|
199 | #endif /* DMA1_Channel7 */ |
---|
200 | /** |
---|
201 | * @} |
---|
202 | */ |
---|
203 | |
---|
204 | /** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines |
---|
205 | * @brief Flags defines which can be used with LL_DMA_ReadReg function |
---|
206 | * @{ |
---|
207 | */ |
---|
208 | #define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ |
---|
209 | #define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ |
---|
210 | #define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ |
---|
211 | #define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ |
---|
212 | #define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ |
---|
213 | #define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ |
---|
214 | #define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ |
---|
215 | #define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ |
---|
216 | #define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ |
---|
217 | #define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ |
---|
218 | #define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ |
---|
219 | #define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ |
---|
220 | #define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ |
---|
221 | #define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ |
---|
222 | #define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ |
---|
223 | #define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ |
---|
224 | #define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ |
---|
225 | #define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ |
---|
226 | #define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ |
---|
227 | #define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ |
---|
228 | #if defined(DMA1_Channel6) |
---|
229 | #define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ |
---|
230 | #define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ |
---|
231 | #define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ |
---|
232 | #define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ |
---|
233 | #endif /* DMA1_Channel6 */ |
---|
234 | #if defined(DMA1_Channel7) |
---|
235 | #define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ |
---|
236 | #define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ |
---|
237 | #define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ |
---|
238 | #define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ |
---|
239 | #endif /* DMA1_Channel7 */ |
---|
240 | /** |
---|
241 | * @} |
---|
242 | */ |
---|
243 | |
---|
244 | /** @defgroup DMA_LL_EC_IT IT Defines |
---|
245 | * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions |
---|
246 | * @{ |
---|
247 | */ |
---|
248 | #define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ |
---|
249 | #define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ |
---|
250 | #define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ |
---|
251 | /** |
---|
252 | * @} |
---|
253 | */ |
---|
254 | |
---|
255 | /** @defgroup DMA_LL_EC_CHANNEL CHANNEL |
---|
256 | * @{ |
---|
257 | */ |
---|
258 | #define LL_DMA_CHANNEL_1 0x00000000U /*!< DMA Channel 1 */ |
---|
259 | #define LL_DMA_CHANNEL_2 0x00000001U /*!< DMA Channel 2 */ |
---|
260 | #define LL_DMA_CHANNEL_3 0x00000002U /*!< DMA Channel 3 */ |
---|
261 | #define LL_DMA_CHANNEL_4 0x00000003U /*!< DMA Channel 4 */ |
---|
262 | #define LL_DMA_CHANNEL_5 0x00000004U /*!< DMA Channel 5 */ |
---|
263 | #if defined(DMA1_Channel6) |
---|
264 | #define LL_DMA_CHANNEL_6 0x00000005U /*!< DMA Channel 6 */ |
---|
265 | #endif /* DMA1_Channel6 */ |
---|
266 | #if defined(DMA1_Channel7) |
---|
267 | #define LL_DMA_CHANNEL_7 0x00000006U /*!< DMA Channel 7 */ |
---|
268 | #endif /* DMA1_Channel7 */ |
---|
269 | #if defined(USE_FULL_LL_DRIVER) |
---|
270 | #define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ |
---|
271 | #endif /*USE_FULL_LL_DRIVER*/ |
---|
272 | /** |
---|
273 | * @} |
---|
274 | */ |
---|
275 | |
---|
276 | /** @defgroup DMA_LL_EC_DIRECTION Transfer Direction |
---|
277 | * @{ |
---|
278 | */ |
---|
279 | #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ |
---|
280 | #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ |
---|
281 | #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ |
---|
282 | /** |
---|
283 | * @} |
---|
284 | */ |
---|
285 | |
---|
286 | /** @defgroup DMA_LL_EC_MODE Transfer mode |
---|
287 | * @{ |
---|
288 | */ |
---|
289 | #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ |
---|
290 | #define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ |
---|
291 | /** |
---|
292 | * @} |
---|
293 | */ |
---|
294 | |
---|
295 | /** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode |
---|
296 | * @{ |
---|
297 | */ |
---|
298 | #define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ |
---|
299 | #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ |
---|
300 | /** |
---|
301 | * @} |
---|
302 | */ |
---|
303 | |
---|
304 | /** @defgroup DMA_LL_EC_MEMORY Memory increment mode |
---|
305 | * @{ |
---|
306 | */ |
---|
307 | #define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ |
---|
308 | #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ |
---|
309 | /** |
---|
310 | * @} |
---|
311 | */ |
---|
312 | |
---|
313 | /** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment |
---|
314 | * @{ |
---|
315 | */ |
---|
316 | #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ |
---|
317 | #define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ |
---|
318 | #define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ |
---|
319 | /** |
---|
320 | * @} |
---|
321 | */ |
---|
322 | |
---|
323 | /** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment |
---|
324 | * @{ |
---|
325 | */ |
---|
326 | #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ |
---|
327 | #define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ |
---|
328 | #define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ |
---|
329 | /** |
---|
330 | * @} |
---|
331 | */ |
---|
332 | |
---|
333 | /** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level |
---|
334 | * @{ |
---|
335 | */ |
---|
336 | #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ |
---|
337 | #define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ |
---|
338 | #define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ |
---|
339 | #define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ |
---|
340 | /** |
---|
341 | * @} |
---|
342 | */ |
---|
343 | |
---|
344 | /** |
---|
345 | * @} |
---|
346 | */ |
---|
347 | |
---|
348 | /* Exported macro ------------------------------------------------------------*/ |
---|
349 | /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros |
---|
350 | * @{ |
---|
351 | */ |
---|
352 | |
---|
353 | /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros |
---|
354 | * @{ |
---|
355 | */ |
---|
356 | /** |
---|
357 | * @brief Write a value in DMA register |
---|
358 | * @param __INSTANCE__ DMA Instance |
---|
359 | * @param __REG__ Register to be written |
---|
360 | * @param __VALUE__ Value to be written in the register |
---|
361 | * @retval None |
---|
362 | */ |
---|
363 | #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) |
---|
364 | |
---|
365 | /** |
---|
366 | * @brief Read a value in DMA register |
---|
367 | * @param __INSTANCE__ DMA Instance |
---|
368 | * @param __REG__ Register to be read |
---|
369 | * @retval Register value |
---|
370 | */ |
---|
371 | #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) |
---|
372 | /** |
---|
373 | * @} |
---|
374 | */ |
---|
375 | |
---|
376 | /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely |
---|
377 | * @{ |
---|
378 | */ |
---|
379 | /** |
---|
380 | * @brief Convert DMAx_Channely into DMAx |
---|
381 | * @param __CHANNEL_INSTANCE__ DMAx_Channely |
---|
382 | * @retval DMAx |
---|
383 | */ |
---|
384 | #if defined(DMA2) |
---|
385 | #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ |
---|
386 | (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) |
---|
387 | #else /* DMA1 */ |
---|
388 | #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) |
---|
389 | #endif /* DMA2 */ |
---|
390 | |
---|
391 | /** |
---|
392 | * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y |
---|
393 | * @param __CHANNEL_INSTANCE__ DMAx_Channely |
---|
394 | * @retval LL_DMA_CHANNEL_y |
---|
395 | */ |
---|
396 | #if defined(DMA2) |
---|
397 | #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ |
---|
398 | (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ |
---|
399 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ |
---|
400 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ |
---|
401 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ |
---|
402 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ |
---|
403 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ |
---|
404 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ |
---|
405 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ |
---|
406 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ |
---|
407 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ |
---|
408 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ |
---|
409 | LL_DMA_CHANNEL_7) |
---|
410 | #else /* DMA1 */ |
---|
411 | #if defined(DMA1_Channel7) |
---|
412 | #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ |
---|
413 | (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ |
---|
414 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ |
---|
415 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ |
---|
416 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ |
---|
417 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ |
---|
418 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ |
---|
419 | LL_DMA_CHANNEL_7) |
---|
420 | #else |
---|
421 | #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ |
---|
422 | (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ |
---|
423 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ |
---|
424 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ |
---|
425 | ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ |
---|
426 | LL_DMA_CHANNEL_5) |
---|
427 | #endif /* DMA1_Channel8 */ |
---|
428 | #endif /* DMA2 */ |
---|
429 | |
---|
430 | /** |
---|
431 | * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely |
---|
432 | * @param __DMA_INSTANCE__ DMAx |
---|
433 | * @param __CHANNEL__ LL_DMA_CHANNEL_y |
---|
434 | * @retval DMAx_Channely |
---|
435 | */ |
---|
436 | #if defined(DMA2) |
---|
437 | #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ |
---|
438 | ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ |
---|
439 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ |
---|
440 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ |
---|
441 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ |
---|
442 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ |
---|
443 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ |
---|
444 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ |
---|
445 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ |
---|
446 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ |
---|
447 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ |
---|
448 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ |
---|
449 | DMA1_Channel7) |
---|
450 | #else /* DMA1 */ |
---|
451 | #if defined(DMA1_Channel7) |
---|
452 | #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ |
---|
453 | ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ |
---|
454 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ |
---|
455 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ |
---|
456 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ |
---|
457 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ |
---|
458 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ |
---|
459 | DMA1_Channel7) |
---|
460 | #else |
---|
461 | #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ |
---|
462 | ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ |
---|
463 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ |
---|
464 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ |
---|
465 | (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ |
---|
466 | DMA1_Channel5) |
---|
467 | #endif /* DMA1_Channel8 */ |
---|
468 | #endif /* DMA2 */ |
---|
469 | |
---|
470 | /** |
---|
471 | * @} |
---|
472 | */ |
---|
473 | |
---|
474 | /** |
---|
475 | * @} |
---|
476 | */ |
---|
477 | |
---|
478 | /* Exported functions --------------------------------------------------------*/ |
---|
479 | /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions |
---|
480 | * @{ |
---|
481 | */ |
---|
482 | |
---|
483 | /** @defgroup DMA_LL_EF_Configuration Configuration |
---|
484 | * @{ |
---|
485 | */ |
---|
486 | /** |
---|
487 | * @brief Enable DMA channel. |
---|
488 | * @rmtoll CCR EN LL_DMA_EnableChannel |
---|
489 | * @param DMAx DMAx Instance |
---|
490 | * @param Channel This parameter can be one of the following values: |
---|
491 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
492 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
493 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
494 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
495 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
496 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
497 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
498 | * @retval None |
---|
499 | */ |
---|
500 | __STATIC_INLINE void LL_DMA_EnableChannel(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
501 | { |
---|
502 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
503 | SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN); |
---|
504 | } |
---|
505 | |
---|
506 | /** |
---|
507 | * @brief Disable DMA channel. |
---|
508 | * @rmtoll CCR EN LL_DMA_DisableChannel |
---|
509 | * @param DMAx DMAx Instance |
---|
510 | * @param Channel This parameter can be one of the following values: |
---|
511 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
512 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
513 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
514 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
515 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
516 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
517 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
518 | * @retval None |
---|
519 | */ |
---|
520 | __STATIC_INLINE void LL_DMA_DisableChannel(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
521 | { |
---|
522 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
523 | CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN); |
---|
524 | } |
---|
525 | |
---|
526 | /** |
---|
527 | * @brief Check if DMA channel is enabled or disabled. |
---|
528 | * @rmtoll CCR EN LL_DMA_IsEnabledChannel |
---|
529 | * @param DMAx DMAx Instance |
---|
530 | * @param Channel This parameter can be one of the following values: |
---|
531 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
532 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
533 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
534 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
535 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
536 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
537 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
538 | * @retval State of bit (1 or 0). |
---|
539 | */ |
---|
540 | __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
541 | { |
---|
542 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
543 | return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
544 | DMA_CCR_EN) == (DMA_CCR_EN)) ? 1UL : 0UL); |
---|
545 | } |
---|
546 | |
---|
547 | /** |
---|
548 | * @brief Configure all parameters link to DMA transfer. |
---|
549 | * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n |
---|
550 | * CCR MEM2MEM LL_DMA_ConfigTransfer\n |
---|
551 | * CCR CIRC LL_DMA_ConfigTransfer\n |
---|
552 | * CCR PINC LL_DMA_ConfigTransfer\n |
---|
553 | * CCR MINC LL_DMA_ConfigTransfer\n |
---|
554 | * CCR PSIZE LL_DMA_ConfigTransfer\n |
---|
555 | * CCR MSIZE LL_DMA_ConfigTransfer\n |
---|
556 | * CCR PL LL_DMA_ConfigTransfer |
---|
557 | * @param DMAx DMAx Instance |
---|
558 | * @param Channel This parameter can be one of the following values: |
---|
559 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
560 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
561 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
562 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
563 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
564 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
565 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
566 | * @param Configuration This parameter must be a combination of all the following values: |
---|
567 | * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY |
---|
568 | * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR |
---|
569 | * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT |
---|
570 | * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT |
---|
571 | * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD |
---|
572 | * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD |
---|
573 | * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH |
---|
574 | * @retval None |
---|
575 | */ |
---|
576 | __STATIC_INLINE void LL_DMA_ConfigTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) |
---|
577 | { |
---|
578 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
579 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
580 | DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, |
---|
581 | Configuration); |
---|
582 | } |
---|
583 | |
---|
584 | /** |
---|
585 | * @brief Set Data transfer direction (read from peripheral or from memory). |
---|
586 | * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n |
---|
587 | * CCR MEM2MEM LL_DMA_SetDataTransferDirection |
---|
588 | * @param DMAx DMAx Instance |
---|
589 | * @param Channel This parameter can be one of the following values: |
---|
590 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
591 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
592 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
593 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
594 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
595 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
596 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
597 | * @param Direction This parameter can be one of the following values: |
---|
598 | * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY |
---|
599 | * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH |
---|
600 | * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY |
---|
601 | * @retval None |
---|
602 | */ |
---|
603 | __STATIC_INLINE void LL_DMA_SetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) |
---|
604 | { |
---|
605 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
606 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
607 | DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); |
---|
608 | } |
---|
609 | |
---|
610 | /** |
---|
611 | * @brief Get Data transfer direction (read from peripheral or from memory). |
---|
612 | * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n |
---|
613 | * CCR MEM2MEM LL_DMA_GetDataTransferDirection |
---|
614 | * @param DMAx DMAx Instance |
---|
615 | * @param Channel This parameter can be one of the following values: |
---|
616 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
617 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
618 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
619 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
620 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
621 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
622 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
623 | * @retval Returned value can be one of the following values: |
---|
624 | * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY |
---|
625 | * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH |
---|
626 | * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY |
---|
627 | */ |
---|
628 | __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
629 | { |
---|
630 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
631 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
632 | DMA_CCR_DIR | DMA_CCR_MEM2MEM)); |
---|
633 | } |
---|
634 | |
---|
635 | /** |
---|
636 | * @brief Set DMA mode circular or normal. |
---|
637 | * @note The circular buffer mode cannot be used if the memory-to-memory |
---|
638 | * data transfer is configured on the selected Channel. |
---|
639 | * @rmtoll CCR CIRC LL_DMA_SetMode |
---|
640 | * @param DMAx DMAx Instance |
---|
641 | * @param Channel This parameter can be one of the following values: |
---|
642 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
643 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
644 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
645 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
646 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
647 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
648 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
649 | * @param Mode This parameter can be one of the following values: |
---|
650 | * @arg @ref LL_DMA_MODE_NORMAL |
---|
651 | * @arg @ref LL_DMA_MODE_CIRCULAR |
---|
652 | * @retval None |
---|
653 | */ |
---|
654 | __STATIC_INLINE void LL_DMA_SetMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) |
---|
655 | { |
---|
656 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
657 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_CIRC, |
---|
658 | Mode); |
---|
659 | } |
---|
660 | |
---|
661 | /** |
---|
662 | * @brief Get DMA mode circular or normal. |
---|
663 | * @rmtoll CCR CIRC LL_DMA_GetMode |
---|
664 | * @param DMAx DMAx Instance |
---|
665 | * @param Channel This parameter can be one of the following values: |
---|
666 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
667 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
668 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
669 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
670 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
671 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
672 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
673 | * @retval Returned value can be one of the following values: |
---|
674 | * @arg @ref LL_DMA_MODE_NORMAL |
---|
675 | * @arg @ref LL_DMA_MODE_CIRCULAR |
---|
676 | */ |
---|
677 | __STATIC_INLINE uint32_t LL_DMA_GetMode(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
678 | { |
---|
679 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
680 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
681 | DMA_CCR_CIRC)); |
---|
682 | } |
---|
683 | |
---|
684 | /** |
---|
685 | * @brief Set Peripheral increment mode. |
---|
686 | * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode |
---|
687 | * @param DMAx DMAx Instance |
---|
688 | * @param Channel This parameter can be one of the following values: |
---|
689 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
690 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
691 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
692 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
693 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
694 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
695 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
696 | * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: |
---|
697 | * @arg @ref LL_DMA_PERIPH_INCREMENT |
---|
698 | * @arg @ref LL_DMA_PERIPH_NOINCREMENT |
---|
699 | * @retval None |
---|
700 | */ |
---|
701 | __STATIC_INLINE void LL_DMA_SetPeriphIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) |
---|
702 | { |
---|
703 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
704 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PINC, |
---|
705 | PeriphOrM2MSrcIncMode); |
---|
706 | } |
---|
707 | |
---|
708 | /** |
---|
709 | * @brief Get Peripheral increment mode. |
---|
710 | * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode |
---|
711 | * @param DMAx DMAx Instance |
---|
712 | * @param Channel This parameter can be one of the following values: |
---|
713 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
714 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
715 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
716 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
717 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
718 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
719 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
720 | * @retval Returned value can be one of the following values: |
---|
721 | * @arg @ref LL_DMA_PERIPH_INCREMENT |
---|
722 | * @arg @ref LL_DMA_PERIPH_NOINCREMENT |
---|
723 | */ |
---|
724 | __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
725 | { |
---|
726 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
727 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
728 | DMA_CCR_PINC)); |
---|
729 | } |
---|
730 | |
---|
731 | /** |
---|
732 | * @brief Set Memory increment mode. |
---|
733 | * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode |
---|
734 | * @param DMAx DMAx Instance |
---|
735 | * @param Channel This parameter can be one of the following values: |
---|
736 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
737 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
738 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
739 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
740 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
741 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
742 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
743 | * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: |
---|
744 | * @arg @ref LL_DMA_MEMORY_INCREMENT |
---|
745 | * @arg @ref LL_DMA_MEMORY_NOINCREMENT |
---|
746 | * @retval None |
---|
747 | */ |
---|
748 | __STATIC_INLINE void LL_DMA_SetMemoryIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) |
---|
749 | { |
---|
750 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
751 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_MINC, |
---|
752 | MemoryOrM2MDstIncMode); |
---|
753 | } |
---|
754 | |
---|
755 | /** |
---|
756 | * @brief Get Memory increment mode. |
---|
757 | * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode |
---|
758 | * @param DMAx DMAx Instance |
---|
759 | * @param Channel This parameter can be one of the following values: |
---|
760 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
761 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
762 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
763 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
764 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
765 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
766 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
767 | * @retval Returned value can be one of the following values: |
---|
768 | * @arg @ref LL_DMA_MEMORY_INCREMENT |
---|
769 | * @arg @ref LL_DMA_MEMORY_NOINCREMENT |
---|
770 | */ |
---|
771 | __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
772 | { |
---|
773 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
774 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
775 | DMA_CCR_MINC)); |
---|
776 | } |
---|
777 | |
---|
778 | /** |
---|
779 | * @brief Set Peripheral size. |
---|
780 | * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize |
---|
781 | * @param DMAx DMAx Instance |
---|
782 | * @param Channel This parameter can be one of the following values: |
---|
783 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
784 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
785 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
786 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
787 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
788 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
789 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
790 | * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: |
---|
791 | * @arg @ref LL_DMA_PDATAALIGN_BYTE |
---|
792 | * @arg @ref LL_DMA_PDATAALIGN_HALFWORD |
---|
793 | * @arg @ref LL_DMA_PDATAALIGN_WORD |
---|
794 | * @retval None |
---|
795 | */ |
---|
796 | __STATIC_INLINE void LL_DMA_SetPeriphSize(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) |
---|
797 | { |
---|
798 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
799 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PSIZE, |
---|
800 | PeriphOrM2MSrcDataSize); |
---|
801 | } |
---|
802 | |
---|
803 | /** |
---|
804 | * @brief Get Peripheral size. |
---|
805 | * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize |
---|
806 | * @param DMAx DMAx Instance |
---|
807 | * @param Channel This parameter can be one of the following values: |
---|
808 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
809 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
810 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
811 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
812 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
813 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
814 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
815 | * @retval Returned value can be one of the following values: |
---|
816 | * @arg @ref LL_DMA_PDATAALIGN_BYTE |
---|
817 | * @arg @ref LL_DMA_PDATAALIGN_HALFWORD |
---|
818 | * @arg @ref LL_DMA_PDATAALIGN_WORD |
---|
819 | */ |
---|
820 | __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
821 | { |
---|
822 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
823 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
824 | DMA_CCR_PSIZE)); |
---|
825 | } |
---|
826 | |
---|
827 | /** |
---|
828 | * @brief Set Memory size. |
---|
829 | * @rmtoll CCR MSIZE LL_DMA_SetMemorySize |
---|
830 | * @param DMAx DMAx Instance |
---|
831 | * @param Channel This parameter can be one of the following values: |
---|
832 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
833 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
834 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
835 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
836 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
837 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
838 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
839 | * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: |
---|
840 | * @arg @ref LL_DMA_MDATAALIGN_BYTE |
---|
841 | * @arg @ref LL_DMA_MDATAALIGN_HALFWORD |
---|
842 | * @arg @ref LL_DMA_MDATAALIGN_WORD |
---|
843 | * @retval None |
---|
844 | */ |
---|
845 | __STATIC_INLINE void LL_DMA_SetMemorySize(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) |
---|
846 | { |
---|
847 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
848 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_MSIZE, |
---|
849 | MemoryOrM2MDstDataSize); |
---|
850 | } |
---|
851 | |
---|
852 | /** |
---|
853 | * @brief Get Memory size. |
---|
854 | * @rmtoll CCR MSIZE LL_DMA_GetMemorySize |
---|
855 | * @param DMAx DMAx Instance |
---|
856 | * @param Channel This parameter can be one of the following values: |
---|
857 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
858 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
859 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
860 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
861 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
862 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
863 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
864 | * @retval Returned value can be one of the following values: |
---|
865 | * @arg @ref LL_DMA_MDATAALIGN_BYTE |
---|
866 | * @arg @ref LL_DMA_MDATAALIGN_HALFWORD |
---|
867 | * @arg @ref LL_DMA_MDATAALIGN_WORD |
---|
868 | */ |
---|
869 | __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
870 | { |
---|
871 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
872 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
873 | DMA_CCR_MSIZE)); |
---|
874 | } |
---|
875 | |
---|
876 | /** |
---|
877 | * @brief Set Channel priority level. |
---|
878 | * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel |
---|
879 | * @param DMAx DMAx Instance |
---|
880 | * @param Channel This parameter can be one of the following values: |
---|
881 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
882 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
883 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
884 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
885 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
886 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
887 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
888 | * @param Priority This parameter can be one of the following values: |
---|
889 | * @arg @ref LL_DMA_PRIORITY_LOW |
---|
890 | * @arg @ref LL_DMA_PRIORITY_MEDIUM |
---|
891 | * @arg @ref LL_DMA_PRIORITY_HIGH |
---|
892 | * @arg @ref LL_DMA_PRIORITY_VERYHIGH |
---|
893 | * @retval None |
---|
894 | */ |
---|
895 | __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) |
---|
896 | { |
---|
897 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
898 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PL, |
---|
899 | Priority); |
---|
900 | } |
---|
901 | |
---|
902 | /** |
---|
903 | * @brief Get Channel priority level. |
---|
904 | * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel |
---|
905 | * @param DMAx DMAx Instance |
---|
906 | * @param Channel This parameter can be one of the following values: |
---|
907 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
908 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
909 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
910 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
911 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
912 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
913 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
914 | * @retval Returned value can be one of the following values: |
---|
915 | * @arg @ref LL_DMA_PRIORITY_LOW |
---|
916 | * @arg @ref LL_DMA_PRIORITY_MEDIUM |
---|
917 | * @arg @ref LL_DMA_PRIORITY_HIGH |
---|
918 | * @arg @ref LL_DMA_PRIORITY_VERYHIGH |
---|
919 | */ |
---|
920 | __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
921 | { |
---|
922 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
923 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
924 | DMA_CCR_PL)); |
---|
925 | } |
---|
926 | |
---|
927 | /** |
---|
928 | * @brief Set Number of data to transfer. |
---|
929 | * @note This action has no effect if |
---|
930 | * channel is enabled. |
---|
931 | * @rmtoll CNDTR NDT LL_DMA_SetDataLength |
---|
932 | * @param DMAx DMAx Instance |
---|
933 | * @param Channel This parameter can be one of the following values: |
---|
934 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
935 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
936 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
937 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
938 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
939 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
940 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
941 | * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF |
---|
942 | * @retval None |
---|
943 | */ |
---|
944 | __STATIC_INLINE void LL_DMA_SetDataLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) |
---|
945 | { |
---|
946 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
947 | MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CNDTR, |
---|
948 | DMA_CNDTR_NDT, NbData); |
---|
949 | } |
---|
950 | |
---|
951 | /** |
---|
952 | * @brief Get Number of data to transfer. |
---|
953 | * @note Once the channel is enabled, the return value indicate the |
---|
954 | * remaining bytes to be transmitted. |
---|
955 | * @rmtoll CNDTR NDT LL_DMA_GetDataLength |
---|
956 | * @param DMAx DMAx Instance |
---|
957 | * @param Channel This parameter can be one of the following values: |
---|
958 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
959 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
960 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
961 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
962 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
963 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
964 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
965 | * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
966 | */ |
---|
967 | __STATIC_INLINE uint32_t LL_DMA_GetDataLength(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
968 | { |
---|
969 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
970 | return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CNDTR, |
---|
971 | DMA_CNDTR_NDT)); |
---|
972 | } |
---|
973 | |
---|
974 | /** |
---|
975 | * @brief Configure the Source and Destination addresses. |
---|
976 | * @note This API must not be called when the DMA channel is enabled. |
---|
977 | * @note Each peripheral using DMA provides an API to get directly the register address (LL_PPP_DMA_GetRegAddr). |
---|
978 | * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n |
---|
979 | * CMAR MA LL_DMA_ConfigAddresses |
---|
980 | * @param DMAx DMAx Instance |
---|
981 | * @param Channel This parameter can be one of the following values: |
---|
982 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
983 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
984 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
985 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
986 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
987 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
988 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
989 | * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
990 | * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
991 | * @param Direction This parameter can be one of the following values: |
---|
992 | * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY |
---|
993 | * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH |
---|
994 | * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY |
---|
995 | * @retval None |
---|
996 | */ |
---|
997 | __STATIC_INLINE void LL_DMA_ConfigAddresses(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, |
---|
998 | uint32_t DstAddress, uint32_t Direction) |
---|
999 | { |
---|
1000 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1001 | /* Direction Memory to Periph */ |
---|
1002 | if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) |
---|
1003 | { |
---|
1004 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, SrcAddress); |
---|
1005 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, DstAddress); |
---|
1006 | } |
---|
1007 | /* Direction Periph to Memory and Memory to Memory */ |
---|
1008 | else |
---|
1009 | { |
---|
1010 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, SrcAddress); |
---|
1011 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, DstAddress); |
---|
1012 | } |
---|
1013 | } |
---|
1014 | |
---|
1015 | /** |
---|
1016 | * @brief Set the Memory address. |
---|
1017 | * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. |
---|
1018 | * @note This API must not be called when the DMA channel is enabled. |
---|
1019 | * @rmtoll CMAR MA LL_DMA_SetMemoryAddress |
---|
1020 | * @param DMAx DMAx Instance |
---|
1021 | * @param Channel This parameter can be one of the following values: |
---|
1022 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1023 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1024 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1025 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1026 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1027 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1028 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1029 | * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1030 | * @retval None |
---|
1031 | */ |
---|
1032 | __STATIC_INLINE void LL_DMA_SetMemoryAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) |
---|
1033 | { |
---|
1034 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1035 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, MemoryAddress); |
---|
1036 | } |
---|
1037 | |
---|
1038 | /** |
---|
1039 | * @brief Set the Peripheral address. |
---|
1040 | * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. |
---|
1041 | * @note This API must not be called when the DMA channel is enabled. |
---|
1042 | * @rmtoll CPAR PA LL_DMA_SetPeriphAddress |
---|
1043 | * @param DMAx DMAx Instance |
---|
1044 | * @param Channel This parameter can be one of the following values: |
---|
1045 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1046 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1047 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1048 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1049 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1050 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1051 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1052 | * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1053 | * @retval None |
---|
1054 | */ |
---|
1055 | __STATIC_INLINE void LL_DMA_SetPeriphAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) |
---|
1056 | { |
---|
1057 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1058 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, PeriphAddress); |
---|
1059 | } |
---|
1060 | |
---|
1061 | /** |
---|
1062 | * @brief Get Memory address. |
---|
1063 | * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. |
---|
1064 | * @rmtoll CMAR MA LL_DMA_GetMemoryAddress |
---|
1065 | * @param DMAx DMAx Instance |
---|
1066 | * @param Channel This parameter can be one of the following values: |
---|
1067 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1068 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1069 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1070 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1071 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1072 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1073 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1074 | * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1075 | */ |
---|
1076 | __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
1077 | { |
---|
1078 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1079 | return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR)); |
---|
1080 | } |
---|
1081 | |
---|
1082 | /** |
---|
1083 | * @brief Get Peripheral address. |
---|
1084 | * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. |
---|
1085 | * @rmtoll CPAR PA LL_DMA_GetPeriphAddress |
---|
1086 | * @param DMAx DMAx Instance |
---|
1087 | * @param Channel This parameter can be one of the following values: |
---|
1088 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1089 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1090 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1091 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1092 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1093 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1094 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1095 | * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1096 | */ |
---|
1097 | __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
1098 | { |
---|
1099 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1100 | return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR)); |
---|
1101 | } |
---|
1102 | |
---|
1103 | /** |
---|
1104 | * @brief Set the Memory to Memory Source address. |
---|
1105 | * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. |
---|
1106 | * @note This API must not be called when the DMA channel is enabled. |
---|
1107 | * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress |
---|
1108 | * @param DMAx DMAx Instance |
---|
1109 | * @param Channel This parameter can be one of the following values: |
---|
1110 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1111 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1112 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1113 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1114 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1115 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1116 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1117 | * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1118 | * @retval None |
---|
1119 | */ |
---|
1120 | __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) |
---|
1121 | { |
---|
1122 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1123 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR, MemoryAddress); |
---|
1124 | } |
---|
1125 | |
---|
1126 | /** |
---|
1127 | * @brief Set the Memory to Memory Destination address. |
---|
1128 | * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. |
---|
1129 | * @note This API must not be called when the DMA channel is enabled. |
---|
1130 | * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress |
---|
1131 | * @param DMAx DMAx Instance |
---|
1132 | * @param Channel This parameter can be one of the following values: |
---|
1133 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1134 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1135 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1136 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1137 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1138 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1139 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1140 | * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1141 | * @retval None |
---|
1142 | */ |
---|
1143 | __STATIC_INLINE void LL_DMA_SetM2MDstAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) |
---|
1144 | { |
---|
1145 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1146 | WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR, MemoryAddress); |
---|
1147 | } |
---|
1148 | |
---|
1149 | /** |
---|
1150 | * @brief Get the Memory to Memory Source address. |
---|
1151 | * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. |
---|
1152 | * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress |
---|
1153 | * @param DMAx DMAx Instance |
---|
1154 | * @param Channel This parameter can be one of the following values: |
---|
1155 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1156 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1157 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1158 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1159 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1160 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1161 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1162 | * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1163 | */ |
---|
1164 | __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
1165 | { |
---|
1166 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1167 | return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CPAR)); |
---|
1168 | } |
---|
1169 | |
---|
1170 | /** |
---|
1171 | * @brief Get the Memory to Memory Destination address. |
---|
1172 | * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. |
---|
1173 | * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress |
---|
1174 | * @param DMAx DMAx Instance |
---|
1175 | * @param Channel This parameter can be one of the following values: |
---|
1176 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1177 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1178 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1179 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1180 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1181 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1182 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1183 | * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF |
---|
1184 | */ |
---|
1185 | __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
1186 | { |
---|
1187 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
1188 | return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CMAR)); |
---|
1189 | } |
---|
1190 | |
---|
1191 | /** |
---|
1192 | * @brief Set DMA request for DMA Channels on DMAMUX Channel x. |
---|
1193 | * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. |
---|
1194 | * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). |
---|
1195 | * @rmtoll CxCR DMAREQ_ID LL_DMA_SetPeriphRequest |
---|
1196 | * @param DMAx DMAx Instance |
---|
1197 | * @param Channel This parameter can be one of the following values: |
---|
1198 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1199 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1200 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1201 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1202 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1203 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1204 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1205 | * @param Request This parameter can be one of the following values: |
---|
1206 | * @arg @ref LL_DMAMUX_REQ_MEM2MEM |
---|
1207 | * @arg @ref LL_DMAMUX_REQ_GENERATOR0 |
---|
1208 | * @arg @ref LL_DMAMUX_REQ_GENERATOR1 |
---|
1209 | * @arg @ref LL_DMAMUX_REQ_GENERATOR2 |
---|
1210 | * @arg @ref LL_DMAMUX_REQ_GENERATOR3 |
---|
1211 | * @arg @ref LL_DMAMUX_REQ_ADC1 |
---|
1212 | * @arg @ref LL_DMAMUX_REQ_AES_IN |
---|
1213 | * @arg @ref LL_DMAMUX_REQ_AES_OUT |
---|
1214 | * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 |
---|
1215 | * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 |
---|
1216 | * @arg @ref LL_DMAMUX_REQ_I2C1_RX |
---|
1217 | * @arg @ref LL_DMAMUX_REQ_I2C1_TX |
---|
1218 | * @arg @ref LL_DMAMUX_REQ_I2C2_RX |
---|
1219 | * @arg @ref LL_DMAMUX_REQ_I2C2_TX |
---|
1220 | * @arg @ref LL_DMAMUX_REQ_LPUART1_RX |
---|
1221 | * @arg @ref LL_DMAMUX_REQ_LPUART1_TX |
---|
1222 | * @arg @ref LL_DMAMUX_REQ_SPI1_RX |
---|
1223 | * @arg @ref LL_DMAMUX_REQ_SPI1_TX |
---|
1224 | * @arg @ref LL_DMAMUX_REQ_SPI2_RX |
---|
1225 | * @arg @ref LL_DMAMUX_REQ_SPI2_TX |
---|
1226 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 |
---|
1227 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 |
---|
1228 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 |
---|
1229 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 |
---|
1230 | * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM |
---|
1231 | * @arg @ref LL_DMAMUX_REQ_TIM1_UP |
---|
1232 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 |
---|
1233 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 |
---|
1234 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 |
---|
1235 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 |
---|
1236 | * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG |
---|
1237 | * @arg @ref LL_DMAMUX_REQ_TIM2_UP |
---|
1238 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 |
---|
1239 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 |
---|
1240 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 |
---|
1241 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 |
---|
1242 | * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG |
---|
1243 | * @arg @ref LL_DMAMUX_REQ_TIM3_UP |
---|
1244 | * @arg @ref LL_DMAMUX_REQ_TIM6_UP |
---|
1245 | * @arg @ref LL_DMAMUX_REQ_TIM7_UP |
---|
1246 | * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 |
---|
1247 | * @arg @ref LL_DMAMUX_REQ_TIM15_CH2 |
---|
1248 | * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG_COM |
---|
1249 | * @arg @ref LL_DMAMUX_REQ_TIM15_UP |
---|
1250 | * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 |
---|
1251 | * @arg @ref LL_DMAMUX_REQ_TIM16_COM |
---|
1252 | * @arg @ref LL_DMAMUX_REQ_TIM16_UP |
---|
1253 | * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 |
---|
1254 | * @arg @ref LL_DMAMUX_REQ_TIM17_COM |
---|
1255 | * @arg @ref LL_DMAMUX_REQ_TIM17_UP |
---|
1256 | * @arg @ref LL_DMAMUX_REQ_USART1_RX |
---|
1257 | * @arg @ref LL_DMAMUX_REQ_USART1_TX |
---|
1258 | * @arg @ref LL_DMAMUX_REQ_USART2_RX |
---|
1259 | * @arg @ref LL_DMAMUX_REQ_USART2_TX |
---|
1260 | * @arg @ref LL_DMAMUX_REQ_USART3_RX |
---|
1261 | * @arg @ref LL_DMAMUX_REQ_USART3_TX |
---|
1262 | * @arg @ref LL_DMAMUX_REQ_USART4_RX |
---|
1263 | * @arg @ref LL_DMAMUX_REQ_USART4_TX |
---|
1264 | * @arg @ref LL_DMAMUX_REQ_UCPD1_RX |
---|
1265 | * @arg @ref LL_DMAMUX_REQ_UCPD1_TX |
---|
1266 | * @arg @ref LL_DMAMUX_REQ_UCPD2_RX |
---|
1267 | * @arg @ref LL_DMAMUX_REQ_UCPD2_TX |
---|
1268 | * @retval None |
---|
1269 | */ |
---|
1270 | __STATIC_INLINE void LL_DMA_SetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request) |
---|
1271 | { |
---|
1272 | uint32_t dmamux_ccr_offset = ((((uint32_t)DMAx ^ (uint32_t)DMA1) >> 10U) * 7U); |
---|
1273 | MODIFY_REG((DMAMUX1_Channel0 + Channel + dmamux_ccr_offset)->CCR, DMAMUX_CxCR_DMAREQ_ID, Request); |
---|
1274 | } |
---|
1275 | |
---|
1276 | /** |
---|
1277 | * @brief Get DMA request for DMA Channels on DMAMUX Channel x. |
---|
1278 | * @note DMAMUX channel 0 to 6 are mapped to DMA1 channel 1 to 7. |
---|
1279 | * DMAMUX channel 7 to 11 are mapped to DMA2 channel 1 to 5 (**** only available on chip which support DMA2 ****). |
---|
1280 | * @rmtoll CxCR DMAREQ_ID LL_DMA_GetPeriphRequest |
---|
1281 | * @param DMAx DMAx Instance |
---|
1282 | * @param Channel This parameter can be one of the following values: |
---|
1283 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
1284 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
1285 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
1286 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
1287 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
1288 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
1289 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
1290 | * @retval Returned value can be one of the following values: |
---|
1291 | * @arg @ref LL_DMAMUX_REQ_MEM2MEM |
---|
1292 | * @arg @ref LL_DMAMUX_REQ_GENERATOR0 |
---|
1293 | * @arg @ref LL_DMAMUX_REQ_GENERATOR1 |
---|
1294 | * @arg @ref LL_DMAMUX_REQ_GENERATOR2 |
---|
1295 | * @arg @ref LL_DMAMUX_REQ_GENERATOR3 |
---|
1296 | * @arg @ref LL_DMAMUX_REQ_ADC1 |
---|
1297 | * @arg @ref LL_DMAMUX_REQ_AES_IN |
---|
1298 | * @arg @ref LL_DMAMUX_REQ_AES_OUT |
---|
1299 | * @arg @ref LL_DMAMUX_REQ_DAC1_CH1 |
---|
1300 | * @arg @ref LL_DMAMUX_REQ_DAC1_CH2 |
---|
1301 | * @arg @ref LL_DMAMUX_REQ_I2C1_RX |
---|
1302 | * @arg @ref LL_DMAMUX_REQ_I2C1_TX |
---|
1303 | * @arg @ref LL_DMAMUX_REQ_I2C2_RX |
---|
1304 | * @arg @ref LL_DMAMUX_REQ_I2C2_TX |
---|
1305 | * @arg @ref LL_DMAMUX_REQ_LPUART1_RX |
---|
1306 | * @arg @ref LL_DMAMUX_REQ_LPUART1_TX |
---|
1307 | * @arg @ref LL_DMAMUX_REQ_SPI1_RX |
---|
1308 | * @arg @ref LL_DMAMUX_REQ_SPI1_TX |
---|
1309 | * @arg @ref LL_DMAMUX_REQ_SPI2_RX |
---|
1310 | * @arg @ref LL_DMAMUX_REQ_SPI2_TX |
---|
1311 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH1 |
---|
1312 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH2 |
---|
1313 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH3 |
---|
1314 | * @arg @ref LL_DMAMUX_REQ_TIM1_CH4 |
---|
1315 | * @arg @ref LL_DMAMUX_REQ_TIM1_TRIG_COM |
---|
1316 | * @arg @ref LL_DMAMUX_REQ_TIM1_UP |
---|
1317 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH1 |
---|
1318 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH2 |
---|
1319 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH3 |
---|
1320 | * @arg @ref LL_DMAMUX_REQ_TIM2_CH4 |
---|
1321 | * @arg @ref LL_DMAMUX_REQ_TIM2_TRIG |
---|
1322 | * @arg @ref LL_DMAMUX_REQ_TIM2_UP |
---|
1323 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH1 |
---|
1324 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH2 |
---|
1325 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH3 |
---|
1326 | * @arg @ref LL_DMAMUX_REQ_TIM3_CH4 |
---|
1327 | * @arg @ref LL_DMAMUX_REQ_TIM3_TRIG |
---|
1328 | * @arg @ref LL_DMAMUX_REQ_TIM3_UP |
---|
1329 | * @arg @ref LL_DMAMUX_REQ_TIM6_UP |
---|
1330 | * @arg @ref LL_DMAMUX_REQ_TIM7_UP |
---|
1331 | * @arg @ref LL_DMAMUX_REQ_TIM15_CH1 |
---|
1332 | * @arg @ref LL_DMAMUX_REQ_TIM15_CH2 |
---|
1333 | * @arg @ref LL_DMAMUX_REQ_TIM15_TRIG_COM |
---|
1334 | * @arg @ref LL_DMAMUX_REQ_TIM15_UP |
---|
1335 | * @arg @ref LL_DMAMUX_REQ_TIM16_CH1 |
---|
1336 | * @arg @ref LL_DMAMUX_REQ_TIM16_COM |
---|
1337 | * @arg @ref LL_DMAMUX_REQ_TIM16_UP |
---|
1338 | * @arg @ref LL_DMAMUX_REQ_TIM17_CH1 |
---|
1339 | * @arg @ref LL_DMAMUX_REQ_TIM17_COM |
---|
1340 | * @arg @ref LL_DMAMUX_REQ_TIM17_UP |
---|
1341 | * @arg @ref LL_DMAMUX_REQ_USART1_RX |
---|
1342 | * @arg @ref LL_DMAMUX_REQ_USART1_TX |
---|
1343 | * @arg @ref LL_DMAMUX_REQ_USART2_RX |
---|
1344 | * @arg @ref LL_DMAMUX_REQ_USART2_TX |
---|
1345 | * @arg @ref LL_DMAMUX_REQ_USART3_RX |
---|
1346 | * @arg @ref LL_DMAMUX_REQ_USART3_TX |
---|
1347 | * @arg @ref LL_DMAMUX_REQ_USART4_RX |
---|
1348 | * @arg @ref LL_DMAMUX_REQ_USART4_TX |
---|
1349 | * @arg @ref LL_DMAMUX_REQ_UCPD1_RX |
---|
1350 | * @arg @ref LL_DMAMUX_REQ_UCPD1_TX |
---|
1351 | * @arg @ref LL_DMAMUX_REQ_UCPD2_RX |
---|
1352 | * @arg @ref LL_DMAMUX_REQ_UCPD2_TX |
---|
1353 | */ |
---|
1354 | __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
1355 | { |
---|
1356 | uint32_t dmamux_ccr_offset = ((((uint32_t)DMAx ^ (uint32_t)DMA1) >> 10U) * 7U); |
---|
1357 | return (READ_BIT((DMAMUX1_Channel0 + Channel + dmamux_ccr_offset)->CCR, DMAMUX_CxCR_DMAREQ_ID)); |
---|
1358 | } |
---|
1359 | |
---|
1360 | /** |
---|
1361 | * @} |
---|
1362 | */ |
---|
1363 | |
---|
1364 | /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management |
---|
1365 | * @{ |
---|
1366 | */ |
---|
1367 | |
---|
1368 | /** |
---|
1369 | * @brief Get Channel 1 global interrupt flag. |
---|
1370 | * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 |
---|
1371 | * @param DMAx DMAx Instance |
---|
1372 | * @retval State of bit (1 or 0). |
---|
1373 | */ |
---|
1374 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(const DMA_TypeDef *DMAx) |
---|
1375 | { |
---|
1376 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)) ? 1UL : 0UL); |
---|
1377 | } |
---|
1378 | |
---|
1379 | /** |
---|
1380 | * @brief Get Channel 2 global interrupt flag. |
---|
1381 | * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 |
---|
1382 | * @param DMAx DMAx Instance |
---|
1383 | * @retval State of bit (1 or 0). |
---|
1384 | */ |
---|
1385 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(const DMA_TypeDef *DMAx) |
---|
1386 | { |
---|
1387 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)) ? 1UL : 0UL); |
---|
1388 | } |
---|
1389 | |
---|
1390 | /** |
---|
1391 | * @brief Get Channel 3 global interrupt flag. |
---|
1392 | * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 |
---|
1393 | * @param DMAx DMAx Instance |
---|
1394 | * @retval State of bit (1 or 0). |
---|
1395 | */ |
---|
1396 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(const DMA_TypeDef *DMAx) |
---|
1397 | { |
---|
1398 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)) ? 1UL : 0UL); |
---|
1399 | } |
---|
1400 | |
---|
1401 | /** |
---|
1402 | * @brief Get Channel 4 global interrupt flag. |
---|
1403 | * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 |
---|
1404 | * @param DMAx DMAx Instance |
---|
1405 | * @retval State of bit (1 or 0). |
---|
1406 | */ |
---|
1407 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(const DMA_TypeDef *DMAx) |
---|
1408 | { |
---|
1409 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)) ? 1UL : 0UL); |
---|
1410 | } |
---|
1411 | |
---|
1412 | /** |
---|
1413 | * @brief Get Channel 5 global interrupt flag. |
---|
1414 | * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 |
---|
1415 | * @param DMAx DMAx Instance |
---|
1416 | * @retval State of bit (1 or 0). |
---|
1417 | */ |
---|
1418 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(const DMA_TypeDef *DMAx) |
---|
1419 | { |
---|
1420 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)) ? 1UL : 0UL); |
---|
1421 | } |
---|
1422 | |
---|
1423 | #if defined(DMA1_Channel6) |
---|
1424 | /** |
---|
1425 | * @brief Get Channel 6 global interrupt flag. |
---|
1426 | * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 |
---|
1427 | * @param DMAx DMAx Instance |
---|
1428 | * @retval State of bit (1 or 0). |
---|
1429 | */ |
---|
1430 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(const DMA_TypeDef *DMAx) |
---|
1431 | { |
---|
1432 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)) ? 1UL : 0UL); |
---|
1433 | } |
---|
1434 | |
---|
1435 | #endif /* DMA1_Channel6 */ |
---|
1436 | #if defined(DMA1_Channel7) |
---|
1437 | /** |
---|
1438 | * @brief Get Channel 7 global interrupt flag. |
---|
1439 | * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 |
---|
1440 | * @param DMAx DMAx Instance |
---|
1441 | * @retval State of bit (1 or 0). |
---|
1442 | */ |
---|
1443 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(const DMA_TypeDef *DMAx) |
---|
1444 | { |
---|
1445 | return ((READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)) ? 1UL : 0UL); |
---|
1446 | } |
---|
1447 | |
---|
1448 | #endif /* DMA1_Channel7 */ |
---|
1449 | /** |
---|
1450 | * @brief Get Channel 1 transfer complete flag. |
---|
1451 | * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 |
---|
1452 | * @param DMAx DMAx Instance |
---|
1453 | * @retval State of bit (1 or 0). |
---|
1454 | */ |
---|
1455 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(const DMA_TypeDef *DMAx) |
---|
1456 | { |
---|
1457 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)) ? 1UL : 0UL); |
---|
1458 | } |
---|
1459 | |
---|
1460 | /** |
---|
1461 | * @brief Get Channel 2 transfer complete flag. |
---|
1462 | * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 |
---|
1463 | * @param DMAx DMAx Instance |
---|
1464 | * @retval State of bit (1 or 0). |
---|
1465 | */ |
---|
1466 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(const DMA_TypeDef *DMAx) |
---|
1467 | { |
---|
1468 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)) ? 1UL : 0UL); |
---|
1469 | } |
---|
1470 | |
---|
1471 | /** |
---|
1472 | * @brief Get Channel 3 transfer complete flag. |
---|
1473 | * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 |
---|
1474 | * @param DMAx DMAx Instance |
---|
1475 | * @retval State of bit (1 or 0). |
---|
1476 | */ |
---|
1477 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(const DMA_TypeDef *DMAx) |
---|
1478 | { |
---|
1479 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)) ? 1UL : 0UL); |
---|
1480 | } |
---|
1481 | |
---|
1482 | /** |
---|
1483 | * @brief Get Channel 4 transfer complete flag. |
---|
1484 | * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 |
---|
1485 | * @param DMAx DMAx Instance |
---|
1486 | * @retval State of bit (1 or 0). |
---|
1487 | */ |
---|
1488 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(const DMA_TypeDef *DMAx) |
---|
1489 | { |
---|
1490 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)) ? 1UL : 0UL); |
---|
1491 | } |
---|
1492 | |
---|
1493 | /** |
---|
1494 | * @brief Get Channel 5 transfer complete flag. |
---|
1495 | * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 |
---|
1496 | * @param DMAx DMAx Instance |
---|
1497 | * @retval State of bit (1 or 0). |
---|
1498 | */ |
---|
1499 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(const DMA_TypeDef *DMAx) |
---|
1500 | { |
---|
1501 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)) ? 1UL : 0UL); |
---|
1502 | } |
---|
1503 | |
---|
1504 | #if defined(DMA1_Channel6) |
---|
1505 | /** |
---|
1506 | * @brief Get Channel 6 transfer complete flag. |
---|
1507 | * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 |
---|
1508 | * @param DMAx DMAx Instance |
---|
1509 | * @retval State of bit (1 or 0). |
---|
1510 | */ |
---|
1511 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(const DMA_TypeDef *DMAx) |
---|
1512 | { |
---|
1513 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)) ? 1UL : 0UL); |
---|
1514 | } |
---|
1515 | |
---|
1516 | #endif /* DMA1_Channel6 */ |
---|
1517 | #if defined(DMA1_Channel7) |
---|
1518 | /** |
---|
1519 | * @brief Get Channel 7 transfer complete flag. |
---|
1520 | * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 |
---|
1521 | * @param DMAx DMAx Instance |
---|
1522 | * @retval State of bit (1 or 0). |
---|
1523 | */ |
---|
1524 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(const DMA_TypeDef *DMAx) |
---|
1525 | { |
---|
1526 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)) ? 1UL : 0UL); |
---|
1527 | } |
---|
1528 | |
---|
1529 | #endif /* DMA1_Channel7 */ |
---|
1530 | /** |
---|
1531 | * @brief Get Channel 1 half transfer flag. |
---|
1532 | * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 |
---|
1533 | * @param DMAx DMAx Instance |
---|
1534 | * @retval State of bit (1 or 0). |
---|
1535 | */ |
---|
1536 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(const DMA_TypeDef *DMAx) |
---|
1537 | { |
---|
1538 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)) ? 1UL : 0UL); |
---|
1539 | } |
---|
1540 | |
---|
1541 | /** |
---|
1542 | * @brief Get Channel 2 half transfer flag. |
---|
1543 | * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 |
---|
1544 | * @param DMAx DMAx Instance |
---|
1545 | * @retval State of bit (1 or 0). |
---|
1546 | */ |
---|
1547 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(const DMA_TypeDef *DMAx) |
---|
1548 | { |
---|
1549 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)) ? 1UL : 0UL); |
---|
1550 | } |
---|
1551 | |
---|
1552 | /** |
---|
1553 | * @brief Get Channel 3 half transfer flag. |
---|
1554 | * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 |
---|
1555 | * @param DMAx DMAx Instance |
---|
1556 | * @retval State of bit (1 or 0). |
---|
1557 | */ |
---|
1558 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(const DMA_TypeDef *DMAx) |
---|
1559 | { |
---|
1560 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)) ? 1UL : 0UL); |
---|
1561 | } |
---|
1562 | |
---|
1563 | /** |
---|
1564 | * @brief Get Channel 4 half transfer flag. |
---|
1565 | * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 |
---|
1566 | * @param DMAx DMAx Instance |
---|
1567 | * @retval State of bit (1 or 0). |
---|
1568 | */ |
---|
1569 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(const DMA_TypeDef *DMAx) |
---|
1570 | { |
---|
1571 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)) ? 1UL : 0UL); |
---|
1572 | } |
---|
1573 | |
---|
1574 | /** |
---|
1575 | * @brief Get Channel 5 half transfer flag. |
---|
1576 | * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 |
---|
1577 | * @param DMAx DMAx Instance |
---|
1578 | * @retval State of bit (1 or 0). |
---|
1579 | */ |
---|
1580 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(const DMA_TypeDef *DMAx) |
---|
1581 | { |
---|
1582 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)) ? 1UL : 0UL); |
---|
1583 | } |
---|
1584 | |
---|
1585 | #if defined(DMA1_Channel6) |
---|
1586 | /** |
---|
1587 | * @brief Get Channel 6 half transfer flag. |
---|
1588 | * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 |
---|
1589 | * @param DMAx DMAx Instance |
---|
1590 | * @retval State of bit (1 or 0). |
---|
1591 | */ |
---|
1592 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(const DMA_TypeDef *DMAx) |
---|
1593 | { |
---|
1594 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)) ? 1UL : 0UL); |
---|
1595 | } |
---|
1596 | |
---|
1597 | #endif /* DMA1_Channel6 */ |
---|
1598 | #if defined(DMA1_Channel7) |
---|
1599 | /** |
---|
1600 | * @brief Get Channel 7 half transfer flag. |
---|
1601 | * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 |
---|
1602 | * @param DMAx DMAx Instance |
---|
1603 | * @retval State of bit (1 or 0). |
---|
1604 | */ |
---|
1605 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(const DMA_TypeDef *DMAx) |
---|
1606 | { |
---|
1607 | return ((READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)) ? 1UL : 0UL); |
---|
1608 | } |
---|
1609 | |
---|
1610 | #endif /* DMA1_Channel7 */ |
---|
1611 | /** |
---|
1612 | * @brief Get Channel 1 transfer error flag. |
---|
1613 | * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 |
---|
1614 | * @param DMAx DMAx Instance |
---|
1615 | * @retval State of bit (1 or 0). |
---|
1616 | */ |
---|
1617 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(const DMA_TypeDef *DMAx) |
---|
1618 | { |
---|
1619 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)) ? 1UL : 0UL); |
---|
1620 | } |
---|
1621 | |
---|
1622 | /** |
---|
1623 | * @brief Get Channel 2 transfer error flag. |
---|
1624 | * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 |
---|
1625 | * @param DMAx DMAx Instance |
---|
1626 | * @retval State of bit (1 or 0). |
---|
1627 | */ |
---|
1628 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(const DMA_TypeDef *DMAx) |
---|
1629 | { |
---|
1630 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)) ? 1UL : 0UL); |
---|
1631 | } |
---|
1632 | |
---|
1633 | /** |
---|
1634 | * @brief Get Channel 3 transfer error flag. |
---|
1635 | * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 |
---|
1636 | * @param DMAx DMAx Instance |
---|
1637 | * @retval State of bit (1 or 0). |
---|
1638 | */ |
---|
1639 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(const DMA_TypeDef *DMAx) |
---|
1640 | { |
---|
1641 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)) ? 1UL : 0UL); |
---|
1642 | } |
---|
1643 | |
---|
1644 | /** |
---|
1645 | * @brief Get Channel 4 transfer error flag. |
---|
1646 | * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 |
---|
1647 | * @param DMAx DMAx Instance |
---|
1648 | * @retval State of bit (1 or 0). |
---|
1649 | */ |
---|
1650 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(const DMA_TypeDef *DMAx) |
---|
1651 | { |
---|
1652 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)) ? 1UL : 0UL); |
---|
1653 | } |
---|
1654 | |
---|
1655 | /** |
---|
1656 | * @brief Get Channel 5 transfer error flag. |
---|
1657 | * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 |
---|
1658 | * @param DMAx DMAx Instance |
---|
1659 | * @retval State of bit (1 or 0). |
---|
1660 | */ |
---|
1661 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(const DMA_TypeDef *DMAx) |
---|
1662 | { |
---|
1663 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)) ? 1UL : 0UL); |
---|
1664 | } |
---|
1665 | |
---|
1666 | #if defined(DMA1_Channel6) |
---|
1667 | /** |
---|
1668 | * @brief Get Channel 6 transfer error flag. |
---|
1669 | * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 |
---|
1670 | * @param DMAx DMAx Instance |
---|
1671 | * @retval State of bit (1 or 0). |
---|
1672 | */ |
---|
1673 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(const DMA_TypeDef *DMAx) |
---|
1674 | { |
---|
1675 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)) ? 1UL : 0UL); |
---|
1676 | } |
---|
1677 | |
---|
1678 | #endif /* DMA1_Channel6 */ |
---|
1679 | #if defined(DMA1_Channel7) |
---|
1680 | /** |
---|
1681 | * @brief Get Channel 7 transfer error flag. |
---|
1682 | * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 |
---|
1683 | * @param DMAx DMAx Instance |
---|
1684 | * @retval State of bit (1 or 0). |
---|
1685 | */ |
---|
1686 | __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(const DMA_TypeDef *DMAx) |
---|
1687 | { |
---|
1688 | return ((READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)) ? 1UL : 0UL); |
---|
1689 | } |
---|
1690 | |
---|
1691 | #endif /* DMA1_Channel7 */ |
---|
1692 | /** |
---|
1693 | * @brief Clear Channel 1 global interrupt flag. |
---|
1694 | * @note Do not Clear Channel 1 global interrupt flag when the channel in ON. |
---|
1695 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1696 | error flag with LL_DMA_ClearFlag_TC1, LL_DMA_ClearFlag_HT1, |
---|
1697 | LL_DMA_ClearFlag_TE1. bug id 2.4.1 in Product Errata Sheet. |
---|
1698 | * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 |
---|
1699 | * @param DMAx DMAx Instance |
---|
1700 | * @retval None |
---|
1701 | */ |
---|
1702 | __STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) |
---|
1703 | { |
---|
1704 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1); |
---|
1705 | } |
---|
1706 | |
---|
1707 | /** |
---|
1708 | * @brief Clear Channel 2 global interrupt flag. |
---|
1709 | * @note Do not Clear Channel 2 global interrupt flag when the channel in ON. |
---|
1710 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1711 | error flag with LL_DMA_ClearFlag_TC2, LL_DMA_ClearFlag_HT2, |
---|
1712 | LL_DMA_ClearFlag_TE2. bug id 2.4.1 in Product Errata Sheet. |
---|
1713 | * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 |
---|
1714 | * @param DMAx DMAx Instance |
---|
1715 | * @retval None |
---|
1716 | */ |
---|
1717 | __STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) |
---|
1718 | { |
---|
1719 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2); |
---|
1720 | } |
---|
1721 | |
---|
1722 | /** |
---|
1723 | * @brief Clear Channel 3 global interrupt flag. |
---|
1724 | * @note Do not Clear Channel 3 global interrupt flag when the channel in ON. |
---|
1725 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1726 | error flag with LL_DMA_ClearFlag_TC3, LL_DMA_ClearFlag_HT3, |
---|
1727 | LL_DMA_ClearFlag_TE3. bug id 2.4.1 in Product Errata Sheet. |
---|
1728 | * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 |
---|
1729 | * @param DMAx DMAx Instance |
---|
1730 | * @retval None |
---|
1731 | */ |
---|
1732 | __STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) |
---|
1733 | { |
---|
1734 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3); |
---|
1735 | } |
---|
1736 | |
---|
1737 | /** |
---|
1738 | * @brief Clear Channel 4 global interrupt flag. |
---|
1739 | * @note Do not Clear Channel 4 global interrupt flag when the channel in ON. |
---|
1740 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1741 | error flag with LL_DMA_ClearFlag_TC4, LL_DMA_ClearFlag_HT4, |
---|
1742 | LL_DMA_ClearFlag_TE4. bug id 2.4.1 in Product Errata Sheet. |
---|
1743 | * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 |
---|
1744 | * @param DMAx DMAx Instance |
---|
1745 | * @retval None |
---|
1746 | */ |
---|
1747 | __STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) |
---|
1748 | { |
---|
1749 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4); |
---|
1750 | } |
---|
1751 | |
---|
1752 | /** |
---|
1753 | * @brief Clear Channel 5 global interrupt flag. |
---|
1754 | * @note Do not Clear Channel 5 global interrupt flag when the channel in ON. |
---|
1755 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1756 | error flag with LL_DMA_ClearFlag_TC5, LL_DMA_ClearFlag_HT5, |
---|
1757 | LL_DMA_ClearFlag_TE5. bug id 2.4.1 in Product Errata Sheet. |
---|
1758 | * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 |
---|
1759 | * @param DMAx DMAx Instance |
---|
1760 | * @retval None |
---|
1761 | */ |
---|
1762 | __STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) |
---|
1763 | { |
---|
1764 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5); |
---|
1765 | } |
---|
1766 | |
---|
1767 | #if defined(DMA1_Channel6) |
---|
1768 | /** |
---|
1769 | * @brief Clear Channel 6 global interrupt flag. |
---|
1770 | * @note Do not Clear Channel 6 global interrupt flag when the channel in ON. |
---|
1771 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1772 | error flag with LL_DMA_ClearFlag_TC6, LL_DMA_ClearFlag_HT6, |
---|
1773 | LL_DMA_ClearFlag_TE6. bug id 2.4.1 in Product Errata Sheet. |
---|
1774 | * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 |
---|
1775 | * @param DMAx DMAx Instance |
---|
1776 | * @retval None |
---|
1777 | */ |
---|
1778 | __STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) |
---|
1779 | { |
---|
1780 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6); |
---|
1781 | } |
---|
1782 | |
---|
1783 | #endif /* DMA1_Channel6 */ |
---|
1784 | #if defined(DMA1_Channel7) |
---|
1785 | /** |
---|
1786 | * @brief Clear Channel 7 global interrupt flag. |
---|
1787 | * @note Do not Clear Channel 7 global interrupt flag when the channel in ON. |
---|
1788 | Instead clear specific flags transfer complete, half transfer & transfer |
---|
1789 | error flag with LL_DMA_ClearFlag_TC7, LL_DMA_ClearFlag_HT7, |
---|
1790 | LL_DMA_ClearFlag_TE7. bug id 2.4.1 in Product Errata Sheet. |
---|
1791 | * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 |
---|
1792 | * @param DMAx DMAx Instance |
---|
1793 | * @retval None |
---|
1794 | */ |
---|
1795 | __STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) |
---|
1796 | { |
---|
1797 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7); |
---|
1798 | } |
---|
1799 | |
---|
1800 | #endif /* DMA1_Channel7 */ |
---|
1801 | /** |
---|
1802 | * @brief Clear Channel 1 transfer complete flag. |
---|
1803 | * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 |
---|
1804 | * @param DMAx DMAx Instance |
---|
1805 | * @retval None |
---|
1806 | */ |
---|
1807 | __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) |
---|
1808 | { |
---|
1809 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1); |
---|
1810 | } |
---|
1811 | |
---|
1812 | /** |
---|
1813 | * @brief Clear Channel 2 transfer complete flag. |
---|
1814 | * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 |
---|
1815 | * @param DMAx DMAx Instance |
---|
1816 | * @retval None |
---|
1817 | */ |
---|
1818 | __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) |
---|
1819 | { |
---|
1820 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2); |
---|
1821 | } |
---|
1822 | |
---|
1823 | /** |
---|
1824 | * @brief Clear Channel 3 transfer complete flag. |
---|
1825 | * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 |
---|
1826 | * @param DMAx DMAx Instance |
---|
1827 | * @retval None |
---|
1828 | */ |
---|
1829 | __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) |
---|
1830 | { |
---|
1831 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3); |
---|
1832 | } |
---|
1833 | |
---|
1834 | /** |
---|
1835 | * @brief Clear Channel 4 transfer complete flag. |
---|
1836 | * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 |
---|
1837 | * @param DMAx DMAx Instance |
---|
1838 | * @retval None |
---|
1839 | */ |
---|
1840 | __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) |
---|
1841 | { |
---|
1842 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4); |
---|
1843 | } |
---|
1844 | |
---|
1845 | /** |
---|
1846 | * @brief Clear Channel 5 transfer complete flag. |
---|
1847 | * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 |
---|
1848 | * @param DMAx DMAx Instance |
---|
1849 | * @retval None |
---|
1850 | */ |
---|
1851 | __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) |
---|
1852 | { |
---|
1853 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5); |
---|
1854 | } |
---|
1855 | |
---|
1856 | #if defined(DMA1_Channel6) |
---|
1857 | /** |
---|
1858 | * @brief Clear Channel 6 transfer complete flag. |
---|
1859 | * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 |
---|
1860 | * @param DMAx DMAx Instance |
---|
1861 | * @retval None |
---|
1862 | */ |
---|
1863 | __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) |
---|
1864 | { |
---|
1865 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6); |
---|
1866 | } |
---|
1867 | |
---|
1868 | #endif /* DMA1_Channel6 */ |
---|
1869 | #if defined(DMA1_Channel7) |
---|
1870 | /** |
---|
1871 | * @brief Clear Channel 7 transfer complete flag. |
---|
1872 | * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 |
---|
1873 | * @param DMAx DMAx Instance |
---|
1874 | * @retval None |
---|
1875 | */ |
---|
1876 | __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) |
---|
1877 | { |
---|
1878 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7); |
---|
1879 | } |
---|
1880 | |
---|
1881 | #endif /* DMA1_Channel7 */ |
---|
1882 | /** |
---|
1883 | * @brief Clear Channel 1 half transfer flag. |
---|
1884 | * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 |
---|
1885 | * @param DMAx DMAx Instance |
---|
1886 | * @retval None |
---|
1887 | */ |
---|
1888 | __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) |
---|
1889 | { |
---|
1890 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1); |
---|
1891 | } |
---|
1892 | |
---|
1893 | /** |
---|
1894 | * @brief Clear Channel 2 half transfer flag. |
---|
1895 | * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 |
---|
1896 | * @param DMAx DMAx Instance |
---|
1897 | * @retval None |
---|
1898 | */ |
---|
1899 | __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) |
---|
1900 | { |
---|
1901 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2); |
---|
1902 | } |
---|
1903 | |
---|
1904 | /** |
---|
1905 | * @brief Clear Channel 3 half transfer flag. |
---|
1906 | * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 |
---|
1907 | * @param DMAx DMAx Instance |
---|
1908 | * @retval None |
---|
1909 | */ |
---|
1910 | __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) |
---|
1911 | { |
---|
1912 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3); |
---|
1913 | } |
---|
1914 | |
---|
1915 | /** |
---|
1916 | * @brief Clear Channel 4 half transfer flag. |
---|
1917 | * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 |
---|
1918 | * @param DMAx DMAx Instance |
---|
1919 | * @retval None |
---|
1920 | */ |
---|
1921 | __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) |
---|
1922 | { |
---|
1923 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4); |
---|
1924 | } |
---|
1925 | |
---|
1926 | /** |
---|
1927 | * @brief Clear Channel 5 half transfer flag. |
---|
1928 | * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 |
---|
1929 | * @param DMAx DMAx Instance |
---|
1930 | * @retval None |
---|
1931 | */ |
---|
1932 | __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) |
---|
1933 | { |
---|
1934 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5); |
---|
1935 | } |
---|
1936 | |
---|
1937 | #if defined(DMA1_Channel6) |
---|
1938 | /** |
---|
1939 | * @brief Clear Channel 6 half transfer flag. |
---|
1940 | * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 |
---|
1941 | * @param DMAx DMAx Instance |
---|
1942 | * @retval None |
---|
1943 | */ |
---|
1944 | __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) |
---|
1945 | { |
---|
1946 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6); |
---|
1947 | } |
---|
1948 | |
---|
1949 | #endif /* DMA1_Channel6 */ |
---|
1950 | #if defined(DMA1_Channel7) |
---|
1951 | /** |
---|
1952 | * @brief Clear Channel 7 half transfer flag. |
---|
1953 | * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 |
---|
1954 | * @param DMAx DMAx Instance |
---|
1955 | * @retval None |
---|
1956 | */ |
---|
1957 | __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) |
---|
1958 | { |
---|
1959 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7); |
---|
1960 | } |
---|
1961 | |
---|
1962 | #endif /* DMA1_Channel7 */ |
---|
1963 | /** |
---|
1964 | * @brief Clear Channel 1 transfer error flag. |
---|
1965 | * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 |
---|
1966 | * @param DMAx DMAx Instance |
---|
1967 | * @retval None |
---|
1968 | */ |
---|
1969 | __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) |
---|
1970 | { |
---|
1971 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1); |
---|
1972 | } |
---|
1973 | |
---|
1974 | /** |
---|
1975 | * @brief Clear Channel 2 transfer error flag. |
---|
1976 | * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 |
---|
1977 | * @param DMAx DMAx Instance |
---|
1978 | * @retval None |
---|
1979 | */ |
---|
1980 | __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) |
---|
1981 | { |
---|
1982 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2); |
---|
1983 | } |
---|
1984 | |
---|
1985 | /** |
---|
1986 | * @brief Clear Channel 3 transfer error flag. |
---|
1987 | * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 |
---|
1988 | * @param DMAx DMAx Instance |
---|
1989 | * @retval None |
---|
1990 | */ |
---|
1991 | __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) |
---|
1992 | { |
---|
1993 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3); |
---|
1994 | } |
---|
1995 | |
---|
1996 | /** |
---|
1997 | * @brief Clear Channel 4 transfer error flag. |
---|
1998 | * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 |
---|
1999 | * @param DMAx DMAx Instance |
---|
2000 | * @retval None |
---|
2001 | */ |
---|
2002 | __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) |
---|
2003 | { |
---|
2004 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4); |
---|
2005 | } |
---|
2006 | |
---|
2007 | /** |
---|
2008 | * @brief Clear Channel 5 transfer error flag. |
---|
2009 | * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 |
---|
2010 | * @param DMAx DMAx Instance |
---|
2011 | * @retval None |
---|
2012 | */ |
---|
2013 | __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) |
---|
2014 | { |
---|
2015 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5); |
---|
2016 | } |
---|
2017 | |
---|
2018 | #if defined(DMA1_Channel6) |
---|
2019 | /** |
---|
2020 | * @brief Clear Channel 6 transfer error flag. |
---|
2021 | * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 |
---|
2022 | * @param DMAx DMAx Instance |
---|
2023 | * @retval None |
---|
2024 | */ |
---|
2025 | __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) |
---|
2026 | { |
---|
2027 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6); |
---|
2028 | } |
---|
2029 | |
---|
2030 | #endif /* DMA1_Channel6 */ |
---|
2031 | #if defined(DMA1_Channel7) |
---|
2032 | /** |
---|
2033 | * @brief Clear Channel 7 transfer error flag. |
---|
2034 | * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 |
---|
2035 | * @param DMAx DMAx Instance |
---|
2036 | * @retval None |
---|
2037 | */ |
---|
2038 | __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) |
---|
2039 | { |
---|
2040 | WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7); |
---|
2041 | } |
---|
2042 | |
---|
2043 | #endif /* DMA1_Channel7 */ |
---|
2044 | /** |
---|
2045 | * @} |
---|
2046 | */ |
---|
2047 | |
---|
2048 | /** @defgroup DMA_LL_EF_IT_Management IT_Management |
---|
2049 | * @{ |
---|
2050 | */ |
---|
2051 | /** |
---|
2052 | * @brief Enable Transfer complete interrupt. |
---|
2053 | * @rmtoll CCR TCIE LL_DMA_EnableIT_TC |
---|
2054 | * @param DMAx DMAx Instance |
---|
2055 | * @param Channel This parameter can be one of the following values: |
---|
2056 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2057 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2058 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2059 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2060 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2061 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2062 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2063 | * @retval None |
---|
2064 | */ |
---|
2065 | __STATIC_INLINE void LL_DMA_EnableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2066 | { |
---|
2067 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2068 | SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE); |
---|
2069 | } |
---|
2070 | |
---|
2071 | /** |
---|
2072 | * @brief Enable Half transfer interrupt. |
---|
2073 | * @rmtoll CCR HTIE LL_DMA_EnableIT_HT |
---|
2074 | * @param DMAx DMAx Instance |
---|
2075 | * @param Channel This parameter can be one of the following values: |
---|
2076 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2077 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2078 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2079 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2080 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2081 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2082 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2083 | * @retval None |
---|
2084 | */ |
---|
2085 | __STATIC_INLINE void LL_DMA_EnableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2086 | { |
---|
2087 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2088 | SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE); |
---|
2089 | } |
---|
2090 | |
---|
2091 | /** |
---|
2092 | * @brief Enable Transfer error interrupt. |
---|
2093 | * @rmtoll CCR TEIE LL_DMA_EnableIT_TE |
---|
2094 | * @param DMAx DMAx Instance |
---|
2095 | * @param Channel This parameter can be one of the following values: |
---|
2096 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2097 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2098 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2099 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2100 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2101 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2102 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2103 | * @retval None |
---|
2104 | */ |
---|
2105 | __STATIC_INLINE void LL_DMA_EnableIT_TE(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2106 | { |
---|
2107 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2108 | SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TEIE); |
---|
2109 | } |
---|
2110 | |
---|
2111 | /** |
---|
2112 | * @brief Disable Transfer complete interrupt. |
---|
2113 | * @rmtoll CCR TCIE LL_DMA_DisableIT_TC |
---|
2114 | * @param DMAx DMAx Instance |
---|
2115 | * @param Channel This parameter can be one of the following values: |
---|
2116 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2117 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2118 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2119 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2120 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2121 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2122 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2123 | * @retval None |
---|
2124 | */ |
---|
2125 | __STATIC_INLINE void LL_DMA_DisableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2126 | { |
---|
2127 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2128 | CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE); |
---|
2129 | } |
---|
2130 | |
---|
2131 | /** |
---|
2132 | * @brief Disable Half transfer interrupt. |
---|
2133 | * @rmtoll CCR HTIE LL_DMA_DisableIT_HT |
---|
2134 | * @param DMAx DMAx Instance |
---|
2135 | * @param Channel This parameter can be one of the following values: |
---|
2136 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2137 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2138 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2139 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2140 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2141 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2142 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2143 | * @retval None |
---|
2144 | */ |
---|
2145 | __STATIC_INLINE void LL_DMA_DisableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2146 | { |
---|
2147 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2148 | CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE); |
---|
2149 | } |
---|
2150 | |
---|
2151 | /** |
---|
2152 | * @brief Disable Transfer error interrupt. |
---|
2153 | * @rmtoll CCR TEIE LL_DMA_DisableIT_TE |
---|
2154 | * @param DMAx DMAx Instance |
---|
2155 | * @param Channel This parameter can be one of the following values: |
---|
2156 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2157 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2158 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2159 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2160 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2161 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2162 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2163 | * @retval None |
---|
2164 | */ |
---|
2165 | __STATIC_INLINE void LL_DMA_DisableIT_TE(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2166 | { |
---|
2167 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2168 | CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TEIE); |
---|
2169 | } |
---|
2170 | |
---|
2171 | /** |
---|
2172 | * @brief Check if Transfer complete Interrupt is enabled. |
---|
2173 | * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC |
---|
2174 | * @param DMAx DMAx Instance |
---|
2175 | * @param Channel This parameter can be one of the following values: |
---|
2176 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2177 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2178 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2179 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2180 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2181 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2182 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2183 | * @retval State of bit (1 or 0). |
---|
2184 | */ |
---|
2185 | __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2186 | { |
---|
2187 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2188 | return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
2189 | DMA_CCR_TCIE) == (DMA_CCR_TCIE)) ? 1UL : 0UL); |
---|
2190 | } |
---|
2191 | |
---|
2192 | /** |
---|
2193 | * @brief Check if Half transfer Interrupt is enabled. |
---|
2194 | * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT |
---|
2195 | * @param DMAx DMAx Instance |
---|
2196 | * @param Channel This parameter can be one of the following values: |
---|
2197 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2198 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2199 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2200 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2201 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2202 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2203 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2204 | * @retval State of bit (1 or 0). |
---|
2205 | */ |
---|
2206 | __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2207 | { |
---|
2208 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2209 | return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
2210 | DMA_CCR_HTIE) == (DMA_CCR_HTIE)) ? 1UL : 0UL); |
---|
2211 | } |
---|
2212 | |
---|
2213 | /** |
---|
2214 | * @brief Check if Transfer error Interrupt is enabled. |
---|
2215 | * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE |
---|
2216 | * @param DMAx DMAx Instance |
---|
2217 | * @param Channel This parameter can be one of the following values: |
---|
2218 | * @arg @ref LL_DMA_CHANNEL_1 |
---|
2219 | * @arg @ref LL_DMA_CHANNEL_2 |
---|
2220 | * @arg @ref LL_DMA_CHANNEL_3 |
---|
2221 | * @arg @ref LL_DMA_CHANNEL_4 |
---|
2222 | * @arg @ref LL_DMA_CHANNEL_5 |
---|
2223 | * @arg @ref LL_DMA_CHANNEL_6 |
---|
2224 | * @arg @ref LL_DMA_CHANNEL_7 |
---|
2225 | * @retval State of bit (1 or 0). |
---|
2226 | */ |
---|
2227 | __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(const DMA_TypeDef *DMAx, uint32_t Channel) |
---|
2228 | { |
---|
2229 | uint32_t dma_base_addr = (uint32_t)DMAx; |
---|
2230 | return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + CHANNEL_OFFSET_TAB[Channel]))->CCR, |
---|
2231 | DMA_CCR_TEIE) == (DMA_CCR_TEIE)) ? 1UL : 0UL); |
---|
2232 | } |
---|
2233 | |
---|
2234 | /** |
---|
2235 | * @} |
---|
2236 | */ |
---|
2237 | |
---|
2238 | #if defined(USE_FULL_LL_DRIVER) |
---|
2239 | /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions |
---|
2240 | * @{ |
---|
2241 | */ |
---|
2242 | ErrorStatus LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); |
---|
2243 | ErrorStatus LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); |
---|
2244 | void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); |
---|
2245 | |
---|
2246 | /** |
---|
2247 | * @} |
---|
2248 | */ |
---|
2249 | #endif /* USE_FULL_LL_DRIVER */ |
---|
2250 | |
---|
2251 | /** |
---|
2252 | * @} |
---|
2253 | */ |
---|
2254 | |
---|
2255 | /** |
---|
2256 | * @} |
---|
2257 | */ |
---|
2258 | |
---|
2259 | #endif /* DMA1 || DMA2 */ |
---|
2260 | |
---|
2261 | /** |
---|
2262 | * @} |
---|
2263 | */ |
---|
2264 | |
---|
2265 | #ifdef __cplusplus |
---|
2266 | } |
---|
2267 | #endif |
---|
2268 | |
---|
2269 | #endif /* STM32G0xx_LL_DMA_H */ |
---|
2270 | |
---|