1 /**
2 ******************************************************************************
3 * @file stm32u5xx_ll_dma.h
4 * @author MCD Application Team
5 * @brief Header file of DMA LL module.
6 ******************************************************************************
7 * @attention
8 *
9 * Copyright (c) 2021 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 @verbatim
18 ==============================================================================
19 ##### LL DMA driver acronyms #####
20 ==============================================================================
21 [..] Acronyms table :
22 =========================================
23 || Acronym || ||
24 =========================================
25 || SRC || Source ||
26 || DEST || Destination ||
27 || ADDR || Address ||
28 || ADDRS || Addresses ||
29 || INC || Increment / Incremented ||
30 || DEC || Decrement / Decremented ||
31 || BLK || Block ||
32 || RPT || Repeat / Repeated ||
33 || TRIG || Trigger ||
34 =========================================
35 @endverbatim
36 ******************************************************************************
37 */
38
39 /* Define to prevent recursive inclusion -------------------------------------*/
40 #ifndef STM32U5xx_LL_DMA_H
41 #define STM32U5xx_LL_DMA_H
42
43 #ifdef __cplusplus
44 extern "C" {
45 #endif /* __cplusplus */
46
47 /* Includes ------------------------------------------------------------------*/
48 #include "stm32u5xx.h"
49
50 /** @addtogroup STM32U5xx_LL_Driver
51 * @{
52 */
53
54 #if (defined (GPDMA1) || defined (LPDMA1))
55
56 /** @defgroup DMA_LL DMA
57 * @{
58 */
59
60 /* Private types -------------------------------------------------------------*/
61 /* Private variables ---------------------------------------------------------*/
62
63 /** @defgroup DMA_LL_Private_Variables DMA Private Variables
64 * @{
65 */
66 #define DMA_CHANNEL0_OFFSET (0x00000050UL)
67 #define DMA_CHANNEL1_OFFSET (0x000000D0UL)
68 #define DMA_CHANNEL2_OFFSET (0x00000150UL)
69 #define DMA_CHANNEL3_OFFSET (0x000001D0UL)
70 #define DMA_CHANNEL4_OFFSET (0x00000250UL)
71 #define DMA_CHANNEL5_OFFSET (0x000002D0UL)
72 #define DMA_CHANNEL6_OFFSET (0x00000350UL)
73 #define DMA_CHANNEL7_OFFSET (0x000003D0UL)
74 #define DMA_CHANNEL8_OFFSET (0x00000450UL)
75 #define DMA_CHANNEL9_OFFSET (0x000004D0UL)
76 #define DMA_CHANNEL10_OFFSET (0x00000550UL)
77 #define DMA_CHANNEL11_OFFSET (0x000005D0UL)
78 #define DMA_CHANNEL12_OFFSET (0x00000650UL)
79 #define DMA_CHANNEL13_OFFSET (0x000006D0UL)
80 #define DMA_CHANNEL14_OFFSET (0x00000750UL)
81 #define DMA_CHANNEL15_OFFSET (0x000007D0UL)
82
83 /* Array used to get the DMA Channel register offset versus Channel index LL_DMA_CHANNEL_x */
84 static const uint32_t LL_DMA_CH_OFFSET_TAB[] =
85 {
86 DMA_CHANNEL0_OFFSET, DMA_CHANNEL1_OFFSET, DMA_CHANNEL2_OFFSET, DMA_CHANNEL3_OFFSET,
87 DMA_CHANNEL4_OFFSET, DMA_CHANNEL5_OFFSET, DMA_CHANNEL6_OFFSET, DMA_CHANNEL7_OFFSET,
88 DMA_CHANNEL8_OFFSET, DMA_CHANNEL9_OFFSET, DMA_CHANNEL10_OFFSET, DMA_CHANNEL11_OFFSET,
89 DMA_CHANNEL12_OFFSET, DMA_CHANNEL13_OFFSET, DMA_CHANNEL14_OFFSET, DMA_CHANNEL15_OFFSET,
90 };
91
92 /**
93 * @}
94 */
95
96 /* Private constants ---------------------------------------------------------*/
97 /* Private macros ------------------------------------------------------------*/
98 /* Exported types ------------------------------------------------------------*/
99
100 #if defined (USE_FULL_LL_DRIVER)
101 /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
102 * @{
103 */
104
105 /**
106 * @brief LL DMA init structure definition.
107 */
108 typedef struct
109 {
110 uint32_t SrcAddress; /*!< This field specify the data transfer source address.
111 Programming this field is mandatory for all available DMA channels.
112 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF.
113 This feature can be modified afterwards using unitary function
114 @ref LL_DMA_SetSrcAddress(). */
115
116 uint32_t DestAddress; /*!< This field specify the data transfer destination address.
117 Programming this field is mandatory for all available DMA channels.
118 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF.
119 This feature can be modified afterwards using unitary function
120 @ref LL_DMA_SetDestAddress(). */
121
122 uint32_t Direction; /*!< This field specify the data transfer direction.
123 Programming this field is mandatory for all available DMA channels.
124 This parameter can be a value of @ref DMA_LL_EC_TRANSFER_DIRECTION.
125 This feature can be modified afterwards using unitary function
126 @ref LL_DMA_SetDataTransferDirection(). */
127
128 uint32_t BlkHWRequest; /*!< This field specify the hardware request unity.
129 Programming this field is mandatory for all available DMA channels.
130 This parameter can be a value of @ref DMA_LL_EC_BLKHW_REQUEST.
131 This feature can be modified afterwards using unitary function
132 @ref LL_DMA_SetBlkHWRequest(). */
133
134 uint32_t DataAlignment; /*!< This field specify the transfer data alignment.
135 Programming this field is mandatory for all available DMA channels.
136 This parameter can be a value of @ref DMA_LL_EC_DATA_ALIGNMENT.
137 This feature can be modified afterwards using unitary function
138 @ref LL_DMA_SetDataAlignment(). */
139
140 uint32_t SrcBurstLength; /*!< This field specify the source burst length of transfer in bytes.
141 Programming this field is not mandatory for LPDMA channels.
142 This parameter must be a value between Min_Data = 1 and Max_Data = 64.
143 This feature can be modified afterwards using unitary function
144 @ref LL_DMA_SetSrcBurstLength(). */
145
146 uint32_t DestBurstLength; /*!< This field specify the destination burst length of transfer in bytes.
147 Programming this field is not mandatory for LPDMA channels.
148 This parameter must be a value between Min_Data = 1 and Max_Data = 64.
149 This feature can be modified afterwards using unitary function
150 @ref LL_DMA_SetDestBurstLength(). */
151
152 uint32_t SrcDataWidth; /*!< This field specify the source data width.
153 Programming this field is mandatory for all available DMA channels.
154 This parameter can be a value of @ref DMA_LL_EC_SOURCE_DATA_WIDTH.
155 This feature can be modified afterwards using unitary function
156 @ref LL_DMA_SetSrcDataWidth(). */
157
158 uint32_t DestDataWidth; /*!< This field specify the destination data width.
159 Programming this field is mandatory for all available DMA channels.
160 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_DATA_WIDTH.
161 This feature can be modified afterwards using unitary function
162 @ref LL_DMA_SetDestDataWidth(). */
163
164 uint32_t SrcIncMode; /*!< This field specify the source burst increment mode.
165 Programming this field is mandatory for all available DMA channels.
166 This parameter can be a value of @ref DMA_LL_EC_SOURCE_INCREMENT_MODE.
167 This feature can be modified afterwards using unitary function
168 @ref LL_DMA_SetSrcIncMode(). */
169
170 uint32_t DestIncMode; /*!< This field specify the destination burst increment mode.
171 Programming this field is mandatory for all available DMA channels.
172 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_INCREMENT_MODE.
173 This feature can be modified afterwards using unitary function
174 @ref LL_DMA_SetDestIncMode(). */
175
176 uint32_t Priority; /*!< This field specify the channel priority level.
177 Programming this field is mandatory for all available DMA channels.
178 This parameter can be a value of @ref DMA_LL_EC_PRIORITY_LEVEL.
179 This feature can be modified afterwards using unitary function
180 @ref LL_DMA_SetChannelPriorityLevel(). */
181
182 uint32_t BlkDataLength; /*!< This field specify the length of a block transfer in bytes.
183 Programming this field is mandatory for all available DMA channels.
184 This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF.
185 This feature can be modified afterwards using unitary function
186 @ref LL_DMA_SetBlkDataLength(). */
187
188 uint32_t BlkRptCount; /*!< This field specify the number of repetitions of the current block.
189 Programming this field is mandatory only for 2D addressing channels.
190 This parameter can be a value between 1 and 2048 Min_Data = 0
191 and Max_Data = 0x000007FF.
192 This feature can be modified afterwards using unitary function
193 @ref LL_DMA_SetBlkRptCount(). */
194
195 uint32_t TriggerMode; /*!< This field specify the trigger mode.
196 Programming this field is mandatory for all available DMA channels.
197 This parameter can be a value of @ref DMA_LL_EC_TRIGGER_MODE.
198 This feature can be modified afterwards using unitary function
199 @ref LL_DMA_SetTriggerMode(). */
200
201 uint32_t TriggerPolarity; /*!< This field specify the trigger event polarity.
202 Programming this field is mandatory for all available DMA channels.
203 This parameter can be a value of @ref DMA_LL_EC_TRIGGER_POLARITY.
204 This feature can be modified afterwards using unitary function
205 @ref LL_DMA_SetTriggerPolarity(). */
206
207 uint32_t TriggerSelection; /*!< This field specify the trigger event selection.
208 Programming this field is mandatory for all available DMA channels.
209 This parameter can be a value of @ref DMA_LL_EC_TRIGGER_SELECTION.
210 This feature can be modified afterwards using unitary function
211 @ref LL_DMA_SetHWTrigger(). */
212
213 uint32_t Request; /*!< This field specify the peripheral request selection.
214 Programming this field is mandatory for all available DMA channels.
215 This parameter can be a value of @ref DMA_LL_EC_REQUEST_SELECTION.
216 This feature can be modified afterwards using unitary function
217 @ref LL_DMA_SetPeriphRequest(). */
218
219 uint32_t TransferEventMode; /*!< This field specify the transfer event mode.
220 Programming this field is mandatory for all available DMA channels.
221 This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.
222 This feature can be modified afterwards using unitary function
223 @ref LL_DMA_SetTransferEventMode(). */
224
225 uint32_t DestHWordExchange; /*!< This field specify the destination half word exchange.
226 Programming this field is not mandatory for LPDMA channels.
227 This parameter can be a value of @ref DMA_LL_EC_DEST_HALFWORD_EXCHANGE.
228 This feature can be modified afterwards using unitary function
229 @ref LL_DMA_SetDestHWordExchange(). */
230
231 uint32_t DestByteExchange; /*!< This field specify the destination byte exchange.
232 Programming this field is not mandatory for LPDMA channels.
233 This parameter can be a value of @ref DMA_LL_EC_DEST_BYTE_EXCHANGE.
234 This feature can be modified afterwards using unitary function
235 @ref LL_DMA_SetDestByteExchange(). */
236
237 uint32_t SrcByteExchange; /*!< This field specify the source byte exchange.
238 Programming this field is not mandatory for LPDMA channels.
239 This parameter can be a value of @ref DMA_LL_EC_SRC_BYTE_EXCHANGE.
240 This feature can be modified afterwards using unitary function
241 @ref LL_DMA_SetSrcByteExchange(). */
242
243 uint32_t SrcAllocatedPort; /*!< This field specify the source allocated port.
244 Programming this field is not mandatory for LPDMA channels.
245 This parameter can be a value of @ref DMA_LL_EC_SOURCE_ALLOCATED_PORT.
246 This feature can be modified afterwards using unitary function
247 @ref LL_DMA_SetSrcAllocatedPort(). */
248
249 uint32_t DestAllocatedPort; /*!< This field specify the destination allocated port.
250 Programming this field is not mandatory for LPDMA channels.
251 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_ALLOCATED_PORT.
252 This feature can be modified afterwards using unitary function
253 @ref LL_DMA_SetDestAllocatedPort(). */
254
255 uint32_t LinkAllocatedPort; /*!< This field specify the linked-list allocated port.
256 Programming this field is not mandatory for LPDMA channels.
257 This parameter can be a value of @ref DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT.
258 This feature can be modified afterwards using unitary function
259 @ref LL_DMA_SetLinkAllocatedPort(). */
260
261 uint32_t LinkStepMode; /*!< This field specify the link step mode.
262 Programming this field is mandatory for all available DMA channels.
263 This parameter can be a value of @ref DMA_LL_EC_LINK_STEP_MODE.
264 This feature can be modified afterwards using unitary function
265 @ref LL_DMA_SetLinkStepMode(). */
266
267 uint32_t SrcAddrUpdateMode; /*!< This field specify the source address update mode.
268 Programming this field is mandatory only for 2D addressing channels.
269 This parameter can be a value of @ref DMA_LL_EC_SRC_ADDR_UPDATE_MODE.
270 This feature can be modified afterwards using unitary function
271 @ref LL_DMA_SetSrcAddrUpdate(). */
272
273 uint32_t DestAddrUpdateMode; /*!< This field specify the destination address update mode.
274 Programming this field is mandatory only for 2D addressing channels.
275 This parameter can be a value of @ref DMA_LL_EC_DEST_ADDR_UPDATE_MODE.
276 This feature can be modified afterwards using unitary function
277 @ref LL_DMA_SetDestAddrUpdate(). */
278
279 uint32_t SrcAddrOffset; /*!< This field specifies the source address offset.
280 Programming this field is mandatory only for 2D addressing channels.
281 This parameter can be a value Between 0 to 0x00001FFF.
282 This feature can be modified afterwards using unitary function
283 @ref LL_DMA_SetSrcAddrUpdateValue(). */
284
285 uint32_t DestAddrOffset; /*!< This field specifies the destination address offset.
286 Programming this field is mandatory only for 2D addressing channels.
287 This parameter can be a value Between 0 to 0x00001FFF.
288 This feature can be modified afterwards using unitary function
289 @ref LL_DMA_SetDestAddrUpdateValue(). */
290
291 uint32_t BlkRptSrcAddrUpdateMode; /*!< This field specifies the block repeat source address update mode.
292 Programming this field is mandatory only for 2D addressing channels.
293 This parameter can be a value of @ref DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE.
294 This feature can be modified afterwards using unitary function
295 @ref LL_DMA_SetBlkRptSrcAddrUpdate(). */
296
297 uint32_t BlkRptDestAddrUpdateMode; /*!< This field specifies the block repeat destination address update mode.
298 Programming this field is mandatory only for 2D addressing channels.
299 This parameter can be a value of @ref DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE.
300 This feature can be modified afterwards using unitary function
301 @ref LL_DMA_SetBlkRptDestAddrUpdate(). */
302
303 uint32_t BlkRptSrcAddrOffset; /*!< This field specifies the block repeat source address offset.
304 Programming this field is mandatory only for 2D addressing channels.
305 This parameter can be a value Between 0 to 0x0000FFFF.
306 This feature can be modified afterwards using unitary function
307 @ref LL_DMA_SetBlkRptSrcAddrUpdateValue(). */
308
309 uint32_t BlkRptDestAddrOffset; /*!< This field specifies the block repeat destination address offset.
310 Programming this field is mandatory only for 2D addressing channels.
311 This parameter can be a value Between 0 to 0x0000FFFF.
312 This feature can be modified afterwards using unitary function
313 @ref LL_DMA_SetBlkRptDestAddrUpdateValue(). */
314
315 uint32_t LinkedListBaseAddr; /*!< This field specify the linked list base address.
316 Programming this field is mandatory for all available DMA channels.
317 This parameter can be a value Between 0 to 0xFFFF0000 (where the 4 first
318 bytes are always forced to 0).
319 This feature can be modified afterwards using unitary function
320 @ref LL_DMA_SetLinkedListBaseAddr(). */
321
322 uint32_t LinkedListAddrOffset; /*!< Specifies the linked list address offset.
323 Programming this field is mandatory for all available DMA channels.
324 This parameter can be a value Between 0 to 0x0000FFFC.
325 This feature can be modified afterwards using unitary function
326 @ref LL_DMA_SetLinkedListAddrOffset(). */
327
328 } LL_DMA_InitTypeDef;
329
330
331 /**
332 * @brief LL DMA init linked list structure definition.
333 */
334 typedef struct
335 {
336 uint32_t Priority; /*!< This field specify the channel priority level.
337 Programming this field is mandatory for all available DMA channels.
338 This parameter can be a value of @ref DMA_LL_EC_PRIORITY_LEVEL.
339 This feature can be modified afterwards using unitary function
340 @ref LL_DMA_SetChannelPriorityLevel(). */
341
342 uint32_t LinkStepMode; /*!< This field specify the link step mode.
343 Programming this field is mandatory for all available DMA channels.
344 This parameter can be a value of @ref DMA_LL_EC_LINK_STEP_MODE.
345 This feature can be modified afterwards using unitary function
346 @ref LL_DMA_SetLinkStepMode(). */
347
348 uint32_t LinkAllocatedPort; /*!< This field specify the linked-list allocated port.
349 Programming this field is not mandatory for LPDMA channels.
350 This parameter can be a value of @ref DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT.
351 This feature can be modified afterwards using unitary function
352 @ref LL_DMA_SetLinkAllocatedPort(). */
353
354 uint32_t TransferEventMode; /*!< This field specify the transfer event mode.
355 Programming this field is mandatory for all available DMA channels.
356 This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE.
357 This feature can be modified afterwards using unitary function
358 @ref LL_DMA_SetTransferEventMode(). */
359 } LL_DMA_InitLinkedListTypeDef;
360
361
362 /**
363 * @brief LL DMA node init structure definition.
364 */
365 typedef struct
366 {
367 /* CTR1 register fields ******************************************************
368 If any CTR1 fields need to be updated comparing to previous node, it is
369 mandatory to update the new value in CTR1 register fields and enable update
370 CTR1 register in UpdateRegisters fields if it is not enabled in the
371 previous node.
372
373 If the node to be created is for LPDMA channels, there is no need to fill
374 the following fields for CTR1 register :
375 - DestAllocatedPort.
376 - DestHWordExchange.
377 - DestByteExchange.
378 - DestBurstLength.
379 - SrcAllocatedPort.
380 - SrcByteExchange.
381 - SrcBurstLength.
382
383 */
384 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
385 uint32_t DestSecure; /*!< This field specify the destination secure.
386 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_SECURITY_ATTRIBUTE. */
387 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
388
389 uint32_t DestAllocatedPort; /*!< This field specify the destination allocated port.
390 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_ALLOCATED_PORT. */
391
392 uint32_t DestHWordExchange; /*!< This field specify the destination half word exchange.
393 This parameter can be a value of @ref DMA_LL_EC_DEST_HALFWORD_EXCHANGE. */
394
395 uint32_t DestByteExchange; /*!< This field specify the destination byte exchange.
396 This parameter can be a value of @ref DMA_LL_EC_DEST_BYTE_EXCHANGE. */
397
398 uint32_t DestBurstLength; /*!< This field specify the destination burst length of transfer in bytes.
399 This parameter must be a value between Min_Data = 1 and Max_Data = 64. */
400
401 uint32_t DestIncMode; /*!< This field specify the destination increment mode.
402 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_INCREMENT_MODE. */
403
404 uint32_t DestDataWidth; /*!< This field specify the destination data width.
405 This parameter can be a value of @ref DMA_LL_EC_DESTINATION_DATA_WIDTH. */
406
407 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
408 uint32_t SrcSecure; /*!< This field specify the source secure.
409 This parameter can be a value of @ref DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE. */
410 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
411
412 uint32_t SrcAllocatedPort; /*!< This field specify the source allocated port.
413 This parameter can be a value of @ref DMA_LL_EC_SOURCE_ALLOCATED_PORT. */
414
415 uint32_t SrcByteExchange; /*!< This field specify the source byte exchange.
416 This parameter can be a value of @ref DMA_LL_EC_SRC_BYTE_EXCHANGE. */
417
418 uint32_t DataAlignment; /*!< This field specify the transfer data alignment.
419 This parameter can be a value of @ref DMA_LL_EC_DATA_ALIGNMENT. */
420
421 uint32_t SrcBurstLength; /*!< This field specify the source burst length of transfer in bytes.
422 This parameter must be a value between Min_Data = 1 and Max_Data = 64. */
423
424 uint32_t SrcIncMode; /*!< This field specify the source increment mode.
425 This parameter can be a value of @ref DMA_LL_EC_SOURCE_INCREMENT_MODE. */
426
427 uint32_t SrcDataWidth; /*!< This field specify the source data width.
428 This parameter can be a value of @ref DMA_LL_EC_SOURCE_DATA_WIDTH. */
429
430
431 /* CTR2 register fields ******************************************************
432 If any CTR2 fields need to be updated comparing to previous node, it is
433 mandatory to update the new value in CTR2 register fields and enable update
434 CTR2 register in UpdateRegisters fields if it is not enabled in the
435 previous node.
436
437 For all node created, filling all fields is mandatory.
438 */
439 uint32_t TransferEventMode; /*!< This field specify the transfer event mode.
440 This parameter can be a value of @ref DMA_LL_EC_TRANSFER_EVENT_MODE. */
441
442 uint32_t TriggerPolarity; /*!< This field specify the trigger event polarity.
443 This parameter can be a value of @ref DMA_LL_EC_TRIGGER_POLARITY. */
444
445 uint32_t TriggerSelection; /*!< This field specify the trigger event selection.
446 This parameter can be a value of @ref DMA_LL_EC_TRIGGER_SELECTION. */
447
448 uint32_t TriggerMode; /*!< This field specify the trigger mode.
449 This parameter can be a value of @ref DMA_LL_EC_TRIGGER_MODE. */
450
451 uint32_t BlkHWRequest; /*!< This field specify the hardware request unity.
452 This parameter can be a value of @ref DMA_LL_EC_BLKHW_REQUEST. */
453
454 uint32_t Direction; /*!< This field specify the transfer direction.
455 This parameter can be a value of @ref DMA_LL_EC_TRANSFER_DIRECTION. */
456
457 uint32_t Request; /*!< This field specify the peripheral request selection.
458 This parameter can be a value of @ref DMA_LL_EC_REQUEST_SELECTION. */
459
460
461 /* CBR1 register fields ******************************************************
462 If any CBR1 fields need to be updated comparing to previous node, it is
463 mandatory to update the new value in CBR1 register fields and enable update
464 CBR1 register in UpdateRegisters fields if it is not enabled in the
465 previous node.
466
467 If the node to be created is not for 2D addressing channels, there is no
468 need to fill the following fields for CBR1 register :
469 - BlkReptDestAddrUpdate.
470 - BlkRptSrcAddrUpdate.
471 - DestAddrUpdate.
472 - SrcAddrUpdate.
473 - BlkRptCount.
474 */
475 uint32_t BlkRptDestAddrUpdateMode; /*!< This field specifies the block repeat destination address update mode.
476 This parameter can be a value of
477 @ref DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE. */
478
479 uint32_t BlkRptSrcAddrUpdateMode; /*!< This field specifies the block repeat source address update mode.
480 This parameter can be a value of
481 @ref DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE. */
482
483 uint32_t DestAddrUpdateMode; /*!< This field specify the Destination address update mode.
484 This parameter can be a value of @ref DMA_LL_EC_DEST_ADDR_UPDATE_MODE. */
485
486 uint32_t SrcAddrUpdateMode; /*!< This field specify the Source address update mode.
487 This parameter can be a value of @ref DMA_LL_EC_SRC_ADDR_UPDATE_MODE. */
488
489 uint32_t BlkRptCount; /*!< This field specify the number of repetitions of the current block.
490 This parameter can be a value between 1 and 2048 Min_Data = 0
491 and Max_Data = 0x000007FF. */
492
493 uint32_t BlkDataLength; /*!< This field specify the length of a block transfer in bytes.
494 This parameter must be a value between Min_Data = 0
495 and Max_Data = 0x0000FFFF. */
496
497 /* CSAR register fields ******************************************************
498 If any CSAR fields need to be updated comparing to previous node, it is
499 mandatory to update the new value in CSAR register fields and enable update
500 CSAR register in UpdateRegisters fields if it is not enabled in the
501 previous node.
502
503 For all node created, filling all fields is mandatory.
504 */
505 uint32_t SrcAddress; /*!< This field specify the transfer source address.
506 This parameter must be a value between Min_Data = 0
507 and Max_Data = 0xFFFFFFFF. */
508
509
510 /* CDAR register fields ******************************************************
511 If any CDAR fields need to be updated comparing to previous node, it is
512 mandatory to update the new value in CDAR register fields and enable update
513 CDAR register in UpdateRegisters fields if it is not enabled in the
514 previous node.
515
516 For all node created, filling all fields is mandatory.
517 */
518 uint32_t DestAddress; /*!< This field specify the transfer destination address.
519 This parameter must be a value between Min_Data = 0
520 and Max_Data = 0xFFFFFFFF. */
521
522 /* CTR3 register fields ******************************************************
523 If any CTR3 fields need to be updated comparing to previous node, it is
524 mandatory to update the new value in CTR3 register fields and enable update
525 CTR3 register in UpdateRegisters fields if it is not enabled in the
526 previous node.
527
528 This register is used only for 2D addressing channels.
529 If used channel is linear addressing, this register will be overwritten by
530 CLLR register in memory.
531 When this register is enabled on UpdateRegisters and the selected channel
532 is linear addressing, LL APIs will discard this register update in memory.
533 */
534 uint32_t DestAddrOffset; /*!< This field specifies the destination address offset.
535 This parameter can be a value Between 0 to 0x00001FFF. */
536
537 uint32_t SrcAddrOffset; /*!< This field specifies the source address offset.
538 This parameter can be a value Between 0 to 0x00001FFF. */
539
540
541 /* CBR2 register fields ******************************************************
542 If any CBR2 fields need to be updated comparing to previous node, it is
543 mandatory to update the new value in CBR2 register fields and enable update
544 CBR2 register in UpdateRegisters fields if it is not enabled in the
545 previous node.
546
547 This register is used only for 2D addressing channels.
548 If used channel is linear addressing, this register will be discarded in
549 memory. When this register is enabled on UpdateRegisters and the selected
550 channel is linear addressing, LL APIs will discard this register update in
551 memory.
552 */
553 uint32_t BlkRptDestAddrOffset; /*!< This field specifies the block repeat destination address offset.
554 This parameter can be a value Between 0 to 0x0000FFFF. */
555
556 uint32_t BlkRptSrcAddrOffset; /*!< This field specifies the block repeat source address offset.
557 This parameter can be a value Between 0 to 0x0000FFFF. */
558
559 /* CLLR register fields ******************************************************
560 If any CLLR fields need to be updated comparing to previous node, it is
561 mandatory to update the new value in CLLR register fields and enable update
562 CLLR register in UpdateRegisters fields if it is not enabled in the
563 previous node.
564
565 If used channel is linear addressing, there is no need to enable/disable
566 CTR3 and CBR2 register in UpdateRegisters fields as they will be discarded
567 by LL APIs.
568 */
569 uint32_t UpdateRegisters; /*!< Specifies the linked list register update.
570 This parameter can be a value of @ref DMA_LL_EC_LINKEDLIST_REGISTER_UPDATE. */
571
572 /* DMA Node type field *******************************************************
573 This parameter defines node types as node size and node content varies
574 between channels.
575 Thanks to this fields, linked list queue could be created independently
576 from channel selection. So, one queue could be executed by all DMA channels.
577 */
578 uint32_t NodeType; /*!< Specifies the node type to be created.
579 This parameter can be a value of @ref DMA_LL_EC_LINKEDLIST_NODE_TYPE. */
580 } LL_DMA_InitNodeTypeDef;
581
582 /**
583 * @brief LL DMA linked list node structure definition.
584 * @note For 2D addressing channels, the maximum node size is :
585 * (4 Bytes * 8 registers = 32 Bytes).
586 * For GPDMA linear addressing channels, the maximum node size is :
587 * (4 Bytes * 6 registers = 24 Bytes).
588 * For LPDMA linear addressing channels, the maximum node size is :
589 * (4 Bytes * 6 registers = 24 Bytes).
590 */
591 typedef struct
592 {
593 __IO uint32_t LinkRegisters[8U];
594
595 } LL_DMA_LinkNodeTypeDef;
596 /**
597 * @}
598 */
599
600 #endif /* USE_FULL_LL_DRIVER */
601
602 /* Exported constants --------------------------------------------------------*/
603
604 /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
605 * @{
606 */
607
608 /** @defgroup DMA_LL_EC_CHANNEL Channel
609 * @{
610 */
611 #define LL_DMA_CHANNEL_0 (0x00U)
612 #define LL_DMA_CHANNEL_1 (0x01U)
613 #define LL_DMA_CHANNEL_2 (0x02U)
614 #define LL_DMA_CHANNEL_3 (0x03U)
615 #define LL_DMA_CHANNEL_4 (0x04U)
616 #define LL_DMA_CHANNEL_5 (0x05U)
617 #define LL_DMA_CHANNEL_6 (0x06U)
618 #define LL_DMA_CHANNEL_7 (0x07U)
619 #define LL_DMA_CHANNEL_8 (0x08U)
620 #define LL_DMA_CHANNEL_9 (0x09U)
621 #define LL_DMA_CHANNEL_10 (0x0AU)
622 #define LL_DMA_CHANNEL_11 (0x0BU)
623 #define LL_DMA_CHANNEL_12 (0x0CU)
624 #define LL_DMA_CHANNEL_13 (0x0DU)
625 #define LL_DMA_CHANNEL_14 (0x0EU)
626 #define LL_DMA_CHANNEL_15 (0x0FU)
627 #if defined (USE_FULL_LL_DRIVER)
628 #define LL_DMA_CHANNEL_ALL (0x10U)
629 #endif /* USE_FULL_LL_DRIVER */
630 /**
631 * @}
632 */
633
634 #if defined (USE_FULL_LL_DRIVER)
635 /** @defgroup DMA_LL_EC_CLLR_OFFSET CLLR offset
636 * @{
637 */
638 #define LL_DMA_CLLR_OFFSET0 (0x00U)
639 #define LL_DMA_CLLR_OFFSET1 (0x01U)
640 #define LL_DMA_CLLR_OFFSET2 (0x02U)
641 #define LL_DMA_CLLR_OFFSET3 (0x03U)
642 #define LL_DMA_CLLR_OFFSET4 (0x04U)
643 #define LL_DMA_CLLR_OFFSET5 (0x05U)
644 #define LL_DMA_CLLR_OFFSET6 (0x06U)
645 #define LL_DMA_CLLR_OFFSET7 (0x07U)
646 /**
647 * @}
648 */
649 #endif /* USE_FULL_LL_DRIVER */
650
651 /** @defgroup DMA_LL_EC_PRIORITY_LEVEL Priority Level
652 * @{
653 */
654 #define LL_DMA_LOW_PRIORITY_LOW_WEIGHT 0x00000000U /*!< Priority level : Low Priority, Low Weight */
655 #define LL_DMA_LOW_PRIORITY_MID_WEIGHT DMA_CCR_PRIO_0 /*!< Priority level : Low Priority, Mid Weight */
656 #define LL_DMA_LOW_PRIORITY_HIGH_WEIGHT DMA_CCR_PRIO_1 /*!< Priority level : Low Priority, High Weight */
657 #define LL_DMA_HIGH_PRIORITY DMA_CCR_PRIO /*!< Priority level : High Priority */
658 /**
659 * @}
660 */
661
662 /** @defgroup DMA_LL_EC_LINKED_LIST_ALLOCATED_PORT Linked List Allocated Port
663 * @{
664 */
665 #define LL_DMA_LINK_ALLOCATED_PORT0 0x00000000U /*!< Linked List Allocated Port 0 */
666 #define LL_DMA_LINK_ALLOCATED_PORT1 DMA_CCR_LAP /*!< Linked List Allocated Port 1 */
667 /**
668 * @}
669 */
670
671 /** @defgroup DMA_LL_EC_LINK_STEP_MODE Link Step Mode
672 * @{
673 */
674 #define LL_DMA_LSM_FULL_EXECUTION 0x00000000U /*!< Channel execute the full linked list */
675 #define LL_DMA_LSM_1LINK_EXECUTION DMA_CCR_LSM /*!< Channel execute one node of the linked list */
676 /**
677 * @}
678 */
679
680 /** @defgroup DMA_LL_EC_DEST_HALFWORD_EXCHANGE Destination Half-Word Exchange
681 * @{
682 */
683 #define LL_DMA_DEST_HALFWORD_PRESERVE 0x00000000U /*!< No destination Half-Word exchange when destination data width
684 is word */
685 #define LL_DMA_DEST_HALFWORD_EXCHANGE DMA_CTR1_DHX /*!< Destination Half-Word exchange when destination data width
686 is word */
687 /**
688 * @}
689 */
690
691 /** @defgroup DMA_LL_EC_DEST_BYTE_EXCHANGE Destination Byte Exchange
692 * @{
693 */
694 #define LL_DMA_DEST_BYTE_PRESERVE 0x00000000U /*!< No destination Byte exchange when destination data width > Byte */
695 #define LL_DMA_DEST_BYTE_EXCHANGE DMA_CTR1_DBX /*!< Destination Byte exchange when destination data width > Byte */
696 /**
697 * @}
698 */
699
700 /** @defgroup DMA_LL_EC_SRC_BYTE_EXCHANGE Source Byte Exchange
701 * @{
702 */
703 #define LL_DMA_SRC_BYTE_PRESERVE 0x00000000U /*!< No source Byte exchange when source data width is word */
704 #define LL_DMA_SRC_BYTE_EXCHANGE DMA_CTR1_SBX /*!< Source Byte exchange when source data width is word */
705 /**
706 * @}
707 */
708
709 /** @defgroup DMA_LL_EC_SOURCE_ALLOCATED_PORT Source Allocated Port
710 * @{
711 */
712 #define LL_DMA_SRC_ALLOCATED_PORT0 0x00000000U /*!< Source Allocated Port 0 */
713 #define LL_DMA_SRC_ALLOCATED_PORT1 DMA_CTR1_SAP /*!< Source Allocated Port 1 */
714 /**
715 * @}
716 */
717
718 /** @defgroup DMA_LL_EC_DESTINATION_ALLOCATED_PORT Destination Allocated Port
719 * @{
720 */
721 #define LL_DMA_DEST_ALLOCATED_PORT0 0x00000000U /*!< Destination Allocated Port 0 */
722 #define LL_DMA_DEST_ALLOCATED_PORT1 DMA_CTR1_DAP /*!< Destination Allocated Port 1 */
723 /**
724 * @}
725 */
726
727 /** @defgroup DMA_LL_EC_DESTINATION_INCREMENT_MODE Destination Increment Mode
728 * @{
729 */
730 #define LL_DMA_DEST_FIXED 0x00000000U /*!< Destination fixed single/burst */
731 #define LL_DMA_DEST_INCREMENT DMA_CTR1_DINC /*!< Destination incremented single/burst */
732 /**
733 * @}
734 */
735
736 /** @defgroup DMA_LL_EC_DESTINATION_DATA_WIDTH Destination Data Width
737 * @{
738 */
739 #define LL_DMA_DEST_DATAWIDTH_BYTE 0x00000000U /*!< Destination Data Width : Byte */
740 #define LL_DMA_DEST_DATAWIDTH_HALFWORD DMA_CTR1_DDW_LOG2_0 /*!< Destination Data Width : HalfWord */
741 #define LL_DMA_DEST_DATAWIDTH_WORD DMA_CTR1_DDW_LOG2_1 /*!< Destination Data Width : Word */
742 /**
743 * @}
744 */
745
746 /** @defgroup DMA_LL_EC_DATA_ALIGNMENT Data Alignment
747 * @{
748 */
749 #define LL_DMA_DATA_ALIGN_ZEROPADD 0x00000000U /*!< If src data width < dest data width :
750 => Right Aligned padded with 0 up to destination
751 data width.
752 If src data width > dest data width :
753 => Right Aligned Left Truncated down to destination
754 data width. */
755 #define LL_DMA_DATA_ALIGN_SIGNEXTPADD DMA_CTR1_PAM_0 /*!< If src data width < dest data width :
756 => Right Aligned padded with sign extended up to destination
757 data width.
758 If src data width > dest data width :
759 => Left Aligned Right Truncated down to the destination
760 data width */
761 #define LL_DMA_DATA_PACK_UNPACK DMA_CTR1_PAM_1 /*!< If src data width < dest data width :
762 => Packed at the destination data width (Not Available
763 for LPDMA)
764 If src data width > dest data width :
765 => Unpacked at the destination data width (Not Available
766 for LPDMA) */
767 /**
768 * @}
769 */
770
771 /** @defgroup DMA_LL_EC_SOURCE_INCREMENT_MODE Source Increment Mode
772 * @{
773 */
774 #define LL_DMA_SRC_FIXED 0x00000000U /*!< Source fixed single/burst */
775 #define LL_DMA_SRC_INCREMENT DMA_CTR1_SINC /*!< Source incremented single/burst */
776 /**
777 * @}
778 */
779
780 /** @defgroup DMA_LL_EC_SOURCE_DATA_WIDTH Source Data Width
781 * @{
782 */
783 #define LL_DMA_SRC_DATAWIDTH_BYTE 0x00000000U /*!< Source Data Width : Byte */
784 #define LL_DMA_SRC_DATAWIDTH_HALFWORD DMA_CTR1_SDW_LOG2_0 /*!< Source Data Width : HalfWord */
785 #define LL_DMA_SRC_DATAWIDTH_WORD DMA_CTR1_SDW_LOG2_1 /*!< Source Data Width : Word */
786 /**
787 * @}
788 */
789
790 /** @defgroup DMA_LL_EC_BLKHW_REQUEST Block Hardware Request
791 * @{
792 */
793 #define LL_DMA_HWREQUEST_SINGLEBURST 0x00000000U /*!< Hardware request is driven by a peripheral with a hardware
794 request/acknowledge protocol at a burst level */
795 #define LL_DMA_HWREQUEST_BLK DMA_CTR2_BREQ /*!< Hardware request is driven by a peripheral with a hardware
796 request/acknowledge protocol at a block level */
797 /**
798 * @}
799 */
800
801 /** @defgroup DMA_LL_EC_TRANSFER_EVENT_MODE Transfer Event Mode
802 * @{
803 */
804 #define LL_DMA_TCEM_BLK_TRANSFER 0x00000000U /*!< The TC (and the HT) event is generated at the
805 (respectively half) end of each block */
806 #define LL_DMA_TCEM_RPT_BLK_TRANSFER DMA_CTR2_TCEM_0 /*!< The TC (and the HT) event is generated at the
807 (respectively half) end of the repeated block */
808 #define LL_DMA_TCEM_EACH_LLITEM_TRANSFER DMA_CTR2_TCEM_1 /*!< The TC (and the HT) event is generated at the
809 (respectively half) end of each linked-list item */
810 #define LL_DMA_TCEM_LAST_LLITEM_TRANSFER DMA_CTR2_TCEM /*!< The TC (and the HT) event is generated at the
811 (respectively half) end of the last linked-list item */
812 /**
813 * @}
814 */
815
816 /** @defgroup DMA_LL_EC_TRIGGER_POLARITY Trigger Polarity
817 * @{
818 */
819 #define LL_DMA_TRIG_POLARITY_MASKED 0x00000000U /*!< No trigger of the selected DMA request.
820 Masked trigger event */
821 #define LL_DMA_TRIG_POLARITY_RISING DMA_CTR2_TRIGPOL_0 /*!< Trigger of the selected DMA request on the rising
822 edge of the selected trigger event input */
823 #define LL_DMA_TRIG_POLARITY_FALLING DMA_CTR2_TRIGPOL_1 /*!< Trigger of the selected DMA request on the falling
824 edge of the selected trigger event input */
825 /**
826 * @}
827 */
828
829 /** @defgroup DMA_LL_EC_TRIGGER_MODE Transfer Trigger Mode
830 * @{
831 */
832 #define LL_DMA_TRIGM_BLK_TRANSFER 0x00000000U /*!< A block transfer is conditioned by (at least)
833 one hit trigger */
834 #define LL_DMA_TRIGM_RPT_BLK_TRANSFER DMA_CTR2_TRIGM_0 /*!< A repeated block transfer is conditioned by (at least)
835 one hit trigger */
836 #define LL_DMA_TRIGM_LLI_LINK_TRANSFER DMA_CTR2_TRIGM_1 /*!< A LLI link transfer is conditioned by (at least)
837 one hit trigger */
838 #define LL_DMA_TRIGM_SINGLBURST_TRANSFER DMA_CTR2_TRIGM /*!< A Single/Burst transfer is conditioned by (at least)
839 one hit trigger */
840 /**
841 * @}
842 */
843
844 /** @defgroup DMA_LL_EC_TRANSFER_DIRECTION Transfer Direction
845 * @{
846 */
847 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CTR2_SWREQ /*!< Memory to memory direction */
848 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
849 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CTR2_DREQ /*!< Memory to peripheral direction */
850 /**
851 * @}
852 */
853
854 /** @defgroup DMA_LL_EC_BLK_RPT_SRC_ADDR_UPDATE_MODE Block Repeat Source Address Update Mode
855 * @{
856 */
857 #define LL_DMA_BLKRPT_SRC_ADDR_INCREMENT 0x00000000U /*!< Source address pointer is incremented after each block
858 transfer by source update value */
859 #define LL_DMA_BLKRPT_SRC_ADDR_DECREMENT DMA_CBR1_BRSDEC /*!< Source address pointer is decremented after each block
860 transfer by source update value */
861 /**
862 * @}
863 */
864
865 /** @defgroup DMA_LL_EC_BLK_RPT_DEST_ADDR_UPDATE_MODE Block Repeat Destination Address Update Mode
866 * @{
867 */
868 #define LL_DMA_BLKRPT_DEST_ADDR_INCREMENT 0x00000000U /*!< Destination address is incremented after each block
869 transfer by destination update value */
870 #define LL_DMA_BLKRPT_DEST_ADDR_DECREMENT DMA_CBR1_BRDDEC /*!< Destination address is decremented after each block
871 transfer by destination update value */
872 /**
873 * @}
874 */
875
876 /** @defgroup DMA_LL_EC_SRC_ADDR_UPDATE_MODE Burst Source Address Update Mode
877 * @{
878 */
879 #define LL_DMA_BURST_SRC_ADDR_INCREMENT 0x00000000U /*!< Source address pointer is incremented after each burst
880 transfer by source update value */
881 #define LL_DMA_BURST_SRC_ADDR_DECREMENT DMA_CBR1_SDEC /*!< Source address pointer is decremented after each burst
882 transfer by source update value */
883 /**
884 * @}
885 */
886
887 /** @defgroup DMA_LL_EC_DEST_ADDR_UPDATE_MODE Burst Destination Address Update Mode
888 * @{
889 */
890 #define LL_DMA_BURST_DEST_ADDR_INCREMENT 0x00000000U /*!< Destination address pointer is incremented after each
891 burst transfer by destination update value */
892 #define LL_DMA_BURST_DEST_ADDR_DECREMENT DMA_CBR1_DDEC /*!< Destination address pointer is decremented after each
893 burst transfer by destination update value */
894 /**
895 * @}
896 */
897
898 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
899 /** @defgroup DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE Source Security Attribute
900 * @{
901 */
902 #define LL_DMA_CHANNEL_NSEC 0x00000000U /*!< NSecure channel */
903 #define LL_DMA_CHANNEL_SEC 0x00000001U /*!< Secure channel */
904 /**
905 * @}
906 */
907
908 /** @defgroup DMA_LL_EC_SOURCE_SECURITY_ATTRIBUTE Source Security Attribute
909 * @{
910 */
911 #define LL_DMA_CHANNEL_SRC_NSEC 0x00000000U /*!< NSecure transfer from the source */
912 #define LL_DMA_CHANNEL_SRC_SEC DMA_CTR1_SSEC /*!< Secure transfer from the source */
913 /**
914 * @}
915 */
916
917 /** @defgroup DMA_LL_EC_DESTINATION_SECURITY_ATTRIBUTE Destination Security Attribute
918 * @{
919 */
920 #define LL_DMA_CHANNEL_DEST_NSEC 0x00000000U /*!< NSecure transfer from the destination */
921 #define LL_DMA_CHANNEL_DEST_SEC DMA_CTR1_DSEC /*!< Secure transfer from the destination */
922 /**
923 * @}
924 */
925 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
926
927 /** @defgroup DMA_LL_EC_LINKEDLIST_NODE_TYPE Linked list node type
928 * @{
929 */
930 #define LL_DMA_LPDMA_LINEAR_NODE 0x00U /*!< LPDMA node : linear addressing node */
931 #define LL_DMA_GPDMA_LINEAR_NODE 0x01U /*!< GPDMA node : linear addressing node */
932 #define LL_DMA_GPDMA_2D_NODE 0x02U /*!< GPDMA node : 2 dimension addressing node */
933
934 /**
935 * @}
936 */
937
938 /** @defgroup DMA_LL_EC_LINKEDLIST_REGISTER_UPDATE Linked list register update
939 * @{
940 */
941 #define LL_DMA_UPDATE_CTR1 DMA_CLLR_UT1 /*!< Update CTR1 register from memory :
942 available for all DMA channels */
943 #define LL_DMA_UPDATE_CTR2 DMA_CLLR_UT2 /*!< Update CTR2 register from memory :
944 available for all DMA channels */
945 #define LL_DMA_UPDATE_CBR1 DMA_CLLR_UB1 /*!< Update CBR1 register from memory :
946 available for all DMA channels */
947 #define LL_DMA_UPDATE_CSAR DMA_CLLR_USA /*!< Update CSAR register from memory :
948 available for all DMA channels */
949 #define LL_DMA_UPDATE_CDAR DMA_CLLR_UDA /*!< Update CDAR register from memory :
950 available for all DMA channels */
951 #define LL_DMA_UPDATE_CTR3 DMA_CLLR_UT3 /*!< Update CTR3 register from memory :
952 available only for 2D addressing DMA channels */
953 #define LL_DMA_UPDATE_CBR2 DMA_CLLR_UB2 /*!< Update CBR2 register from memory :
954 available only for 2D addressing DMA channels */
955 #define LL_DMA_UPDATE_CLLR DMA_CLLR_ULL /*!< Update CLLR register from memory :
956 available for all DMA channels */
957 /**
958 * @}
959 */
960
961 /** @defgroup DMA_LL_EC_REQUEST_SELECTION Request Selection
962 * @{
963 */
964 /* GPDMA1 Hardware Requests */
965 #define LL_GPDMA1_REQUEST_ADC1 0U /*!< GPDMA1 HW Request is ADC1 */
966 #define LL_GPDMA1_REQUEST_ADC4 1U /*!< GPDMA1 HW Request is ADC4 */
967 #define LL_GPDMA1_REQUEST_DAC1_CH1 2U /*!< GPDMA1 HW Request is DAC1_CH1 */
968 #define LL_GPDMA1_REQUEST_DAC1_CH2 3U /*!< GPDMA1 HW Request is DAC1_CH2 */
969 #define LL_GPDMA1_REQUEST_TIM6_UP 4U /*!< GPDMA1 HW Request is TIM6_UP */
970 #define LL_GPDMA1_REQUEST_TIM7_UP 5U /*!< GPDMA1 HW Request is TIM7_UP */
971 #define LL_GPDMA1_REQUEST_SPI1_RX 6U /*!< GPDMA1 HW Request is SPI1_RX */
972 #define LL_GPDMA1_REQUEST_SPI1_TX 7U /*!< GPDMA1 HW Request is SPI1_TX */
973 #define LL_GPDMA1_REQUEST_SPI2_RX 8U /*!< GPDMA1 HW Request is SPI2_RX */
974 #define LL_GPDMA1_REQUEST_SPI2_TX 9U /*!< GPDMA1 HW Request is SPI2_TX */
975 #define LL_GPDMA1_REQUEST_SPI3_RX 10U /*!< GPDMA1 HW Request is SPI3_RX */
976 #define LL_GPDMA1_REQUEST_SPI3_TX 11U /*!< GPDMA1 HW Request is SPI3_TX */
977 #define LL_GPDMA1_REQUEST_I2C1_RX 12U /*!< GPDMA1 HW Request is I2C1_RX */
978 #define LL_GPDMA1_REQUEST_I2C1_TX 13U /*!< GPDMA1 HW Request is I2C1_TX */
979 #define LL_GPDMA1_REQUEST_I2C1_EVC 14U /*!< GPDMA1 HW Request is I2C1_EVC */
980 #define LL_GPDMA1_REQUEST_I2C2_RX 15U /*!< GPDMA1 HW Request is I2C2_RX */
981 #define LL_GPDMA1_REQUEST_I2C2_TX 16U /*!< GPDMA1 HW Request is I2C2_TX */
982 #define LL_GPDMA1_REQUEST_I2C2_EVC 17U /*!< GPDMA1 HW Request is I2C2_EVC */
983 #define LL_GPDMA1_REQUEST_I2C3_RX 18U /*!< GPDMA1 HW Request is I2C3_RX */
984 #define LL_GPDMA1_REQUEST_I2C3_TX 19U /*!< GPDMA1 HW Request is I2C3_TX */
985 #define LL_GPDMA1_REQUEST_I2C3_EVC 20U /*!< GPDMA1 HW Request is I2C3_EVC */
986 #define LL_GPDMA1_REQUEST_I2C4_RX 21U /*!< GPDMA1 HW Request is I2C4_RX */
987 #define LL_GPDMA1_REQUEST_I2C4_TX 22U /*!< GPDMA1 HW Request is I2C4_TX */
988 #define LL_GPDMA1_REQUEST_I2C4_EVC 23U /*!< GPDMA1 HW Request is I2C4_EVC */
989 #define LL_GPDMA1_REQUEST_USART1_RX 24U /*!< GPDMA1 HW Request is USART1_RX */
990 #define LL_GPDMA1_REQUEST_USART1_TX 25U /*!< GPDMA1 HW Request is USART1_TX */
991 #if defined(USART2)
992 #define LL_GPDMA1_REQUEST_USART2_RX 26U /*!< GPDMA1 HW Request is USART2_RX */
993 #define LL_GPDMA1_REQUEST_USART2_TX 27U /*!< GPDMA1 HW Request is USART2_TX */
994 #endif /* USART2 */
995 #define LL_GPDMA1_REQUEST_USART3_RX 28U /*!< GPDMA1 HW Request is USART3_RX */
996 #define LL_GPDMA1_REQUEST_USART3_TX 29U /*!< GPDMA1 HW Request is USART3_TX */
997 #define LL_GPDMA1_REQUEST_UART4_RX 30U /*!< GPDMA1 HW Request is UART4_RX */
998 #define LL_GPDMA1_REQUEST_UART4_TX 31U /*!< GPDMA1 HW Request is UART4_TX */
999 #define LL_GPDMA1_REQUEST_UART5_RX 32U /*!< GPDMA1 HW Request is UART5_RX */
1000 #define LL_GPDMA1_REQUEST_UART5_TX 33U /*!< GPDMA1 HW Request is UART5_TX */
1001 #define LL_GPDMA1_REQUEST_LPUART1_RX 34U /*!< GPDMA1 HW Request is LPUART1_RX */
1002 #define LL_GPDMA1_REQUEST_LPUART1_TX 35U /*!< GPDMA1 HW Request is LPUART1_TX */
1003 #define LL_GPDMA1_REQUEST_SAI1_A 36U /*!< GPDMA1 HW Request is SAI1_A */
1004 #define LL_GPDMA1_REQUEST_SAI1_B 37U /*!< GPDMA1 HW Request is SAI1_B */
1005 #if defined(SAI2)
1006 #define LL_GPDMA1_REQUEST_SAI2_A 38U /*!< GPDMA1 HW Request is SAI2_A */
1007 #define LL_GPDMA1_REQUEST_SAI2_B 39U /*!< GPDMA1 HW Request is SAI2_B */
1008 #endif /* SAI2 */
1009 #define LL_GPDMA1_REQUEST_OCTOSPI1 40U /*!< GPDMA1 HW Request is OCTOSPI1 */
1010 #if defined(OCTOSPI2)
1011 #define LL_GPDMA1_REQUEST_OCTOSPI2 41U /*!< GPDMA1 HW Request is OCTOSPI2 */
1012 #endif /* OCTOSPI2 */
1013 #define LL_GPDMA1_REQUEST_TIM1_CH1 42U /*!< GPDMA1 HW Request is TIM1_CH1 */
1014 #define LL_GPDMA1_REQUEST_TIM1_CH2 43U /*!< GPDMA1 HW Request is TIM1_CH2 */
1015 #define LL_GPDMA1_REQUEST_TIM1_CH3 44U /*!< GPDMA1 HW Request is TIM1_CH3 */
1016 #define LL_GPDMA1_REQUEST_TIM1_CH4 45U /*!< GPDMA1 HW Request is TIM1_CH4 */
1017 #define LL_GPDMA1_REQUEST_TIM1_UP 46U /*!< GPDMA1 HW Request is TIM1_UP */
1018 #define LL_GPDMA1_REQUEST_TIM1_TRIG 47U /*!< GPDMA1 HW Request is TIM1_TRIG */
1019 #define LL_GPDMA1_REQUEST_TIM1_COM 48U /*!< GPDMA1 HW Request is TIM1_COM */
1020 #define LL_GPDMA1_REQUEST_TIM8_CH1 49U /*!< GPDMA1 HW Request is TIM8_CH1 */
1021 #define LL_GPDMA1_REQUEST_TIM8_CH2 50U /*!< GPDMA1 HW Request is TIM8_CH2 */
1022 #define LL_GPDMA1_REQUEST_TIM8_CH3 51U /*!< GPDMA1 HW Request is TIM8_CH3 */
1023 #define LL_GPDMA1_REQUEST_TIM8_CH4 52U /*!< GPDMA1 HW Request is TIM8_CH4 */
1024 #define LL_GPDMA1_REQUEST_TIM8_UP 53U /*!< GPDMA1 HW Request is TIM8_UP */
1025 #define LL_GPDMA1_REQUEST_TIM8_TRIG 54U /*!< GPDMA1 HW Request is TIM8_TRIG */
1026 #define LL_GPDMA1_REQUEST_TIM8_COM 55U /*!< GPDMA1 HW Request is TIM8_COM */
1027 #define LL_GPDMA1_REQUEST_TIM2_CH1 56U /*!< GPDMA1 HW Request is TIM2_CH1 */
1028 #define LL_GPDMA1_REQUEST_TIM2_CH2 57U /*!< GPDMA1 HW Request is TIM2_CH2 */
1029 #define LL_GPDMA1_REQUEST_TIM2_CH3 58U /*!< GPDMA1 HW Request is TIM2_CH3 */
1030 #define LL_GPDMA1_REQUEST_TIM2_CH4 59U /*!< GPDMA1 HW Request is TIM2_CH4 */
1031 #define LL_GPDMA1_REQUEST_TIM2_UP 60U /*!< GPDMA1 HW Request is TIM2_UP */
1032 #define LL_GPDMA1_REQUEST_TIM3_CH1 61U /*!< GPDMA1 HW Request is TIM3_CH1 */
1033 #define LL_GPDMA1_REQUEST_TIM3_CH2 62U /*!< GPDMA1 HW Request is TIM3_CH2 */
1034 #define LL_GPDMA1_REQUEST_TIM3_CH3 63U /*!< GPDMA1 HW Request is TIM3_CH3 */
1035 #define LL_GPDMA1_REQUEST_TIM3_CH4 64U /*!< GPDMA1 HW Request is TIM3_CH4 */
1036 #define LL_GPDMA1_REQUEST_TIM3_UP 65U /*!< GPDMA1 HW Request is TIM3_UP */
1037 #define LL_GPDMA1_REQUEST_TIM3_TRIG 66U /*!< GPDMA1 HW Request is TIM3_TRIG */
1038 #define LL_GPDMA1_REQUEST_TIM4_CH1 67U /*!< GPDMA1 HW Request is TIM4_CH1 */
1039 #define LL_GPDMA1_REQUEST_TIM4_CH2 68U /*!< GPDMA1 HW Request is TIM4_CH2 */
1040 #define LL_GPDMA1_REQUEST_TIM4_CH3 69U /*!< GPDMA1 HW Request is TIM4_CH3 */
1041 #define LL_GPDMA1_REQUEST_TIM4_CH4 70U /*!< GPDMA1 HW Request is TIM4_CH4 */
1042 #define LL_GPDMA1_REQUEST_TIM4_UP 71U /*!< GPDMA1 HW Request is TIM4_UP */
1043 #define LL_GPDMA1_REQUEST_TIM5_CH1 72U /*!< GPDMA1 HW Request is TIM5_CH1 */
1044 #define LL_GPDMA1_REQUEST_TIM5_CH2 73U /*!< GPDMA1 HW Request is TIM5_CH2 */
1045 #define LL_GPDMA1_REQUEST_TIM5_CH3 74U /*!< GPDMA1 HW Request is TIM5_CH3 */
1046 #define LL_GPDMA1_REQUEST_TIM5_CH4 75U /*!< GPDMA1 HW Request is TIM5_CH4 */
1047 #define LL_GPDMA1_REQUEST_TIM5_UP 76U /*!< GPDMA1 HW Request is TIM5_UP */
1048 #define LL_GPDMA1_REQUEST_TIM5_TRIG 77U /*!< GPDMA1 HW Request is TIM5_TRIG */
1049 #define LL_GPDMA1_REQUEST_TIM15_CH1 78U /*!< GPDMA1 HW Request is TIM15_CH1 */
1050 #define LL_GPDMA1_REQUEST_TIM15_UP 79U /*!< GPDMA1 HW Request is TIM15_UP */
1051 #define LL_GPDMA1_REQUEST_TIM15_TRIG 80U /*!< GPDMA1 HW Request is TIM15_TRIG */
1052 #define LL_GPDMA1_REQUEST_TIM15_COM 81U /*!< GPDMA1 HW Request is TIM15_COM */
1053 #define LL_GPDMA1_REQUEST_TIM16_CH1 82U /*!< GPDMA1 HW Request is TIM16_CH1 */
1054 #define LL_GPDMA1_REQUEST_TIM16_UP 83U /*!< GPDMA1 HW Request is TIM16_UP */
1055 #define LL_GPDMA1_REQUEST_TIM17_CH1 84U /*!< GPDMA1 HW Request is TIM17_CH1 */
1056 #define LL_GPDMA1_REQUEST_TIM17_UP 85U /*!< GPDMA1 HW Request is TIM17_UP */
1057 #define LL_GPDMA1_REQUEST_DCMI_PSSI 86U /*!< GPDMA1 HW Request is DCMI_PSSI */
1058 #define LL_GPDMA1_REQUEST_AES_IN 87U /*!< GPDMA1 HW Request is AES_IN */
1059 #define LL_GPDMA1_REQUEST_AES_OUT 88U /*!< GPDMA1 HW Request is AES_OUT */
1060 #define LL_GPDMA1_REQUEST_HASH_IN 89U /*!< GPDMA1 HW Request is HASH_IN */
1061 #if defined(UCPD1)
1062 #define LL_GPDMA1_REQUEST_UCPD1_TX 90U /*!< GPDMA1 HW Request is UCPD1_TX */
1063 #define LL_GPDMA1_REQUEST_UCPD1_RX 91U /*!< GPDMA1 HW Request is UCPD1_RX */
1064 #endif /* UCPD1 */
1065 #define LL_GPDMA1_REQUEST_MDF1_FLT0 92U /*!< GPDMA1 HW Request is MDF1_FLT0 */
1066 #define LL_GPDMA1_REQUEST_MDF1_FLT1 93U /*!< GPDMA1 HW Request is MDF1_FLT1 */
1067 #define LL_GPDMA1_REQUEST_MDF1_FLT2 94U /*!< GPDMA1 HW Request is MDF1_FLT2 */
1068 #define LL_GPDMA1_REQUEST_MDF1_FLT3 95U /*!< GPDMA1 HW Request is MDF1_FLT3 */
1069 #define LL_GPDMA1_REQUEST_MDF1_FLT4 96U /*!< GPDMA1 HW Request is MDF1_FLT4 */
1070 #define LL_GPDMA1_REQUEST_MDF1_FLT5 97U /*!< GPDMA1 HW Request is MDF1_FLT5 */
1071 #define LL_GPDMA1_REQUEST_ADF1_FLT0 98U /*!< GPDMA1 HW Request is ADF1_FLT0 */
1072 #define LL_GPDMA1_REQUEST_FMAC_READ 99U /*!< GPDMA1 HW Request is FMAC_READ */
1073 #define LL_GPDMA1_REQUEST_FMAC_WRITE 100U /*!< GPDMA1 HW Request is FMAC_WRITE */
1074 #define LL_GPDMA1_REQUEST_CORDIC_READ 101U /*!< GPDMA1 HW Request is CORDIC_READ */
1075 #define LL_GPDMA1_REQUEST_CORDIC_WRITE 102U /*!< GPDMA1 HW Request is CORDIC_WRITE */
1076 #define LL_GPDMA1_REQUEST_SAES_IN 103U /*!< GPDMA1 HW Request is SAES_IN */
1077 #define LL_GPDMA1_REQUEST_SAES_OUT 104U /*!< GPDMA1 HW Request is SAES_OUT */
1078 #define LL_GPDMA1_REQUEST_LPTIM1_IC1 105U /*!< GPDMA1 HW Request is LPTIM1_IC1 */
1079 #define LL_GPDMA1_REQUEST_LPTIM1_IC2 106U /*!< GPDMA1 HW Request is LPTIM1_IC2 */
1080 #define LL_GPDMA1_REQUEST_LPTIM1_UE 107U /*!< GPDMA1 HW Request is LPTIM1_UE */
1081 #define LL_GPDMA1_REQUEST_LPTIM2_IC1 108U /*!< GPDMA1 HW Request is LPTIM2_IC1 */
1082 #define LL_GPDMA1_REQUEST_LPTIM2_IC2 109U /*!< GPDMA1 HW Request is LPTIM2_IC2 */
1083 #define LL_GPDMA1_REQUEST_LPTIM2_UE 110U /*!< GPDMA1 HW Request is LPTIM2_UE */
1084 #define LL_GPDMA1_REQUEST_LPTIM3_IC1 111U /*!< GPDMA1 HW Request is LPTIM3_IC1 */
1085 #define LL_GPDMA1_REQUEST_LPTIM3_IC2 112U /*!< GPDMA1 HW Request is LPTIM3_IC2 */
1086 #define LL_GPDMA1_REQUEST_LPTIM3_UE 113U /*!< GPDMA1 HW Request is LPTIM3_UE */
1087 #if defined (HSPI1_BASE)
1088 #define LL_GPDMA1_REQUEST_HSPI1 114U /*!< GPDMA1 HW request is HSPI1 */
1089 #endif /* HSPI1_BASE */
1090 #if defined (I2C5)
1091 #define LL_GPDMA1_REQUEST_I2C5_RX 115U /*!< GPDMA1 HW request is I2C5_RX */
1092 #define LL_GPDMA1_REQUEST_I2C5_TX 116U /*!< GPDMA1 HW request is I2C5_TX */
1093 #define LL_GPDMA1_REQUEST_I2C5_EVC 117U /*!< GPDMA1 HW request is I2C5_EVC */
1094 #endif /* I2C5 */
1095 #if defined (I2C6)
1096 #define LL_GPDMA1_REQUEST_I2C6_RX 118U /*!< GPDMA1 HW request is I2C6_RX */
1097 #define LL_GPDMA1_REQUEST_I2C6_TX 119U /*!< GPDMA1 HW request is I2C6_TX */
1098 #define LL_GPDMA1_REQUEST_I2C6_EVC 120U /*!< GPDMA1 HW request is I2C6_EVC */
1099 #endif /* I2C6 */
1100 #if defined (USART6)
1101 #define LL_GPDMA1_REQUEST_USART6_RX 121U /*!< GPDMA1 HW request is USART6_RX */
1102 #define LL_GPDMA1_REQUEST_USART6_TX 122U /*!< GPDMA1 HW request is USART6_TX */
1103 #endif /* USART6 */
1104 #if defined (ADC2)
1105 #define LL_GPDMA1_REQUEST_ADC2 123U /*!< GPDMA1 HW request is ADC2 */
1106 #endif /* ADC2 */
1107 #if defined (JPEG)
1108 #define LL_GPDMA1_REQUEST_JPEG_RX 124U /*!< GPDMA1 HW request is JPEG_TX */
1109 #define LL_GPDMA1_REQUEST_JPEG_TX 125U /*!< GPDMA1 HW request is JPEG_RX */
1110 #endif /* JPEG */
1111
1112 /* GPDMA1 Hardware Requests aliases */
1113 #define LL_GPDMA1_REQUEST_DCMI LL_GPDMA1_REQUEST_DCMI_PSSI
1114
1115 /* LPDMA1 Hardware Requests */
1116 #define LL_LPDMA1_REQUEST_LPUART1_RX 0U /*!< LPDMA1 HW Request is LPUART1_RX */
1117 #define LL_LPDMA1_REQUEST_LPUART1_TX 1U /*!< LPDMA1 HW Request is LPUART1_TX */
1118 #define LL_LPDMA1_REQUEST_SPI3_RX 2U /*!< LPDMA1 HW Request is SPI3_RX */
1119 #define LL_LPDMA1_REQUEST_SPI3_TX 3U /*!< LPDMA1 HW Request is SPI3_TX */
1120 #define LL_LPDMA1_REQUEST_I2C3_RX 4U /*!< LPDMA1 HW Request is I2C3_RX */
1121 #define LL_LPDMA1_REQUEST_I2C3_TX 5U /*!< LPDMA1 HW Request is I2C3_TX */
1122 #define LL_LPDMA1_REQUEST_I2C3_EVC 6U /*!< LPDMA1 HW Request is I2C3_EVC */
1123 #define LL_LPDMA1_REQUEST_ADC4 7U /*!< LPDMA1 HW Request is ADC4 */
1124 #define LL_LPDMA1_REQUEST_DAC1_CH1 8U /*!< LPDMA1 HW Request is DAC1_CH1 */
1125 #define LL_LPDMA1_REQUEST_DAC1_CH2 9U /*!< LPDMA1 HW Request is DAC1_CH2 */
1126 #define LL_LPDMA1_REQUEST_ADF1_FLT0 10U /*!< LPDMA1 HW Request is ADF1_FLT0 */
1127 #define LL_LPDMA1_REQUEST_LPTIM1_IC1 11U /*!< LPDMA1 HW Request is LPTIM1_IC1 */
1128 #define LL_LPDMA1_REQUEST_LPTIM1_IC2 12U /*!< LPDMA1 HW Request is LPTIM1_IC2 */
1129 #define LL_LPDMA1_REQUEST_LPTIM1_UE 13U /*!< LPDMA1 HW Request is LPTIM1_UE */
1130 #define LL_LPDMA1_REQUEST_LPTIM3_IC1 14U /*!< LPDMA1 HW Request is LPTIM3_IC1 */
1131 #define LL_LPDMA1_REQUEST_LPTIM3_IC2 15U /*!< LPDMA1 HW Request is LPTIM3_IC2 */
1132 #define LL_LPDMA1_REQUEST_LPTIM3_UE 16U /*!< LPDMA1 HW Request is LPTIM3_UE */
1133 /**
1134 * @}
1135 */
1136
1137 /** @defgroup DMA_LL_EC_TRIGGER_SELECTION Trigger Selection
1138 * @{
1139 */
1140 /* GPDMA1 Hardware Triggers */
1141 #define LL_GPDMA1_TRIGGER_EXTI_LINE0 0U /*!< GPDMA1 HW Trigger is EXTI_LINE0 */
1142 #define LL_GPDMA1_TRIGGER_EXTI_LINE1 1U /*!< GPDMA1 HW Trigger is EXTI_LINE1 */
1143 #define LL_GPDMA1_TRIGGER_EXTI_LINE2 2U /*!< GPDMA1 HW Trigger is EXTI_LINE2 */
1144 #define LL_GPDMA1_TRIGGER_EXTI_LINE3 3U /*!< GPDMA1 HW Trigger is EXTI_LINE3 */
1145 #define LL_GPDMA1_TRIGGER_EXTI_LINE4 4U /*!< GPDMA1 HW Trigger is EXTI_LINE4 */
1146 #define LL_GPDMA1_TRIGGER_EXTI_LINE5 5U /*!< GPDMA1 HW Trigger is EXTI_LINE5 */
1147 #define LL_GPDMA1_TRIGGER_EXTI_LINE6 6U /*!< GPDMA1 HW Trigger is EXTI_LINE6 */
1148 #define LL_GPDMA1_TRIGGER_EXTI_LINE7 7U /*!< GPDMA1 HW Trigger is EXTI_LINE7 */
1149 #define LL_GPDMA1_TRIGGER_TAMP_TRG1 8U /*!< GPDMA1 HW Trigger is TAMP_TRG1 */
1150 #define LL_GPDMA1_TRIGGER_TAMP_TRG2 9U /*!< GPDMA1 HW Trigger is TAMP_TRG2 */
1151 #define LL_GPDMA1_TRIGGER_TAMP_TRG3 10U /*!< GPDMA1 HW Trigger is TAMP_TRG3 */
1152 #define LL_GPDMA1_TRIGGER_LPTIM1_CH1 11U /*!< GPDMA1 HW Trigger is LPTIM1_CH1 */
1153 #define LL_GPDMA1_TRIGGER_LPTIM1_CH2 12U /*!< GPDMA1 HW Trigger is LPTIM1_CH2 */
1154 #define LL_GPDMA1_TRIGGER_LPTIM2_CH1 13U /*!< GPDMA1 HW Trigger is LPTIM2_CH1 */
1155 #define LL_GPDMA1_TRIGGER_LPTIM2_CH2 14U /*!< GPDMA1 HW Trigger is LPTIM2_CH2 */
1156 #define LL_GPDMA1_TRIGGER_LPTIM4_OUT 15U /*!< GPDMA1 HW Trigger is LPTIM4_OUT */
1157 #define LL_GPDMA1_TRIGGER_COMP1_OUT 16U /*!< GPDMA1 HW Trigger is COMP1_OUT */
1158 #if defined(COMP2)
1159 #define LL_GPDMA1_TRIGGER_COMP2_OUT 17U /*!< GPDMA1 HW Trigger is COMP2_OUT */
1160 #endif /* COMP2 */
1161 #define LL_GPDMA1_TRIGGER_RTC_ALRA_TRG 18U /*!< GPDMA1 HW Trigger is RTC_ALRA_TRG */
1162 #define LL_GPDMA1_TRIGGER_RTC_ALRB_TRG 19U /*!< GPDMA1 HW Trigger is RTC_ALRB_TRG */
1163 #define LL_GPDMA1_TRIGGER_RTC_WUT_TRG 20U /*!< GPDMA1 HW Trigger is RTC_WUT_TRG */
1164 #define LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF 22U /*!< GPDMA1 HW Trigger is GPDMA1_CH0_TCF */
1165 #define LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF 23U /*!< GPDMA1 HW Trigger is GPDMA1_CH1_TCF */
1166 #define LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF 24U /*!< GPDMA1 HW Trigger is GPDMA1_CH2_TCF */
1167 #define LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF 25U /*!< GPDMA1 HW Trigger is GPDMA1_CH3_TCF */
1168 #define LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF 26U /*!< GPDMA1 HW Trigger is GPDMA1_CH4_TCF */
1169 #define LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF 27U /*!< GPDMA1 HW Trigger is GPDMA1_CH5_TCF */
1170 #define LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF 28U /*!< GPDMA1 HW Trigger is GPDMA1_CH6_TCF */
1171 #define LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF 29U /*!< GPDMA1 HW Trigger is GPDMA1_CH7_TCF */
1172 #define LL_GPDMA1_TRIGGER_GPDMA1_CH8_TCF 30U /*!< GPDMA1 HW Trigger is GPDMA1_CH8_TCF */
1173 #define LL_GPDMA1_TRIGGER_GPDMA1_CH9_TCF 31U /*!< GPDMA1 HW Trigger is GPDMA1_CH9_TCF */
1174 #define LL_GPDMA1_TRIGGER_GPDMA1_CH10_TCF 32U /*!< GPDMA1 HW Trigger is GPDMA1_CH10_TCF */
1175 #define LL_GPDMA1_TRIGGER_GPDMA1_CH11_TCF 33U /*!< GPDMA1 HW Trigger is GPDMA1_CH11_TCF */
1176 #define LL_GPDMA1_TRIGGER_GPDMA1_CH12_TCF 34U /*!< GPDMA1 HW Trigger is GPDMA1_CH12_TCF */
1177 #define LL_GPDMA1_TRIGGER_GPDMA1_CH13_TCF 35U /*!< GPDMA1 HW Trigger is GPDMA1_CH13_TCF */
1178 #define LL_GPDMA1_TRIGGER_GPDMA1_CH14_TCF 36U /*!< GPDMA1 HW Trigger is GPDMA1_CH14_TCF */
1179 #define LL_GPDMA1_TRIGGER_GPDMA1_CH15_TCF 37U /*!< GPDMA1 HW Trigger is GPDMA1_CH15_TCF */
1180 #define LL_GPDMA1_TRIGGER_LPDMA1_CH0_TCF 38U /*!< GPDMA1 HW Trigger is LPDMA1_CH0_TCF */
1181 #define LL_GPDMA1_TRIGGER_LPDMA1_CH1_TCF 39U /*!< GPDMA1 HW Trigger is LPDMA1_CH1_TCF */
1182 #define LL_GPDMA1_TRIGGER_LPDMA1_CH2_TCF 40U /*!< GPDMA1 HW Trigger is LPDMA1_CH2_TCF */
1183 #define LL_GPDMA1_TRIGGER_LPDMA1_CH3_TCF 41U /*!< GPDMA1 HW Trigger is LPDMA1_CH3_TCF */
1184 #define LL_GPDMA1_TRIGGER_TIM2_TRGO 42U /*!< GPDMA1 HW Trigger is TIM2_TRGO */
1185 #define LL_GPDMA1_TRIGGER_TIM15_TRGO 43U /*!< GPDMA1 HW Trigger is TIM15_TRGO */
1186 #define LL_GPDMA1_TRIGGER_ADC4_AWD1 57U /*!< GPDMA1 HW Trigger is ADC4_AWD1 */
1187 #define LL_GPDMA1_TRIGGER_ADC1_AWD1 58U /*!< GPDMA1 HW Trigger is ADC1_AWD1 */
1188 #if defined (TIM3_TRGO_TRIGGER_SUPPORT)
1189 #define LL_GPDMA1_TRIGGER_TIM3_TRGO 44U /*!< GPDMA1 HW Trigger signal is TIM3_TRGO */
1190 #endif /* TIM3_TRGO_TRIGGER_SUPPORT */
1191 #if defined (TIM4_TRGO_TRIGGER_SUPPORT)
1192 #define LL_GPDMA1_TRIGGER_TIM4_TRGO 45U /*!< GPDMA1 HW Trigger signal is TIM4_TRGO */
1193 #endif /* TIM4_TRGO_TRIGGER_SUPPORT */
1194 #if defined (TIM5_TRGO_TRIGGER_SUPPORT)
1195 #define LL_GPDMA1_TRIGGER_TIM5_TRGO 46U /*!< GPDMA1 HW Trigger signal is TIM5_TRGO */
1196 #endif /* TIM5_TRGO_TRIGGER_SUPPORT */
1197 #if defined (LTDC)
1198 #define LL_GPDMA1_TRIGGER_LTDC_LI 47U /*!< GPDMA1 HW Trigger signal is LTDC_LI */
1199 #endif /* LTDC */
1200 #if defined (DSI)
1201 #define LL_GPDMA1_TRIGGER_DSI_TE 48U /*!< GPDMA1 HW Trigger signal is DSI_TE */
1202 #define LL_GPDMA1_TRIGGER_DSI_ER 49U /*!< GPDMA1 HW Trigger signal is DSI_ER */
1203 #endif /* DSI */
1204 #if defined (DMA2D)
1205 #define LL_GPDMA1_TRIGGER_DMA2D_TC 50U /*!< GPDMA1 HW Trigger signal is DMA2D_TC */
1206 #define LL_GPDMA1_TRIGGER_DMA2D_CTC 51U /*!< GPDMA1 HW Trigger signal is DMA2D_CTC */
1207 #define LL_GPDMA1_TRIGGER_DMA2D_TW 52U /*!< GPDMA1 HW Trigger signal is DMA2D_TW */
1208 #endif /* DMA2D */
1209 #if defined (GPU2D)
1210 #define LL_GPDMA1_TRIGGER_GPU2D_FLAG0 53U /*!< GPDMA1 HW Trigger signal is GPU2D_FLAG0 */
1211 #define LL_GPDMA1_TRIGGER_GPU2D_FLAG1 54U /*!< GPDMA1 HW Trigger signal is GPU2D_FLAG1 */
1212 #define LL_GPDMA1_TRIGGER_GPU2D_FLAG2 55U /*!< GPDMA1 HW Trigger signal is GPU2D_FLAG2 */
1213 #define LL_GPDMA1_TRIGGER_GPU2D_FLAG3 56U /*!< GPDMA1 HW Trigger signal is GPU2D_FLAG3 */
1214 #endif /* GPU2D */
1215 #if defined (GFXTIM)
1216 #define LL_GPDMA1_TRIGGER_GFXTIM_EVT3 59U /*!< GPDMA1 HW Trigger signal is GFXTIM_EVT3 */
1217 #define LL_GPDMA1_TRIGGER_GFXTIM_EVT2 60U /*!< GPDMA1 HW Trigger signal is GFXTIM_EVT2 */
1218 #define LL_GPDMA1_TRIGGER_GFXTIM_EVT1 61U /*!< GPDMA1 HW Trigger signal is GFXTIM_EVT1 */
1219 #define LL_GPDMA1_TRIGGER_GFXTIM_EVT0 62U /*!< GPDMA1 HW Trigger signal is GFXTIM_EVT0 */
1220 #endif /* GFXTIM */
1221 #if defined (JPEG)
1222 #define LL_GPDMA1_TRIGGER_JPEG_EOC 63U /*!< GPDMA1 HW Trigger signal is JPEG_EOC */
1223 #define LL_GPDMA1_TRIGGER_JPEG_IFNF 64U /*!< GPDMA1 HW Trigger signal is JPEG_IFNF */
1224 #define LL_GPDMA1_TRIGGER_JPEG_IFT 65U /*!< GPDMA1 HW Trigger signal is JPEG_IFT */
1225 #define LL_GPDMA1_TRIGGER_JPEG_OFNE 66U /*!< GPDMA1 HW Trigger signal is JPEG_OFNE */
1226 #define LL_GPDMA1_TRIGGER_JPEG_OFT 67U /*!< GPDMA1 HW Trigger signal is JPEG_OFT */
1227 #endif /* JPEG */
1228
1229 /* LPDMA1 triggers */
1230 #define LL_LPDMA1_TRIGGER_EXTI_LINE0 0U /*!< LPDMA1 HW Trigger is EXTI_LINE0 */
1231 #define LL_LPDMA1_TRIGGER_EXTI_LINE1 1U /*!< LPDMA1 HW Trigger is EXTI_LINE1 */
1232 #define LL_LPDMA1_TRIGGER_EXTI_LINE2 2U /*!< LPDMA1 HW Trigger is EXTI_LINE2 */
1233 #define LL_LPDMA1_TRIGGER_EXTI_LINE3 3U /*!< LPDMA1 HW Trigger is EXTI_LINE3 */
1234 #define LL_LPDMA1_TRIGGER_EXTI_LINE4 4U /*!< LPDMA1 HW Trigger is EXTI_LINE4 */
1235 #define LL_LPDMA1_TRIGGER_TAMP_TRG1 5U /*!< LPDMA1 HW Trigger is TAMP_TRG1 */
1236 #define LL_LPDMA1_TRIGGER_TAMP_TRG2 6U /*!< LPDMA1 HW Trigger is TAMP_TRG2 */
1237 #define LL_LPDMA1_TRIGGER_TAMP_TRG3 7U /*!< LPDMA1 HW Trigger is TAMP_TRG3 */
1238 #define LL_LPDMA1_TRIGGER_LPTIM1_CH1 8U /*!< LPDMA1 HW Trigger is LPTIM1_CH1 */
1239 #define LL_LPDMA1_TRIGGER_LPTIM1_CH2 9U /*!< LPDMA1 HW Trigger is LPTIM1_CH2 */
1240 #define LL_LPDMA1_TRIGGER_LPTIM3_CH1 10U /*!< LPDMA1 HW Trigger is LPTIM3_CH1 */
1241 #define LL_LPDMA1_TRIGGER_LPTIM4_OUT 11U /*!< LPDMA1 HW Trigger is LPTIM4_OUT */
1242 #define LL_LPDMA1_TRIGGER_COMP1_OUT 12U /*!< LPDMA1 HW Trigger is COMP1_OUT */
1243 #if defined(COMP2)
1244 #define LL_LPDMA1_TRIGGER_COMP2_OUT 13U /*!< LPDMA1 HW Trigger is COMP2_OUT */
1245 #endif /* COMP2 */
1246 #define LL_LPDMA1_TRIGGER_RTC_ALRA_TRG 14U /*!< LPDMA1 HW Trigger is RTC_ALRA_TRG */
1247 #define LL_LPDMA1_TRIGGER_RTC_ALRB_TRG 15U /*!< LPDMA1 HW Trigger is RTC_ALRB_TRG */
1248 #define LL_LPDMA1_TRIGGER_RTC_WUT_TRG 16U /*!< LPDMA1 HW Trigger is RTC_WUT_TRG */
1249 #define LL_LPDMA1_TRIGGER_ADC4_AWD1 17U /*!< LPDMA1 HW Trigger is ADC4_AWD1 */
1250 #define LL_LPDMA1_TRIGGER_LPDMA1_CH0_TCF 18U /*!< LPDMA1 HW Trigger is LPDMA1_CH0_TCF */
1251 #define LL_LPDMA1_TRIGGER_LPDMA1_CH1_TCF 19U /*!< LPDMA1 HW Trigger is LPDMA1_CH1_TCF */
1252 #define LL_LPDMA1_TRIGGER_LPDMA1_CH2_TCF 20U /*!< LPDMA1 HW Trigger is LPDMA1_CH2_TCF */
1253 #define LL_LPDMA1_TRIGGER_LPDMA1_CH3_TCF 21U /*!< LPDMA1 HW Trigger is LPDMA1_CH3_TCF */
1254 #define LL_LPDMA1_TRIGGER_GPDMA1_CH0_TCF 22U /*!< LPDMA1 HW Trigger is GPDMA1_CH0_TCF */
1255 #define LL_LPDMA1_TRIGGER_GPDMA1_CH1_TCF 23U /*!< LPDMA1 HW Trigger is GPDMA1_CH1_TCF */
1256 #define LL_LPDMA1_TRIGGER_GPDMA1_CH4_TCF 24U /*!< LPDMA1 HW Trigger is GPDMA1_CH4_TCF */
1257 #define LL_LPDMA1_TRIGGER_GPDMA1_CH5_TCF 25U /*!< LPDMA1 HW Trigger is GPDMA1_CH5_TCF */
1258 #define LL_LPDMA1_TRIGGER_GPDMA1_CH6_TCF 26U /*!< LPDMA1 HW Trigger is GPDMA1_CH6_TCF */
1259 #define LL_LPDMA1_TRIGGER_GPDMA1_CH7_TCF 27U /*!< LPDMA1 HW Trigger is GPDMA1_CH7_TCF */
1260 #define LL_LPDMA1_TRIGGER_GPDMA1_CH12_TCF 28U /*!< LPDMA1 HW Trigger is GPDMA1_CH12_TCF */
1261 #define LL_LPDMA1_TRIGGER_GPDMA1_CH13_TCF 29U /*!< LPDMA1 HW Trigger is GPDMA1_CH13_TCF */
1262 #define LL_LPDMA1_TRIGGER_TIM2_TRGO 30U /*!< LPDMA1 HW Trigger is TIM2_TRGO */
1263 #define LL_LPDMA1_TRIGGER_TIM15_TRGO 31U /*!< LPDMA1 HW Trigger is TIM15_TRGO */
1264 /**
1265 * @}
1266 */
1267
1268 /**
1269 * @}
1270 */
1271
1272 /* Exported macro ------------------------------------------------------------*/
1273
1274 /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
1275 * @{
1276 */
1277
1278 /** @defgroup DMA_LL_EM_COMMON_WRITE_READ_REGISTERS Common Write and Read Registers macros
1279 * @{
1280 */
1281 /**
1282 * @brief Write a value in DMA register.
1283 * @param __INSTANCE__ DMA Instance.
1284 * @param __REG__ Register to be written.
1285 * @param __VALUE__ Value to be written in the register.
1286 * @retval None.
1287 */
1288 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
1289
1290 /**
1291 * @brief Read a value in DMA register.
1292 * @param __INSTANCE__ DMA Instance.
1293 * @param __REG__ Register to be read.
1294 * @retval Register value.
1295 */
1296 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
1297 /**
1298 * @}
1299 */
1300
1301 /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely
1302 * @{
1303 */
1304 /**
1305 * @brief Convert DMAx_Channely into DMAx.
1306 * @param __CHANNEL_INSTANCE__ DMAx_Channely.
1307 * @retval DMAx.
1308 */
1309 #define LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \
1310 (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)GPDMA1_Channel15)) ? LPDMA1 : GPDMA1)
1311
1312 /**
1313 * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y.
1314 * @param __CHANNEL_INSTANCE__ DMAx_Channely.
1315 * @retval LL_DMA_CHANNEL_y.
1316 */
1317 #define LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
1318 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel0)) ? LL_DMA_CHANNEL_0 : \
1319 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)LPDMA1_Channel0)) ? LL_DMA_CHANNEL_0 : \
1320 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
1321 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)LPDMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
1322 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
1323 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)LPDMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
1324 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
1325 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)LPDMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
1326 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
1327 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
1328 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \
1329 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel7)) ? LL_DMA_CHANNEL_7 : \
1330 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel8)) ? LL_DMA_CHANNEL_8 : \
1331 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel9)) ? LL_DMA_CHANNEL_9 : \
1332 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel10)) ? LL_DMA_CHANNEL_10 : \
1333 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel11)) ? LL_DMA_CHANNEL_11 : \
1334 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel12)) ? LL_DMA_CHANNEL_12 : \
1335 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel13)) ? LL_DMA_CHANNEL_13 : \
1336 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)GPDMA1_Channel14)) ? LL_DMA_CHANNEL_14 : \
1337 LL_DMA_CHANNEL_15)
1338
1339 /**
1340 * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely.
1341 * @param __DMA_INSTANCE__ DMAx.
1342 * @param __CHANNEL__ LL_DMA_CHANNEL_y.
1343 * @retval DMAx_Channely.
1344 */
1345 #define LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \
1346 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_0))) \
1347 ? GPDMA1_Channel0 : \
1348 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)LPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_0))) \
1349 ? LPDMA1_Channel0 : \
1350 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) \
1351 ? GPDMA1_Channel1 : \
1352 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)LPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) \
1353 ? LPDMA1_Channel1 : \
1354 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) \
1355 ? GPDMA1_Channel2 : \
1356 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)LPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) \
1357 ? LPDMA1_Channel2 : \
1358 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) \
1359 ? GPDMA1_Channel3 : \
1360 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)LPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) \
1361 ? LPDMA1_Channel3 : \
1362 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) \
1363 ? GPDMA1_Channel4 : \
1364 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) \
1365 ? GPDMA1_Channel5 : \
1366 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) \
1367 ? GPDMA1_Channel6 : \
1368 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_7))) \
1369 ? GPDMA1_Channel7 : \
1370 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_8))) \
1371 ? GPDMA1_Channel8 : \
1372 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_9))) \
1373 ? GPDMA1_Channel9 : \
1374 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_10)))\
1375 ? GPDMA1_Channel10 : \
1376 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_11)))\
1377 ? GPDMA1_Channel11 : \
1378 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_12)))\
1379 ? GPDMA1_Channel12 : \
1380 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_13)))\
1381 ? GPDMA1_Channel13 : \
1382 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)GPDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_14)))\
1383 ? GPDMA1_Channel14 : GPDMA1_Channel15)
1384
1385 /**
1386 * @}
1387 */
1388
1389 /**
1390 * @}
1391 */
1392
1393 /* Exported functions --------------------------------------------------------*/
1394
1395 /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
1396 * @{
1397 */
1398
1399 /** @defgroup DMA_LL_EF_Configuration Configuration
1400 * @{
1401 */
1402 /**
1403 * @brief Enable channel.
1404 * @note This API is used for all available DMA channels.
1405 * @rmtoll CCR EN LL_DMA_EnableChannel
1406 * @param DMAx DMAx Instance.
1407 * @param Channel This parameter can be one of the following values:
1408 * @arg @ref LL_DMA_CHANNEL_0
1409 * @arg @ref LL_DMA_CHANNEL_1
1410 * @arg @ref LL_DMA_CHANNEL_2
1411 * @arg @ref LL_DMA_CHANNEL_3
1412 * @arg @ref LL_DMA_CHANNEL_4
1413 * @arg @ref LL_DMA_CHANNEL_5
1414 * @arg @ref LL_DMA_CHANNEL_6
1415 * @arg @ref LL_DMA_CHANNEL_7
1416 * @arg @ref LL_DMA_CHANNEL_8
1417 * @arg @ref LL_DMA_CHANNEL_9
1418 * @arg @ref LL_DMA_CHANNEL_10
1419 * @arg @ref LL_DMA_CHANNEL_11
1420 * @arg @ref LL_DMA_CHANNEL_12
1421 * @arg @ref LL_DMA_CHANNEL_13
1422 * @arg @ref LL_DMA_CHANNEL_14
1423 * @arg @ref LL_DMA_CHANNEL_15
1424 * @retval None.
1425 */
LL_DMA_EnableChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1426 __STATIC_INLINE void LL_DMA_EnableChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1427 {
1428 uint32_t dma_base_addr = (uint32_t)DMAx;
1429 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN);
1430 }
1431
1432 /**
1433 * @brief Disable channel.
1434 * @note This API is used for all available DMA channels.
1435 * @rmtoll CCR EN LL_DMA_DisableChannel
1436 * @param DMAx DMAx Instance.
1437 * @param Channel This parameter can be one of the following values:
1438 * @arg @ref LL_DMA_CHANNEL_0
1439 * @arg @ref LL_DMA_CHANNEL_1
1440 * @arg @ref LL_DMA_CHANNEL_2
1441 * @arg @ref LL_DMA_CHANNEL_3
1442 * @arg @ref LL_DMA_CHANNEL_4
1443 * @arg @ref LL_DMA_CHANNEL_5
1444 * @arg @ref LL_DMA_CHANNEL_6
1445 * @arg @ref LL_DMA_CHANNEL_7
1446 * @arg @ref LL_DMA_CHANNEL_8
1447 * @arg @ref LL_DMA_CHANNEL_9
1448 * @arg @ref LL_DMA_CHANNEL_10
1449 * @arg @ref LL_DMA_CHANNEL_11
1450 * @arg @ref LL_DMA_CHANNEL_12
1451 * @arg @ref LL_DMA_CHANNEL_13
1452 * @arg @ref LL_DMA_CHANNEL_14
1453 * @arg @ref LL_DMA_CHANNEL_15
1454 * @retval None.
1455 */
LL_DMA_DisableChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1456 __STATIC_INLINE void LL_DMA_DisableChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1457 {
1458 uint32_t dma_base_addr = (uint32_t)DMAx;
1459 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
1460 (DMA_CCR_SUSP | DMA_CCR_RESET));
1461 }
1462
1463 /**
1464 * @brief Check if channel is enabled or disabled.
1465 * @note This API is used for all available DMA channels.
1466 * @rmtoll CCR EN LL_DMA_IsEnabledChannel
1467 * @param DMAx DMAx Instance
1468 * @param Channel This parameter can be one of the following values:
1469 * @arg @ref LL_DMA_CHANNEL_0
1470 * @arg @ref LL_DMA_CHANNEL_1
1471 * @arg @ref LL_DMA_CHANNEL_2
1472 * @arg @ref LL_DMA_CHANNEL_3
1473 * @arg @ref LL_DMA_CHANNEL_4
1474 * @arg @ref LL_DMA_CHANNEL_5
1475 * @arg @ref LL_DMA_CHANNEL_6
1476 * @arg @ref LL_DMA_CHANNEL_7
1477 * @arg @ref LL_DMA_CHANNEL_8
1478 * @arg @ref LL_DMA_CHANNEL_9
1479 * @arg @ref LL_DMA_CHANNEL_10
1480 * @arg @ref LL_DMA_CHANNEL_11
1481 * @arg @ref LL_DMA_CHANNEL_12
1482 * @arg @ref LL_DMA_CHANNEL_13
1483 * @arg @ref LL_DMA_CHANNEL_14
1484 * @arg @ref LL_DMA_CHANNEL_15
1485 * @retval State of bit (1 or 0).
1486 */
LL_DMA_IsEnabledChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1487 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1488 {
1489 uint32_t dma_base_addr = (uint32_t)DMAx;
1490 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_EN)
1491 == (DMA_CCR_EN)) ? 1UL : 0UL);
1492 }
1493
1494 /**
1495 * @brief Reset channel.
1496 * @note This API is used for all available DMA channels.
1497 * @rmtoll CCR RESET LL_DMA_ResetChannel
1498 * @param DMAx DMAx Instance
1499 * @param Channel This parameter can be one of the following values:
1500 * @arg @ref LL_DMA_CHANNEL_0
1501 * @arg @ref LL_DMA_CHANNEL_1
1502 * @arg @ref LL_DMA_CHANNEL_2
1503 * @arg @ref LL_DMA_CHANNEL_3
1504 * @arg @ref LL_DMA_CHANNEL_4
1505 * @arg @ref LL_DMA_CHANNEL_5
1506 * @arg @ref LL_DMA_CHANNEL_6
1507 * @arg @ref LL_DMA_CHANNEL_7
1508 * @arg @ref LL_DMA_CHANNEL_8
1509 * @arg @ref LL_DMA_CHANNEL_9
1510 * @arg @ref LL_DMA_CHANNEL_10
1511 * @arg @ref LL_DMA_CHANNEL_11
1512 * @arg @ref LL_DMA_CHANNEL_12
1513 * @arg @ref LL_DMA_CHANNEL_13
1514 * @arg @ref LL_DMA_CHANNEL_14
1515 * @arg @ref LL_DMA_CHANNEL_15
1516 * @retval None.
1517 */
LL_DMA_ResetChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1518 __STATIC_INLINE void LL_DMA_ResetChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1519 {
1520 uint32_t dma_base_addr = (uint32_t)DMAx;
1521 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_RESET);
1522 }
1523
1524 /**
1525 * @brief Suspend channel.
1526 * @note This API is used for all available DMA channels.
1527 * @rmtoll CCR SUSP LL_DMA_SuspendChannel
1528 * @param DMAx DMAx Instance
1529 * @param Channel This parameter can be one of the following values:
1530 * @arg @ref LL_DMA_CHANNEL_0
1531 * @arg @ref LL_DMA_CHANNEL_1
1532 * @arg @ref LL_DMA_CHANNEL_2
1533 * @arg @ref LL_DMA_CHANNEL_3
1534 * @arg @ref LL_DMA_CHANNEL_4
1535 * @arg @ref LL_DMA_CHANNEL_5
1536 * @arg @ref LL_DMA_CHANNEL_6
1537 * @arg @ref LL_DMA_CHANNEL_7
1538 * @arg @ref LL_DMA_CHANNEL_8
1539 * @arg @ref LL_DMA_CHANNEL_9
1540 * @arg @ref LL_DMA_CHANNEL_10
1541 * @arg @ref LL_DMA_CHANNEL_11
1542 * @arg @ref LL_DMA_CHANNEL_12
1543 * @arg @ref LL_DMA_CHANNEL_13
1544 * @arg @ref LL_DMA_CHANNEL_14
1545 * @arg @ref LL_DMA_CHANNEL_15
1546 * @retval None.
1547 */
LL_DMA_SuspendChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1548 __STATIC_INLINE void LL_DMA_SuspendChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1549 {
1550 uint32_t dma_base_addr = (uint32_t)DMAx;
1551 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP);
1552 }
1553
1554 /**
1555 * @brief Resume channel.
1556 * @note This API is used for all available DMA channels.
1557 * @rmtoll CCR SUSP LL_DMA_ResumeChannel
1558 * @param DMAx DMAx Instance
1559 * @param Channel This parameter can be one of the following values:
1560 * @arg @ref LL_DMA_CHANNEL_0
1561 * @arg @ref LL_DMA_CHANNEL_1
1562 * @arg @ref LL_DMA_CHANNEL_2
1563 * @arg @ref LL_DMA_CHANNEL_3
1564 * @arg @ref LL_DMA_CHANNEL_4
1565 * @arg @ref LL_DMA_CHANNEL_5
1566 * @arg @ref LL_DMA_CHANNEL_6
1567 * @arg @ref LL_DMA_CHANNEL_7
1568 * @arg @ref LL_DMA_CHANNEL_8
1569 * @arg @ref LL_DMA_CHANNEL_9
1570 * @arg @ref LL_DMA_CHANNEL_10
1571 * @arg @ref LL_DMA_CHANNEL_11
1572 * @arg @ref LL_DMA_CHANNEL_12
1573 * @arg @ref LL_DMA_CHANNEL_13
1574 * @arg @ref LL_DMA_CHANNEL_14
1575 * @arg @ref LL_DMA_CHANNEL_15
1576 * @retval None.
1577 */
LL_DMA_ResumeChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1578 __STATIC_INLINE void LL_DMA_ResumeChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1579 {
1580 uint32_t dma_base_addr = (uint32_t)DMAx;
1581 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP);
1582 }
1583
1584 /**
1585 * @brief Check if channel is suspended.
1586 * @note This API is used for all available DMA channels.
1587 * @rmtoll CCR SUSP LL_DMA_IsSuspendedChannel
1588 * @param DMAx DMAx Instance
1589 * @param Channel This parameter can be one of the following values:
1590 * @arg @ref LL_DMA_CHANNEL_0
1591 * @arg @ref LL_DMA_CHANNEL_1
1592 * @arg @ref LL_DMA_CHANNEL_2
1593 * @arg @ref LL_DMA_CHANNEL_3
1594 * @arg @ref LL_DMA_CHANNEL_4
1595 * @arg @ref LL_DMA_CHANNEL_5
1596 * @arg @ref LL_DMA_CHANNEL_6
1597 * @arg @ref LL_DMA_CHANNEL_7
1598 * @arg @ref LL_DMA_CHANNEL_8
1599 * @arg @ref LL_DMA_CHANNEL_9
1600 * @arg @ref LL_DMA_CHANNEL_10
1601 * @arg @ref LL_DMA_CHANNEL_11
1602 * @arg @ref LL_DMA_CHANNEL_12
1603 * @arg @ref LL_DMA_CHANNEL_13
1604 * @arg @ref LL_DMA_CHANNEL_14
1605 * @arg @ref LL_DMA_CHANNEL_15
1606 * @retval State of bit (1 or 0).
1607 */
LL_DMA_IsSuspendedChannel(const DMA_TypeDef * DMAx,uint32_t Channel)1608 __STATIC_INLINE uint32_t LL_DMA_IsSuspendedChannel(const DMA_TypeDef *DMAx, uint32_t Channel)
1609 {
1610 uint32_t dma_base_addr = (uint32_t)DMAx;
1611 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSP)
1612 == (DMA_CCR_SUSP)) ? 1UL : 0UL);
1613 }
1614
1615 /**
1616 * @brief Set linked-list base address.
1617 * @note This API is used for all available DMA channels.
1618 * @rmtoll CLBAR LBA LL_DMA_SetLinkedListBaseAddr
1619 * @param DMAx DMAx Instance
1620 * @param Channel This parameter can be one of the following values:
1621 * @arg @ref LL_DMA_CHANNEL_0
1622 * @arg @ref LL_DMA_CHANNEL_1
1623 * @arg @ref LL_DMA_CHANNEL_2
1624 * @arg @ref LL_DMA_CHANNEL_3
1625 * @arg @ref LL_DMA_CHANNEL_4
1626 * @arg @ref LL_DMA_CHANNEL_5
1627 * @arg @ref LL_DMA_CHANNEL_6
1628 * @arg @ref LL_DMA_CHANNEL_7
1629 * @arg @ref LL_DMA_CHANNEL_8
1630 * @arg @ref LL_DMA_CHANNEL_9
1631 * @arg @ref LL_DMA_CHANNEL_10
1632 * @arg @ref LL_DMA_CHANNEL_11
1633 * @arg @ref LL_DMA_CHANNEL_12
1634 * @arg @ref LL_DMA_CHANNEL_13
1635 * @arg @ref LL_DMA_CHANNEL_14
1636 * @arg @ref LL_DMA_CHANNEL_15
1637 * @param LinkedListBaseAddr Between 0 to 0xFFFF0000 (where the 4 LSB bytes
1638 * are always 0)
1639 * @retval None.
1640 */
LL_DMA_SetLinkedListBaseAddr(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkedListBaseAddr)1641 __STATIC_INLINE void LL_DMA_SetLinkedListBaseAddr(const DMA_TypeDef *DMAx, uint32_t Channel,
1642 uint32_t LinkedListBaseAddr)
1643 {
1644 uint32_t dma_base_addr = (uint32_t)DMAx;
1645 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLBAR, DMA_CLBAR_LBA,
1646 (LinkedListBaseAddr & DMA_CLBAR_LBA));
1647 }
1648
1649 /**
1650 * @brief Get linked-list base address.
1651 * @note This API is used for all available DMA channels.
1652 * @rmtoll CLBAR LBA LL_DMA_GetLinkedListBaseAddr
1653 * @param DMAx DMAx Instance
1654 * @param Channel This parameter can be one of the following values:
1655 * @arg @ref LL_DMA_CHANNEL_0
1656 * @arg @ref LL_DMA_CHANNEL_1
1657 * @arg @ref LL_DMA_CHANNEL_2
1658 * @arg @ref LL_DMA_CHANNEL_3
1659 * @arg @ref LL_DMA_CHANNEL_4
1660 * @arg @ref LL_DMA_CHANNEL_5
1661 * @arg @ref LL_DMA_CHANNEL_6
1662 * @arg @ref LL_DMA_CHANNEL_7
1663 * @arg @ref LL_DMA_CHANNEL_8
1664 * @arg @ref LL_DMA_CHANNEL_9
1665 * @arg @ref LL_DMA_CHANNEL_10
1666 * @arg @ref LL_DMA_CHANNEL_11
1667 * @arg @ref LL_DMA_CHANNEL_12
1668 * @arg @ref LL_DMA_CHANNEL_13
1669 * @arg @ref LL_DMA_CHANNEL_14
1670 * @arg @ref LL_DMA_CHANNEL_15
1671 * @retval Value between 0 to 0xFFFF0000 (where the 4 LSB bytes are always 0)
1672 */
LL_DMA_GetLinkedListBaseAddr(const DMA_TypeDef * DMAx,uint32_t Channel)1673 __STATIC_INLINE uint32_t LL_DMA_GetLinkedListBaseAddr(const DMA_TypeDef *DMAx, uint32_t Channel)
1674 {
1675 uint32_t dma_base_addr = (uint32_t)DMAx;
1676 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLBAR, DMA_CLBAR_LBA));
1677 }
1678
1679 /**
1680 * @brief Configure all parameters linked to channel control.
1681 * @note This API is used for all available DMA channels.
1682 * For LPDMA channels, LAP field programming is discarded.
1683 * @rmtoll CCR PRIO LL_DMA_ConfigControl\n
1684 * CCR LAP LL_DMA_ConfigControl\n
1685 * CCR LSM LL_DMA_ConfigControl
1686 * @param DMAx DMAx Instance
1687 * @param Channel This parameter can be one of the following values:
1688 * @arg @ref LL_DMA_CHANNEL_0
1689 * @arg @ref LL_DMA_CHANNEL_1
1690 * @arg @ref LL_DMA_CHANNEL_2
1691 * @arg @ref LL_DMA_CHANNEL_3
1692 * @arg @ref LL_DMA_CHANNEL_4
1693 * @arg @ref LL_DMA_CHANNEL_5
1694 * @arg @ref LL_DMA_CHANNEL_6
1695 * @arg @ref LL_DMA_CHANNEL_7
1696 * @arg @ref LL_DMA_CHANNEL_8
1697 * @arg @ref LL_DMA_CHANNEL_9
1698 * @arg @ref LL_DMA_CHANNEL_10
1699 * @arg @ref LL_DMA_CHANNEL_11
1700 * @arg @ref LL_DMA_CHANNEL_12
1701 * @arg @ref LL_DMA_CHANNEL_13
1702 * @arg @ref LL_DMA_CHANNEL_14
1703 * @arg @ref LL_DMA_CHANNEL_15
1704 * @param Configuration This parameter must be a combination of all the following values:
1705 * @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT or @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT or
1706 * @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT or @ref LL_DMA_HIGH_PRIORITY
1707 * @arg @ref LL_DMA_LINK_ALLOCATED_PORT0 or @ref LL_DMA_LINK_ALLOCATED_PORT1
1708 * @arg @ref LL_DMA_LSM_FULL_EXECUTION or @ref LL_DMA_LSM_1LINK_EXECUTION
1709 *@retval None.
1710 */
LL_DMA_ConfigControl(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)1711 __STATIC_INLINE void LL_DMA_ConfigControl(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
1712 {
1713 uint32_t dma_base_addr = (uint32_t)DMAx;
1714 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
1715 (DMA_CCR_PRIO | DMA_CCR_LAP | DMA_CCR_LSM), Configuration);
1716 }
1717
1718 /**
1719 * @brief Set priority level.
1720 * @note This API is used for all available DMA channels.
1721 * @rmtoll CCR PRIO LL_DMA_SetChannelPriorityLevel
1722 * @param DMAx DMAx Instance
1723 * @param Channel This parameter can be one of the following values:
1724 * @arg @ref LL_DMA_CHANNEL_0
1725 * @arg @ref LL_DMA_CHANNEL_1
1726 * @arg @ref LL_DMA_CHANNEL_2
1727 * @arg @ref LL_DMA_CHANNEL_3
1728 * @arg @ref LL_DMA_CHANNEL_4
1729 * @arg @ref LL_DMA_CHANNEL_5
1730 * @arg @ref LL_DMA_CHANNEL_6
1731 * @arg @ref LL_DMA_CHANNEL_7
1732 * @arg @ref LL_DMA_CHANNEL_8
1733 * @arg @ref LL_DMA_CHANNEL_9
1734 * @arg @ref LL_DMA_CHANNEL_10
1735 * @arg @ref LL_DMA_CHANNEL_11
1736 * @arg @ref LL_DMA_CHANNEL_12
1737 * @arg @ref LL_DMA_CHANNEL_13
1738 * @arg @ref LL_DMA_CHANNEL_14
1739 * @arg @ref LL_DMA_CHANNEL_15
1740 * @param Priority This parameter can be one of the following values:
1741 * @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT
1742 * @arg @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT
1743 * @arg @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT
1744 * @arg @ref LL_DMA_HIGH_PRIORITY
1745 * @retval None.
1746 */
LL_DMA_SetChannelPriorityLevel(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Priority)1747 __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority)
1748 {
1749 uint32_t dma_base_addr = (uint32_t)DMAx;
1750 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PRIO, Priority);
1751 }
1752
1753 /**
1754 * @brief Get Channel priority level.
1755 * @note This API is used for all available DMA channels.
1756 * @rmtoll CCR PRIO LL_DMA_GetChannelPriorityLevel
1757 * @param DMAx DMAx Instance
1758 * @param Channel This parameter can be one of the following values:
1759 * @arg @ref LL_DMA_CHANNEL_0
1760 * @arg @ref LL_DMA_CHANNEL_1
1761 * @arg @ref LL_DMA_CHANNEL_2
1762 * @arg @ref LL_DMA_CHANNEL_3
1763 * @arg @ref LL_DMA_CHANNEL_4
1764 * @arg @ref LL_DMA_CHANNEL_5
1765 * @arg @ref LL_DMA_CHANNEL_6
1766 * @arg @ref LL_DMA_CHANNEL_7
1767 * @arg @ref LL_DMA_CHANNEL_8
1768 * @arg @ref LL_DMA_CHANNEL_9
1769 * @arg @ref LL_DMA_CHANNEL_10
1770 * @arg @ref LL_DMA_CHANNEL_11
1771 * @arg @ref LL_DMA_CHANNEL_12
1772 * @arg @ref LL_DMA_CHANNEL_13
1773 * @arg @ref LL_DMA_CHANNEL_14
1774 * @arg @ref LL_DMA_CHANNEL_15
1775 * @retval Returned value can be one of the following values:
1776 * @arg @ref LL_DMA_LOW_PRIORITY_LOW_WEIGHT
1777 * @arg @ref LL_DMA_LOW_PRIORITY_MID_WEIGHT
1778 * @arg @ref LL_DMA_LOW_PRIORITY_HIGH_WEIGHT
1779 * @arg @ref LL_DMA_HIGH_PRIORITY
1780 */
LL_DMA_GetChannelPriorityLevel(const DMA_TypeDef * DMAx,uint32_t Channel)1781 __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(const DMA_TypeDef *DMAx, uint32_t Channel)
1782 {
1783 uint32_t dma_base_addr = (uint32_t)DMAx;
1784 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_PRIO));
1785 }
1786
1787 /**
1788 * @brief Set linked-list allocated port.
1789 * @note This API is not used for LPDMA channels.
1790 * @rmtoll CCR LAP LL_DMA_SetLinkAllocatedPort
1791 * @param DMAx DMAx Instance
1792 * @param Channel This parameter can be one of the following values:
1793 * @arg @ref LL_DMA_CHANNEL_0
1794 * @arg @ref LL_DMA_CHANNEL_1
1795 * @arg @ref LL_DMA_CHANNEL_2
1796 * @arg @ref LL_DMA_CHANNEL_3
1797 * @arg @ref LL_DMA_CHANNEL_4
1798 * @arg @ref LL_DMA_CHANNEL_5
1799 * @arg @ref LL_DMA_CHANNEL_6
1800 * @arg @ref LL_DMA_CHANNEL_7
1801 * @arg @ref LL_DMA_CHANNEL_8
1802 * @arg @ref LL_DMA_CHANNEL_9
1803 * @arg @ref LL_DMA_CHANNEL_10
1804 * @arg @ref LL_DMA_CHANNEL_11
1805 * @arg @ref LL_DMA_CHANNEL_12
1806 * @arg @ref LL_DMA_CHANNEL_13
1807 * @arg @ref LL_DMA_CHANNEL_14
1808 * @arg @ref LL_DMA_CHANNEL_15
1809 * @param LinkAllocatedPort This parameter can be one of the following values:
1810 * @arg @ref LL_DMA_LINK_ALLOCATED_PORT0
1811 * @arg @ref LL_DMA_LINK_ALLOCATED_PORT1
1812 * @retval None.
1813 */
LL_DMA_SetLinkAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkAllocatedPort)1814 __STATIC_INLINE void LL_DMA_SetLinkAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t LinkAllocatedPort)
1815 {
1816 uint32_t dma_base_addr = (uint32_t)DMAx;
1817 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR,
1818 DMA_CCR_LAP, LinkAllocatedPort);
1819 }
1820
1821 /**
1822 * @brief Get linked-list allocated port.
1823 * @note This API is not used for LPDMA channels.
1824 * @rmtoll CCR LAP LL_DMA_GetLinkAllocatedPort
1825 * @param DMAx DMAx Instance
1826 * @param Channel This parameter can be one of the following values:
1827 * @arg @ref LL_DMA_CHANNEL_0
1828 * @arg @ref LL_DMA_CHANNEL_1
1829 * @arg @ref LL_DMA_CHANNEL_2
1830 * @arg @ref LL_DMA_CHANNEL_3
1831 * @arg @ref LL_DMA_CHANNEL_4
1832 * @arg @ref LL_DMA_CHANNEL_5
1833 * @arg @ref LL_DMA_CHANNEL_6
1834 * @arg @ref LL_DMA_CHANNEL_7
1835 * @arg @ref LL_DMA_CHANNEL_8
1836 * @arg @ref LL_DMA_CHANNEL_9
1837 * @arg @ref LL_DMA_CHANNEL_10
1838 * @arg @ref LL_DMA_CHANNEL_11
1839 * @arg @ref LL_DMA_CHANNEL_12
1840 * @arg @ref LL_DMA_CHANNEL_13
1841 * @arg @ref LL_DMA_CHANNEL_14
1842 * @arg @ref LL_DMA_CHANNEL_15
1843 * @retval Returned value can be one of the following values:
1844 * @arg @ref LL_DMA_LINK_ALLOCATED_PORT0
1845 * @arg @ref LL_DMA_LINK_ALLOCATED_PORT1
1846 */
LL_DMA_GetLinkAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel)1847 __STATIC_INLINE uint32_t LL_DMA_GetLinkAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
1848 {
1849 uint32_t dma_base_addr = (uint32_t)DMAx;
1850 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LAP));
1851 }
1852
1853 /**
1854 * @brief Set link step mode.
1855 * @note This API is used for all available DMA channels.
1856 * @rmtoll CCR LSM LL_DMA_SetLinkStepMode
1857 * @param DMAx DMAx Instance
1858 * @param Channel This parameter can be one of the following values:
1859 * @arg @ref LL_DMA_CHANNEL_0
1860 * @arg @ref LL_DMA_CHANNEL_1
1861 * @arg @ref LL_DMA_CHANNEL_2
1862 * @arg @ref LL_DMA_CHANNEL_3
1863 * @arg @ref LL_DMA_CHANNEL_4
1864 * @arg @ref LL_DMA_CHANNEL_5
1865 * @arg @ref LL_DMA_CHANNEL_6
1866 * @arg @ref LL_DMA_CHANNEL_7
1867 * @arg @ref LL_DMA_CHANNEL_8
1868 * @arg @ref LL_DMA_CHANNEL_9
1869 * @arg @ref LL_DMA_CHANNEL_10
1870 * @arg @ref LL_DMA_CHANNEL_11
1871 * @arg @ref LL_DMA_CHANNEL_12
1872 * @arg @ref LL_DMA_CHANNEL_13
1873 * @arg @ref LL_DMA_CHANNEL_14
1874 * @arg @ref LL_DMA_CHANNEL_15
1875 * @param LinkStepMode This parameter can be one of the following values:
1876 * @arg @ref LL_DMA_LSM_FULL_EXECUTION
1877 * @arg @ref LL_DMA_LSM_1LINK_EXECUTION
1878 * @retval None.
1879 */
LL_DMA_SetLinkStepMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkStepMode)1880 __STATIC_INLINE void LL_DMA_SetLinkStepMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t LinkStepMode)
1881 {
1882 uint32_t dma_base_addr = (uint32_t)DMAx;
1883 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LSM, LinkStepMode);
1884 }
1885
1886 /**
1887 * @brief Get Link step mode.
1888 * @note This API is used for all available DMA channels.
1889 * @rmtoll CCR LSM LL_DMA_GetLinkStepMode
1890 * @param DMAx DMAx Instance
1891 * @param Channel This parameter can be one of the following values:
1892 * @arg @ref LL_DMA_CHANNEL_0
1893 * @arg @ref LL_DMA_CHANNEL_1
1894 * @arg @ref LL_DMA_CHANNEL_2
1895 * @arg @ref LL_DMA_CHANNEL_3
1896 * @arg @ref LL_DMA_CHANNEL_4
1897 * @arg @ref LL_DMA_CHANNEL_5
1898 * @arg @ref LL_DMA_CHANNEL_6
1899 * @arg @ref LL_DMA_CHANNEL_7
1900 * @arg @ref LL_DMA_CHANNEL_8
1901 * @arg @ref LL_DMA_CHANNEL_9
1902 * @arg @ref LL_DMA_CHANNEL_10
1903 * @arg @ref LL_DMA_CHANNEL_11
1904 * @arg @ref LL_DMA_CHANNEL_12
1905 * @arg @ref LL_DMA_CHANNEL_13
1906 * @arg @ref LL_DMA_CHANNEL_14
1907 * @arg @ref LL_DMA_CHANNEL_15
1908 * @retval Returned value can be one of the following values:
1909 * @arg @ref LL_DMA_LSM_FULL_EXECUTION
1910 * @arg @ref LL_DMA_LSM_1LINK_EXECUTION
1911 */
LL_DMA_GetLinkStepMode(const DMA_TypeDef * DMAx,uint32_t Channel)1912 __STATIC_INLINE uint32_t LL_DMA_GetLinkStepMode(const DMA_TypeDef *DMAx, uint32_t Channel)
1913 {
1914 uint32_t dma_base_addr = (uint32_t)DMAx;
1915 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_LSM));
1916 }
1917
1918 /**
1919 * @brief Configure data transfer.
1920 * @note This API is used for all available DMA channels.
1921 * For LPDMA channels DAP, DHX, DBX, SAP, SBX fields programming is
1922 * discarded.
1923 * @rmtoll CTR1 DAP LL_DMA_ConfigTransfer\n
1924 * CTR1 DHX LL_DMA_ConfigTransfer\n
1925 * CTR1 DBX LL_DMA_ConfigTransfer\n
1926 * CTR1 DINC LL_DMA_ConfigTransfer\n
1927 * CTR1 SAP LL_DMA_ConfigTransfer\n
1928 * CTR1 SBX LL_DMA_ConfigTransfer\n
1929 * CTR1 PAM LL_DMA_ConfigTransfer\n
1930 * CTR1 SINC LL_DMA_ConfigTransfer
1931 * @param DMAx DMAx Instance
1932 * @param Channel This parameter can be one of the following values:
1933 * @arg @ref LL_DMA_CHANNEL_0
1934 * @arg @ref LL_DMA_CHANNEL_1
1935 * @arg @ref LL_DMA_CHANNEL_2
1936 * @arg @ref LL_DMA_CHANNEL_3
1937 * @arg @ref LL_DMA_CHANNEL_4
1938 * @arg @ref LL_DMA_CHANNEL_5
1939 * @arg @ref LL_DMA_CHANNEL_6
1940 * @arg @ref LL_DMA_CHANNEL_7
1941 * @arg @ref LL_DMA_CHANNEL_8
1942 * @arg @ref LL_DMA_CHANNEL_9
1943 * @arg @ref LL_DMA_CHANNEL_10
1944 * @arg @ref LL_DMA_CHANNEL_11
1945 * @arg @ref LL_DMA_CHANNEL_12
1946 * @arg @ref LL_DMA_CHANNEL_13
1947 * @arg @ref LL_DMA_CHANNEL_14
1948 * @arg @ref LL_DMA_CHANNEL_15
1949 * @param Configuration This parameter must be a combination of all the following values:
1950 * @arg @ref LL_DMA_DEST_ALLOCATED_PORT0 or @ref LL_DMA_DEST_ALLOCATED_PORT1
1951 * @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE or @ref LL_DMA_DEST_HALFWORD_EXCHANGE
1952 * @arg @ref LL_DMA_DEST_BYTE_PRESERVE or @ref LL_DMA_DEST_BYTE_EXCHANGE
1953 * @arg @ref LL_DMA_SRC_BYTE_PRESERVE or @ref LL_DMA_SRC_BYTE_EXCHANGE
1954 * @arg @ref LL_DMA_DEST_FIXED or @ref LL_DMA_DEST_INCREMENT
1955 * @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE or @ref LL_DMA_DEST_DATAWIDTH_HALFWORD or
1956 * @ref LL_DMA_DEST_DATAWIDTH_WORD
1957 * @arg @ref LL_DMA_SRC_ALLOCATED_PORT0 or @ref LL_DMA_SRC_ALLOCATED_PORT1
1958 * @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD or @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD or
1959 * @ref LL_DMA_DATA_PACK_UNPACK
1960 * @arg @ref LL_DMA_SRC_FIXED or @ref LL_DMA_SRC_INCREMENT
1961 * @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE or @ref LL_DMA_SRC_DATAWIDTH_HALFWORD or
1962 * @ref LL_DMA_SRC_DATAWIDTH_WORD
1963 *@retval None.
1964 */
LL_DMA_ConfigTransfer(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)1965 __STATIC_INLINE void LL_DMA_ConfigTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
1966 {
1967 uint32_t dma_base_addr = (uint32_t)DMAx;
1968 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
1969 DMA_CTR1_DAP | DMA_CTR1_DHX | DMA_CTR1_DBX | DMA_CTR1_SBX | DMA_CTR1_DINC | DMA_CTR1_SINC | \
1970 DMA_CTR1_SAP | DMA_CTR1_PAM | DMA_CTR1_DDW_LOG2 | DMA_CTR1_SDW_LOG2, Configuration);
1971 }
1972
1973 /**
1974 * @brief Configure source and destination burst length.
1975 * @note This API is not used for LPDMA channels.
1976 * @rmtoll CTR1 DBL_1 LL_DMA_SetDestBurstLength\n
1977 * @rmtoll CTR1 SBL_1 LL_DMA_SetDestBurstLength
1978 * @param DMAx DMAx Instance
1979 * @param Channel This parameter can be one of the following values:
1980 * @arg @ref LL_DMA_CHANNEL_0
1981 * @arg @ref LL_DMA_CHANNEL_1
1982 * @arg @ref LL_DMA_CHANNEL_2
1983 * @arg @ref LL_DMA_CHANNEL_3
1984 * @arg @ref LL_DMA_CHANNEL_4
1985 * @arg @ref LL_DMA_CHANNEL_5
1986 * @arg @ref LL_DMA_CHANNEL_6
1987 * @arg @ref LL_DMA_CHANNEL_7
1988 * @arg @ref LL_DMA_CHANNEL_8
1989 * @arg @ref LL_DMA_CHANNEL_9
1990 * @arg @ref LL_DMA_CHANNEL_10
1991 * @arg @ref LL_DMA_CHANNEL_11
1992 * @arg @ref LL_DMA_CHANNEL_12
1993 * @arg @ref LL_DMA_CHANNEL_13
1994 * @arg @ref LL_DMA_CHANNEL_14
1995 * @arg @ref LL_DMA_CHANNEL_15
1996 * @param SrcBurstLength Between 1 to 64
1997 * @param DestBurstLength Between 1 to 64
1998 * @retval None.
1999 */
LL_DMA_ConfigBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcBurstLength,uint32_t DestBurstLength)2000 __STATIC_INLINE void LL_DMA_ConfigBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcBurstLength,
2001 uint32_t DestBurstLength)
2002 {
2003 uint32_t dma_base_addr = (uint32_t)DMAx;
2004 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2005 (DMA_CTR1_SBL_1 | DMA_CTR1_DBL_1), (((SrcBurstLength - 1U) << DMA_CTR1_SBL_1_Pos) & DMA_CTR1_SBL_1) | \
2006 (((DestBurstLength - 1U) << DMA_CTR1_DBL_1_Pos) & DMA_CTR1_DBL_1));
2007 }
2008
2009 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
2010 /**
2011 * @brief Configure all secure parameters linked to DMA channel.
2012 * @note This API is used for all available DMA channels.
2013 * @rmtoll SECCFGR SEC LL_DMA_ConfigChannelSecure\n
2014 * @rmtoll CTR1 SSEC LL_DMA_ConfigChannelSecure\n
2015 * @rmtoll CTR1 DSEC LL_DMA_ConfigChannelSecure
2016 * @param DMAx DMAx Instance
2017 * @param Channel This parameter can be one of the following values:
2018 * @arg @ref LL_DMA_CHANNEL_0
2019 * @arg @ref LL_DMA_CHANNEL_1
2020 * @arg @ref LL_DMA_CHANNEL_2
2021 * @arg @ref LL_DMA_CHANNEL_3
2022 * @arg @ref LL_DMA_CHANNEL_4
2023 * @arg @ref LL_DMA_CHANNEL_5
2024 * @arg @ref LL_DMA_CHANNEL_6
2025 * @arg @ref LL_DMA_CHANNEL_7
2026 * @arg @ref LL_DMA_CHANNEL_8
2027 * @arg @ref LL_DMA_CHANNEL_9
2028 * @arg @ref LL_DMA_CHANNEL_10
2029 * @arg @ref LL_DMA_CHANNEL_11
2030 * @arg @ref LL_DMA_CHANNEL_12
2031 * @arg @ref LL_DMA_CHANNEL_13
2032 * @arg @ref LL_DMA_CHANNEL_14
2033 * @arg @ref LL_DMA_CHANNEL_15
2034 * @param Configuration This parameter must be a combination of all the following values:
2035 * @arg @ref LL_DMA_CHANNEL_NSEC or @ref LL_DMA_CHANNEL_SEC
2036 * @arg @ref LL_DMA_CHANNEL_SRC_NSEC or @ref LL_DMA_CHANNEL_SRC_SEC
2037 * @arg @ref LL_DMA_CHANNEL_DEST_NSEC or @ref LL_DMA_CHANNEL_DEST_SEC
2038 * @retval None.
2039 */
LL_DMA_ConfigChannelSecure(DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)2040 __STATIC_INLINE void LL_DMA_ConfigChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
2041 {
2042 uint32_t dma_base_addr = (uint32_t)DMAx;
2043 MODIFY_REG(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << Channel), ((Configuration & LL_DMA_CHANNEL_SEC) << Channel));
2044 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2045 (DMA_CTR1_SSEC | DMA_CTR1_DSEC), (Configuration & (~LL_DMA_CHANNEL_SEC)));
2046 }
2047
2048 /**
2049 * @brief Enable security attribute of the DMA transfer to the destination.
2050 * @note This API is used for all available DMA channels.
2051 * @rmtoll CTR1 DSEC LL_DMA_EnableChannelDestSecure
2052 * @param DMAx DMAx Instance
2053 * @param Channel This parameter can be one of the following values:
2054 * @arg @ref LL_DMA_CHANNEL_0
2055 * @arg @ref LL_DMA_CHANNEL_1
2056 * @arg @ref LL_DMA_CHANNEL_2
2057 * @arg @ref LL_DMA_CHANNEL_3
2058 * @arg @ref LL_DMA_CHANNEL_4
2059 * @arg @ref LL_DMA_CHANNEL_5
2060 * @arg @ref LL_DMA_CHANNEL_6
2061 * @arg @ref LL_DMA_CHANNEL_7
2062 * @arg @ref LL_DMA_CHANNEL_8
2063 * @arg @ref LL_DMA_CHANNEL_9
2064 * @arg @ref LL_DMA_CHANNEL_10
2065 * @arg @ref LL_DMA_CHANNEL_11
2066 * @arg @ref LL_DMA_CHANNEL_12
2067 * @arg @ref LL_DMA_CHANNEL_13
2068 * @arg @ref LL_DMA_CHANNEL_14
2069 * @arg @ref LL_DMA_CHANNEL_15
2070 * @retval None.
2071 */
LL_DMA_EnableChannelDestSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2072 __STATIC_INLINE void LL_DMA_EnableChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2073 {
2074 uint32_t dma_base_addr = (uint32_t)DMAx;
2075 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC);
2076 }
2077
2078 /**
2079 * @brief Disable security attribute of the DMA transfer to the destination.
2080 * @note This API is used for all available DMA channels.
2081 * @rmtoll CTR1 DSEC LL_DMA_DisableChannelDestSecure
2082 * @param DMAx DMAx Instance
2083 * @param Channel This parameter can be one of the following values:
2084 * @arg @ref LL_DMA_CHANNEL_0
2085 * @arg @ref LL_DMA_CHANNEL_1
2086 * @arg @ref LL_DMA_CHANNEL_2
2087 * @arg @ref LL_DMA_CHANNEL_3
2088 * @arg @ref LL_DMA_CHANNEL_4
2089 * @arg @ref LL_DMA_CHANNEL_5
2090 * @arg @ref LL_DMA_CHANNEL_6
2091 * @arg @ref LL_DMA_CHANNEL_7
2092 * @arg @ref LL_DMA_CHANNEL_8
2093 * @arg @ref LL_DMA_CHANNEL_9
2094 * @arg @ref LL_DMA_CHANNEL_10
2095 * @arg @ref LL_DMA_CHANNEL_11
2096 * @arg @ref LL_DMA_CHANNEL_12
2097 * @arg @ref LL_DMA_CHANNEL_13
2098 * @arg @ref LL_DMA_CHANNEL_14
2099 * @arg @ref LL_DMA_CHANNEL_15
2100 * @retval None.
2101 */
LL_DMA_DisableChannelDestSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2102 __STATIC_INLINE void LL_DMA_DisableChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2103 {
2104 uint32_t dma_base_addr = (uint32_t)DMAx;
2105 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC);
2106 }
2107 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
2108
2109 /**
2110 * @brief Check security attribute of the DMA transfer to the destination.
2111 * @note This API is used for all available DMA channels.
2112 * @rmtoll CTR1 DSEC LL_DMA_IsEnabledChannelDestSecure
2113 * @param DMAx DMAx Instance
2114 * @param Channel This parameter can be one of the following values:
2115 * @arg @ref LL_DMA_CHANNEL_0
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 * @arg @ref LL_DMA_CHANNEL_8
2124 * @arg @ref LL_DMA_CHANNEL_9
2125 * @arg @ref LL_DMA_CHANNEL_10
2126 * @arg @ref LL_DMA_CHANNEL_11
2127 * @arg @ref LL_DMA_CHANNEL_12
2128 * @arg @ref LL_DMA_CHANNEL_13
2129 * @arg @ref LL_DMA_CHANNEL_14
2130 * @arg @ref LL_DMA_CHANNEL_15
2131 * @retval State of bit (1 or 0).
2132 */
LL_DMA_IsEnabledChannelDestSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2133 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelDestSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2134 {
2135 uint32_t dma_base_addr = (uint32_t)DMAx;
2136 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DSEC)
2137 == (DMA_CTR1_DSEC)) ? 1UL : 0UL);
2138 }
2139
2140 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
2141 /**
2142 * @brief Enable security attribute of the DMA transfer from the source.
2143 * @note This API is used for all available DMA channels.
2144 * @rmtoll CTR1 SSEC LL_DMA_EnableChannelSrcSecure
2145 * @param DMAx DMAx Instance
2146 * @param Channel This parameter can be one of the following values:
2147 * @arg @ref LL_DMA_CHANNEL_0
2148 * @arg @ref LL_DMA_CHANNEL_1
2149 * @arg @ref LL_DMA_CHANNEL_2
2150 * @arg @ref LL_DMA_CHANNEL_3
2151 * @arg @ref LL_DMA_CHANNEL_4
2152 * @arg @ref LL_DMA_CHANNEL_5
2153 * @arg @ref LL_DMA_CHANNEL_6
2154 * @arg @ref LL_DMA_CHANNEL_7
2155 * @arg @ref LL_DMA_CHANNEL_8
2156 * @arg @ref LL_DMA_CHANNEL_9
2157 * @arg @ref LL_DMA_CHANNEL_10
2158 * @arg @ref LL_DMA_CHANNEL_11
2159 * @arg @ref LL_DMA_CHANNEL_12
2160 * @arg @ref LL_DMA_CHANNEL_13
2161 * @arg @ref LL_DMA_CHANNEL_14
2162 * @arg @ref LL_DMA_CHANNEL_15
2163 * @retval None.
2164 */
LL_DMA_EnableChannelSrcSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2165 __STATIC_INLINE void LL_DMA_EnableChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2166 {
2167 uint32_t dma_base_addr = (uint32_t)DMAx;
2168 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC);
2169 }
2170
2171 /**
2172 * @brief Disable security attribute of the DMA transfer from the source.
2173 * @note This API is used for all available DMA channels.
2174 * @rmtoll CTR1 SSEC LL_DMA_DisableChannelSrcSecure
2175 * @param DMAx DMAx Instance
2176 * @param Channel This parameter can be one of the following values:
2177 * @arg @ref LL_DMA_CHANNEL_0
2178 * @arg @ref LL_DMA_CHANNEL_1
2179 * @arg @ref LL_DMA_CHANNEL_2
2180 * @arg @ref LL_DMA_CHANNEL_3
2181 * @arg @ref LL_DMA_CHANNEL_4
2182 * @arg @ref LL_DMA_CHANNEL_5
2183 * @arg @ref LL_DMA_CHANNEL_6
2184 * @arg @ref LL_DMA_CHANNEL_7
2185 * @arg @ref LL_DMA_CHANNEL_8
2186 * @arg @ref LL_DMA_CHANNEL_9
2187 * @arg @ref LL_DMA_CHANNEL_10
2188 * @arg @ref LL_DMA_CHANNEL_11
2189 * @arg @ref LL_DMA_CHANNEL_12
2190 * @arg @ref LL_DMA_CHANNEL_13
2191 * @arg @ref LL_DMA_CHANNEL_14
2192 * @arg @ref LL_DMA_CHANNEL_15
2193 * @retval None.
2194 */
LL_DMA_DisableChannelSrcSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2195 __STATIC_INLINE void LL_DMA_DisableChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2196 {
2197 uint32_t dma_base_addr = (uint32_t)DMAx;
2198 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC);
2199 }
2200 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
2201
2202 /**
2203 * @brief Check security attribute of the DMA transfer from the source.
2204 * @note This API is used for all available DMA channels.
2205 * @rmtoll CTR1 SSEC LL_DMA_IsEnabledChannelSrcSecure
2206 * @param DMAx DMAx Instance
2207 * @param Channel This parameter can be one of the following values:
2208 * @arg @ref LL_DMA_CHANNEL_0
2209 * @arg @ref LL_DMA_CHANNEL_1
2210 * @arg @ref LL_DMA_CHANNEL_2
2211 * @arg @ref LL_DMA_CHANNEL_3
2212 * @arg @ref LL_DMA_CHANNEL_4
2213 * @arg @ref LL_DMA_CHANNEL_5
2214 * @arg @ref LL_DMA_CHANNEL_6
2215 * @arg @ref LL_DMA_CHANNEL_7
2216 * @arg @ref LL_DMA_CHANNEL_8
2217 * @arg @ref LL_DMA_CHANNEL_9
2218 * @arg @ref LL_DMA_CHANNEL_10
2219 * @arg @ref LL_DMA_CHANNEL_11
2220 * @arg @ref LL_DMA_CHANNEL_12
2221 * @arg @ref LL_DMA_CHANNEL_13
2222 * @arg @ref LL_DMA_CHANNEL_14
2223 * @arg @ref LL_DMA_CHANNEL_15
2224 * @retval State of bit (1 or 0).
2225 */
LL_DMA_IsEnabledChannelSrcSecure(const DMA_TypeDef * DMAx,uint32_t Channel)2226 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelSrcSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
2227 {
2228 uint32_t dma_base_addr = (uint32_t)DMAx;
2229 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SSEC)
2230 == (DMA_CTR1_SSEC)) ? 1UL : 0UL);
2231 }
2232
2233 /**
2234 * @brief Set destination allocated port.
2235 * @note This API is not used for LPDMA channels.
2236 * @rmtoll CTR1 DAP LL_DMA_SetDestAllocatedPort
2237 * @param DMAx DMAx Instance
2238 * @param Channel This parameter can be one of the following values:
2239 * @arg @ref LL_DMA_CHANNEL_0
2240 * @arg @ref LL_DMA_CHANNEL_1
2241 * @arg @ref LL_DMA_CHANNEL_2
2242 * @arg @ref LL_DMA_CHANNEL_3
2243 * @arg @ref LL_DMA_CHANNEL_4
2244 * @arg @ref LL_DMA_CHANNEL_5
2245 * @arg @ref LL_DMA_CHANNEL_6
2246 * @arg @ref LL_DMA_CHANNEL_7
2247 * @arg @ref LL_DMA_CHANNEL_8
2248 * @arg @ref LL_DMA_CHANNEL_9
2249 * @arg @ref LL_DMA_CHANNEL_10
2250 * @arg @ref LL_DMA_CHANNEL_11
2251 * @arg @ref LL_DMA_CHANNEL_12
2252 * @arg @ref LL_DMA_CHANNEL_13
2253 * @arg @ref LL_DMA_CHANNEL_14
2254 * @arg @ref LL_DMA_CHANNEL_15
2255 * @param DestAllocatedPort This parameter can be one of the following values:
2256 * @arg @ref LL_DMA_DEST_ALLOCATED_PORT0
2257 * @arg @ref LL_DMA_DEST_ALLOCATED_PORT1
2258 * @retval None.
2259 */
LL_DMA_SetDestAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAllocatedPort)2260 __STATIC_INLINE void LL_DMA_SetDestAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAllocatedPort)
2261 {
2262 uint32_t dma_base_addr = (uint32_t)DMAx;
2263 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DAP,
2264 DestAllocatedPort);
2265 }
2266
2267 /**
2268 * @brief Get destination allocated port.
2269 * @note This API is not used for LPDMA channels.
2270 * @rmtoll CTR1 DAP LL_DMA_GetDestAllocatedPort
2271 * @param DMAx DMAx Instance
2272 * @param Channel This parameter can be one of the following values:
2273 * @arg @ref LL_DMA_CHANNEL_0
2274 * @arg @ref LL_DMA_CHANNEL_1
2275 * @arg @ref LL_DMA_CHANNEL_2
2276 * @arg @ref LL_DMA_CHANNEL_3
2277 * @arg @ref LL_DMA_CHANNEL_4
2278 * @arg @ref LL_DMA_CHANNEL_5
2279 * @arg @ref LL_DMA_CHANNEL_6
2280 * @arg @ref LL_DMA_CHANNEL_7
2281 * @arg @ref LL_DMA_CHANNEL_8
2282 * @arg @ref LL_DMA_CHANNEL_9
2283 * @arg @ref LL_DMA_CHANNEL_10
2284 * @arg @ref LL_DMA_CHANNEL_11
2285 * @arg @ref LL_DMA_CHANNEL_12
2286 * @arg @ref LL_DMA_CHANNEL_13
2287 * @arg @ref LL_DMA_CHANNEL_14
2288 * @arg @ref LL_DMA_CHANNEL_15
2289 * @retval Returned value can be one of the following values:
2290 * @arg @ref LL_DMA_DEST_ALLOCATED_PORT0
2291 * @arg @ref LL_DMA_DEST_ALLOCATED_PORT1
2292 */
LL_DMA_GetDestAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel)2293 __STATIC_INLINE uint32_t LL_DMA_GetDestAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
2294 {
2295 uint32_t dma_base_addr = (uint32_t)DMAx;
2296 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DAP));
2297 }
2298
2299 /**
2300 * @brief Set destination half-word exchange.
2301 * @note This API is not used for LPDMA channels.
2302 * @rmtoll CTR1 DHX LL_DMA_SetDestHWordExchange
2303 * @param DMAx DMAx Instance
2304 * @param Channel This parameter can be one of the following values:
2305 * @arg @ref LL_DMA_CHANNEL_0
2306 * @arg @ref LL_DMA_CHANNEL_1
2307 * @arg @ref LL_DMA_CHANNEL_2
2308 * @arg @ref LL_DMA_CHANNEL_3
2309 * @arg @ref LL_DMA_CHANNEL_4
2310 * @arg @ref LL_DMA_CHANNEL_5
2311 * @arg @ref LL_DMA_CHANNEL_6
2312 * @arg @ref LL_DMA_CHANNEL_7
2313 * @arg @ref LL_DMA_CHANNEL_8
2314 * @arg @ref LL_DMA_CHANNEL_9
2315 * @arg @ref LL_DMA_CHANNEL_10
2316 * @arg @ref LL_DMA_CHANNEL_11
2317 * @arg @ref LL_DMA_CHANNEL_12
2318 * @arg @ref LL_DMA_CHANNEL_13
2319 * @arg @ref LL_DMA_CHANNEL_14
2320 * @arg @ref LL_DMA_CHANNEL_15
2321 * @param DestHWordExchange This parameter can be one of the following values:
2322 * @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE
2323 * @arg @ref LL_DMA_DEST_HALFWORD_EXCHANGE
2324 * @retval None.
2325 */
LL_DMA_SetDestHWordExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestHWordExchange)2326 __STATIC_INLINE void LL_DMA_SetDestHWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestHWordExchange)
2327 {
2328 uint32_t dma_base_addr = (uint32_t)DMAx;
2329 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DHX,
2330 DestHWordExchange);
2331 }
2332
2333 /**
2334 * @brief Get destination half-word exchange.
2335 * @note This API is not used for LPDMA channels.
2336 * @rmtoll CTR1 DHX LL_DMA_GetDestHWordExchange
2337 * @param DMAx DMAx Instance
2338 * @param Channel This parameter can be one of the following values:
2339 * @arg @ref LL_DMA_CHANNEL_0
2340 * @arg @ref LL_DMA_CHANNEL_1
2341 * @arg @ref LL_DMA_CHANNEL_2
2342 * @arg @ref LL_DMA_CHANNEL_3
2343 * @arg @ref LL_DMA_CHANNEL_4
2344 * @arg @ref LL_DMA_CHANNEL_5
2345 * @arg @ref LL_DMA_CHANNEL_6
2346 * @arg @ref LL_DMA_CHANNEL_7
2347 * @arg @ref LL_DMA_CHANNEL_8
2348 * @arg @ref LL_DMA_CHANNEL_9
2349 * @arg @ref LL_DMA_CHANNEL_10
2350 * @arg @ref LL_DMA_CHANNEL_11
2351 * @arg @ref LL_DMA_CHANNEL_12
2352 * @arg @ref LL_DMA_CHANNEL_13
2353 * @arg @ref LL_DMA_CHANNEL_14
2354 * @arg @ref LL_DMA_CHANNEL_15
2355 * @retval Returned value can be one of the following values:
2356 * @arg @ref LL_DMA_DEST_HALFWORD_PRESERVE
2357 * @arg @ref LL_DMA_DEST_HALFWORD_EXCHANGE
2358 */
LL_DMA_GetDestHWordExchange(const DMA_TypeDef * DMAx,uint32_t Channel)2359 __STATIC_INLINE uint32_t LL_DMA_GetDestHWordExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
2360 {
2361 uint32_t dma_base_addr = (uint32_t)DMAx;
2362 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DHX));
2363 }
2364
2365 /**
2366 * @brief Set destination byte exchange.
2367 * @note This API is not used for LPDMA channels.
2368 * @rmtoll CTR1 DBX LL_DMA_SetDestByteExchange
2369 * @param DMAx DMAx Instance
2370 * @param Channel This parameter can be one of the following values:
2371 * @arg @ref LL_DMA_CHANNEL_0
2372 * @arg @ref LL_DMA_CHANNEL_1
2373 * @arg @ref LL_DMA_CHANNEL_2
2374 * @arg @ref LL_DMA_CHANNEL_3
2375 * @arg @ref LL_DMA_CHANNEL_4
2376 * @arg @ref LL_DMA_CHANNEL_5
2377 * @arg @ref LL_DMA_CHANNEL_6
2378 * @arg @ref LL_DMA_CHANNEL_7
2379 * @arg @ref LL_DMA_CHANNEL_8
2380 * @arg @ref LL_DMA_CHANNEL_9
2381 * @arg @ref LL_DMA_CHANNEL_10
2382 * @arg @ref LL_DMA_CHANNEL_11
2383 * @arg @ref LL_DMA_CHANNEL_12
2384 * @arg @ref LL_DMA_CHANNEL_13
2385 * @arg @ref LL_DMA_CHANNEL_14
2386 * @arg @ref LL_DMA_CHANNEL_15
2387 * @param DestByteExchange This parameter can be one of the following values:
2388 * @arg @ref LL_DMA_DEST_BYTE_PRESERVE
2389 * @arg @ref LL_DMA_DEST_BYTE_EXCHANGE
2390 * @retval None.
2391 */
LL_DMA_SetDestByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestByteExchange)2392 __STATIC_INLINE void LL_DMA_SetDestByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestByteExchange)
2393 {
2394 uint32_t dma_base_addr = (uint32_t)DMAx;
2395 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBX,
2396 DestByteExchange);
2397 }
2398
2399 /**
2400 * @brief Get destination byte exchange.
2401 * @note This API is not used for LPDMA channels.
2402 * @rmtoll CTR1 DBX LL_DMA_GetDestByteExchange
2403 * @param DMAx DMAx Instance
2404 * @param Channel This parameter can be one of the following values:
2405 * @arg @ref LL_DMA_CHANNEL_0
2406 * @arg @ref LL_DMA_CHANNEL_1
2407 * @arg @ref LL_DMA_CHANNEL_2
2408 * @arg @ref LL_DMA_CHANNEL_3
2409 * @arg @ref LL_DMA_CHANNEL_4
2410 * @arg @ref LL_DMA_CHANNEL_5
2411 * @arg @ref LL_DMA_CHANNEL_6
2412 * @arg @ref LL_DMA_CHANNEL_7
2413 * @arg @ref LL_DMA_CHANNEL_8
2414 * @arg @ref LL_DMA_CHANNEL_9
2415 * @arg @ref LL_DMA_CHANNEL_10
2416 * @arg @ref LL_DMA_CHANNEL_11
2417 * @arg @ref LL_DMA_CHANNEL_12
2418 * @arg @ref LL_DMA_CHANNEL_13
2419 * @arg @ref LL_DMA_CHANNEL_14
2420 * @arg @ref LL_DMA_CHANNEL_15
2421 * @retval Returned value can be one of the following values:
2422 * @arg @ref LL_DMA_DEST_BYTE_PRESERVE
2423 * @arg @ref LL_DMA_DEST_BYTE_EXCHANGE
2424 */
LL_DMA_GetDestByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel)2425 __STATIC_INLINE uint32_t LL_DMA_GetDestByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
2426 {
2427 uint32_t dma_base_addr = (uint32_t)DMAx;
2428 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBX));
2429 }
2430
2431 /**
2432 * @brief Set source byte exchange.
2433 * @note This API is not used for LPDMA channels.
2434 * @rmtoll CTR1 SBX LL_DMA_SetSrcByteExchange
2435 * @param DMAx DMAx Instance
2436 * @param Channel This parameter can be one of the following values:
2437 * @arg @ref LL_DMA_CHANNEL_0
2438 * @arg @ref LL_DMA_CHANNEL_1
2439 * @arg @ref LL_DMA_CHANNEL_2
2440 * @arg @ref LL_DMA_CHANNEL_3
2441 * @arg @ref LL_DMA_CHANNEL_4
2442 * @arg @ref LL_DMA_CHANNEL_5
2443 * @arg @ref LL_DMA_CHANNEL_6
2444 * @arg @ref LL_DMA_CHANNEL_7
2445 * @arg @ref LL_DMA_CHANNEL_8
2446 * @arg @ref LL_DMA_CHANNEL_9
2447 * @arg @ref LL_DMA_CHANNEL_10
2448 * @arg @ref LL_DMA_CHANNEL_11
2449 * @arg @ref LL_DMA_CHANNEL_12
2450 * @arg @ref LL_DMA_CHANNEL_13
2451 * @arg @ref LL_DMA_CHANNEL_14
2452 * @arg @ref LL_DMA_CHANNEL_15
2453 * @param SrcByteExchange This parameter can be one of the following values:
2454 * @arg @ref LL_DMA_SRC_BYTE_PRESERVE
2455 * @arg @ref LL_DMA_SRC_BYTE_EXCHANGE
2456 * @retval None.
2457 */
LL_DMA_SetSrcByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcByteExchange)2458 __STATIC_INLINE void LL_DMA_SetSrcByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcByteExchange)
2459 {
2460 uint32_t dma_base_addr = (uint32_t)DMAx;
2461 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBX,
2462 SrcByteExchange);
2463 }
2464
2465 /**
2466 * @brief Get source byte exchange.
2467 * @note This API is not used for LPDMA channels.
2468 * @rmtoll CTR1 SBX LL_DMA_GetSrcByteExchange
2469 * @param DMAx DMAx Instance
2470 * @param Channel This parameter can be one of the following values:
2471 * @arg @ref LL_DMA_CHANNEL_0
2472 * @arg @ref LL_DMA_CHANNEL_1
2473 * @arg @ref LL_DMA_CHANNEL_2
2474 * @arg @ref LL_DMA_CHANNEL_3
2475 * @arg @ref LL_DMA_CHANNEL_4
2476 * @arg @ref LL_DMA_CHANNEL_5
2477 * @arg @ref LL_DMA_CHANNEL_6
2478 * @arg @ref LL_DMA_CHANNEL_7
2479 * @arg @ref LL_DMA_CHANNEL_8
2480 * @arg @ref LL_DMA_CHANNEL_9
2481 * @arg @ref LL_DMA_CHANNEL_10
2482 * @arg @ref LL_DMA_CHANNEL_11
2483 * @arg @ref LL_DMA_CHANNEL_12
2484 * @arg @ref LL_DMA_CHANNEL_13
2485 * @arg @ref LL_DMA_CHANNEL_14
2486 * @arg @ref LL_DMA_CHANNEL_15
2487 * @retval Returned value can be one of the following values:
2488 * @arg @ref LL_DMA_SRC_BYTE_PRESERVE
2489 * @arg @ref LL_DMA_SRC_BYTE_EXCHANGE
2490 */
LL_DMA_GetSrcByteExchange(const DMA_TypeDef * DMAx,uint32_t Channel)2491 __STATIC_INLINE uint32_t LL_DMA_GetSrcByteExchange(const DMA_TypeDef *DMAx, uint32_t Channel)
2492 {
2493 uint32_t dma_base_addr = (uint32_t)DMAx;
2494 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBX));
2495 }
2496
2497 /**
2498 * @brief Set destination burst length.
2499 * @note This API is not used for LPDMA channels.
2500 * @rmtoll CTR1 DBL_1 LL_DMA_SetDestBurstLength
2501 * @param DMAx DMAx Instance
2502 * @param Channel This parameter can be one of the following values:
2503 * @arg @ref LL_DMA_CHANNEL_0
2504 * @arg @ref LL_DMA_CHANNEL_1
2505 * @arg @ref LL_DMA_CHANNEL_2
2506 * @arg @ref LL_DMA_CHANNEL_3
2507 * @arg @ref LL_DMA_CHANNEL_4
2508 * @arg @ref LL_DMA_CHANNEL_5
2509 * @arg @ref LL_DMA_CHANNEL_6
2510 * @arg @ref LL_DMA_CHANNEL_7
2511 * @arg @ref LL_DMA_CHANNEL_8
2512 * @arg @ref LL_DMA_CHANNEL_9
2513 * @arg @ref LL_DMA_CHANNEL_10
2514 * @arg @ref LL_DMA_CHANNEL_11
2515 * @arg @ref LL_DMA_CHANNEL_12
2516 * @arg @ref LL_DMA_CHANNEL_13
2517 * @arg @ref LL_DMA_CHANNEL_14
2518 * @arg @ref LL_DMA_CHANNEL_15
2519 * @param DestBurstLength Between 1 to 64
2520 * @retval None.
2521 */
LL_DMA_SetDestBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestBurstLength)2522 __STATIC_INLINE void LL_DMA_SetDestBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestBurstLength)
2523 {
2524 uint32_t dma_base_addr = (uint32_t)DMAx;
2525 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DBL_1,
2526 ((DestBurstLength - 1U) << DMA_CTR1_DBL_1_Pos) & DMA_CTR1_DBL_1);
2527 }
2528
2529 /**
2530 * @brief Get destination burst length.
2531 * @note This API is not used for LPDMA channels.
2532 * @rmtoll CTR1 DBL_1 LL_DMA_GetDestBurstLength
2533 * @param DMAx DMAx Instance
2534 * @param Channel This parameter can be one of the following values:
2535 * @arg @ref LL_DMA_CHANNEL_0
2536 * @arg @ref LL_DMA_CHANNEL_1
2537 * @arg @ref LL_DMA_CHANNEL_2
2538 * @arg @ref LL_DMA_CHANNEL_3
2539 * @arg @ref LL_DMA_CHANNEL_4
2540 * @arg @ref LL_DMA_CHANNEL_5
2541 * @arg @ref LL_DMA_CHANNEL_6
2542 * @arg @ref LL_DMA_CHANNEL_7
2543 * @arg @ref LL_DMA_CHANNEL_8
2544 * @arg @ref LL_DMA_CHANNEL_9
2545 * @arg @ref LL_DMA_CHANNEL_10
2546 * @arg @ref LL_DMA_CHANNEL_11
2547 * @arg @ref LL_DMA_CHANNEL_12
2548 * @arg @ref LL_DMA_CHANNEL_13
2549 * @arg @ref LL_DMA_CHANNEL_14
2550 * @arg @ref LL_DMA_CHANNEL_15
2551 * @retval Between 1 to 64.
2552 */
LL_DMA_GetDestBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel)2553 __STATIC_INLINE uint32_t LL_DMA_GetDestBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel)
2554 {
2555 uint32_t dma_base_addr = (uint32_t)DMAx;
2556 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2557 DMA_CTR1_DBL_1) >> DMA_CTR1_DBL_1_Pos) + 1U);
2558 }
2559
2560 /**
2561 * @brief Set destination increment mode.
2562 * @note This API is not used for LPDMA channels.
2563 * @rmtoll CTR1 DINC LL_DMA_SetDestIncMode
2564 * @param DMAx DMAx Instance
2565 * @param Channel This parameter can be one of the following values:
2566 * @arg @ref LL_DMA_CHANNEL_0
2567 * @arg @ref LL_DMA_CHANNEL_1
2568 * @arg @ref LL_DMA_CHANNEL_2
2569 * @arg @ref LL_DMA_CHANNEL_3
2570 * @arg @ref LL_DMA_CHANNEL_4
2571 * @arg @ref LL_DMA_CHANNEL_5
2572 * @arg @ref LL_DMA_CHANNEL_6
2573 * @arg @ref LL_DMA_CHANNEL_7
2574 * @arg @ref LL_DMA_CHANNEL_8
2575 * @arg @ref LL_DMA_CHANNEL_9
2576 * @arg @ref LL_DMA_CHANNEL_10
2577 * @arg @ref LL_DMA_CHANNEL_11
2578 * @arg @ref LL_DMA_CHANNEL_12
2579 * @arg @ref LL_DMA_CHANNEL_13
2580 * @arg @ref LL_DMA_CHANNEL_14
2581 * @arg @ref LL_DMA_CHANNEL_15
2582 * @param DestInc This parameter can be one of the following values:
2583 * @arg @ref LL_DMA_DEST_FIXED
2584 * @arg @ref LL_DMA_DEST_INCREMENT
2585 * @retval None.
2586 */
LL_DMA_SetDestIncMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestInc)2587 __STATIC_INLINE void LL_DMA_SetDestIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestInc)
2588 {
2589 uint32_t dma_base_addr = (uint32_t)DMAx;
2590 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DINC, DestInc);
2591 }
2592
2593 /**
2594 * @brief Get destination increment mode.
2595 * @note This API is used for all available DMA channels.
2596 * @rmtoll CTR1 DINC LL_DMA_GetDestIncMode
2597 * @param DMAx DMAx Instance
2598 * @param Channel This parameter can be one of the following values:
2599 * @arg @ref LL_DMA_CHANNEL_0
2600 * @arg @ref LL_DMA_CHANNEL_1
2601 * @arg @ref LL_DMA_CHANNEL_2
2602 * @arg @ref LL_DMA_CHANNEL_3
2603 * @arg @ref LL_DMA_CHANNEL_4
2604 * @arg @ref LL_DMA_CHANNEL_5
2605 * @arg @ref LL_DMA_CHANNEL_6
2606 * @arg @ref LL_DMA_CHANNEL_7
2607 * @arg @ref LL_DMA_CHANNEL_8
2608 * @arg @ref LL_DMA_CHANNEL_9
2609 * @arg @ref LL_DMA_CHANNEL_10
2610 * @arg @ref LL_DMA_CHANNEL_11
2611 * @arg @ref LL_DMA_CHANNEL_12
2612 * @arg @ref LL_DMA_CHANNEL_13
2613 * @arg @ref LL_DMA_CHANNEL_14
2614 * @arg @ref LL_DMA_CHANNEL_15
2615 * @retval Returned value can be one of the following values:
2616 * @arg @ref LL_DMA_DEST_FIXED
2617 * @arg @ref LL_DMA_DEST_INCREMENT
2618 */
LL_DMA_GetDestIncMode(const DMA_TypeDef * DMAx,uint32_t Channel)2619 __STATIC_INLINE uint32_t LL_DMA_GetDestIncMode(const DMA_TypeDef *DMAx, uint32_t Channel)
2620 {
2621 uint32_t dma_base_addr = (uint32_t)DMAx;
2622 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DINC));
2623 }
2624
2625 /**
2626 * @brief Set destination data width.
2627 * @note This API is used for all available DMA channels.
2628 * @rmtoll CTR1 DDW_LOG2 LL_DMA_SetDestDataWidth
2629 * @param DMAx DMAx Instance
2630 * @param Channel This parameter can be one of the following values:
2631 * @arg @ref LL_DMA_CHANNEL_0
2632 * @arg @ref LL_DMA_CHANNEL_1
2633 * @arg @ref LL_DMA_CHANNEL_2
2634 * @arg @ref LL_DMA_CHANNEL_3
2635 * @arg @ref LL_DMA_CHANNEL_4
2636 * @arg @ref LL_DMA_CHANNEL_5
2637 * @arg @ref LL_DMA_CHANNEL_6
2638 * @arg @ref LL_DMA_CHANNEL_7
2639 * @arg @ref LL_DMA_CHANNEL_8
2640 * @arg @ref LL_DMA_CHANNEL_9
2641 * @arg @ref LL_DMA_CHANNEL_10
2642 * @arg @ref LL_DMA_CHANNEL_11
2643 * @arg @ref LL_DMA_CHANNEL_12
2644 * @arg @ref LL_DMA_CHANNEL_13
2645 * @arg @ref LL_DMA_CHANNEL_14
2646 * @arg @ref LL_DMA_CHANNEL_15
2647 * @param DestDataWidth This parameter can be one of the following values:
2648 * @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE
2649 * @arg @ref LL_DMA_DEST_DATAWIDTH_HALFWORD
2650 * @arg @ref LL_DMA_DEST_DATAWIDTH_WORD
2651 * @retval None.
2652 */
LL_DMA_SetDestDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestDataWidth)2653 __STATIC_INLINE void LL_DMA_SetDestDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestDataWidth)
2654 {
2655 uint32_t dma_base_addr = (uint32_t)DMAx;
2656 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DDW_LOG2,
2657 DestDataWidth);
2658 }
2659
2660 /**
2661 * @brief Get destination data width.
2662 * @note This API is used for all available DMA channels.
2663 * @rmtoll CTR1 DDW_LOG2 LL_DMA_GetDestDataWidth
2664 * @param DMAx DMAx Instance
2665 * @param Channel This parameter can be one of the following values:
2666 * @arg @ref LL_DMA_CHANNEL_0
2667 * @arg @ref LL_DMA_CHANNEL_1
2668 * @arg @ref LL_DMA_CHANNEL_2
2669 * @arg @ref LL_DMA_CHANNEL_3
2670 * @arg @ref LL_DMA_CHANNEL_4
2671 * @arg @ref LL_DMA_CHANNEL_5
2672 * @arg @ref LL_DMA_CHANNEL_6
2673 * @arg @ref LL_DMA_CHANNEL_7
2674 * @arg @ref LL_DMA_CHANNEL_8
2675 * @arg @ref LL_DMA_CHANNEL_9
2676 * @arg @ref LL_DMA_CHANNEL_10
2677 * @arg @ref LL_DMA_CHANNEL_11
2678 * @arg @ref LL_DMA_CHANNEL_12
2679 * @arg @ref LL_DMA_CHANNEL_13
2680 * @arg @ref LL_DMA_CHANNEL_14
2681 * @arg @ref LL_DMA_CHANNEL_15
2682 * @retval Returned value can be one of the following values:
2683 * @arg @ref LL_DMA_DEST_DATAWIDTH_BYTE
2684 * @arg @ref LL_DMA_DEST_DATAWIDTH_HALFWORD
2685 * @arg @ref LL_DMA_DEST_DATAWIDTH_WORD
2686 */
LL_DMA_GetDestDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel)2687 __STATIC_INLINE uint32_t LL_DMA_GetDestDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel)
2688 {
2689 uint32_t dma_base_addr = (uint32_t)DMAx;
2690 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_DDW_LOG2));
2691 }
2692
2693 /**
2694 * @brief Set source allocated port.
2695 * @note This API is not used for LPDMA channels.
2696 * @rmtoll CTR1 SAP LL_DMA_SetSrcAllocatedPort
2697 * @param DMAx DMAx Instance
2698 * @param Channel This parameter can be one of the following values:
2699 * @arg @ref LL_DMA_CHANNEL_0
2700 * @arg @ref LL_DMA_CHANNEL_1
2701 * @arg @ref LL_DMA_CHANNEL_2
2702 * @arg @ref LL_DMA_CHANNEL_3
2703 * @arg @ref LL_DMA_CHANNEL_4
2704 * @arg @ref LL_DMA_CHANNEL_5
2705 * @arg @ref LL_DMA_CHANNEL_6
2706 * @arg @ref LL_DMA_CHANNEL_7
2707 * @arg @ref LL_DMA_CHANNEL_8
2708 * @arg @ref LL_DMA_CHANNEL_9
2709 * @arg @ref LL_DMA_CHANNEL_10
2710 * @arg @ref LL_DMA_CHANNEL_11
2711 * @arg @ref LL_DMA_CHANNEL_12
2712 * @arg @ref LL_DMA_CHANNEL_13
2713 * @arg @ref LL_DMA_CHANNEL_14
2714 * @arg @ref LL_DMA_CHANNEL_15
2715 * @param SrcAllocatedPort This parameter can be one of the following values:
2716 * @arg @ref LL_DMA_SRC_ALLOCATED_PORT0
2717 * @arg @ref LL_DMA_SRC_ALLOCATED_PORT1
2718 * @retval None.
2719 */
LL_DMA_SetSrcAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAllocatedPort)2720 __STATIC_INLINE void LL_DMA_SetSrcAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAllocatedPort)
2721 {
2722 uint32_t dma_base_addr = (uint32_t)DMAx;
2723 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SAP,
2724 SrcAllocatedPort);
2725 }
2726
2727 /**
2728 * @brief Get source allocated port.
2729 * @note This API is not used for LPDMA channels.
2730 * @rmtoll CTR1 SAP LL_DMA_GetSrcAllocatedPort
2731 * @param DMAx DMAx Instance
2732 * @param Channel This parameter can be one of the following values:
2733 * @arg @ref LL_DMA_CHANNEL_0
2734 * @arg @ref LL_DMA_CHANNEL_1
2735 * @arg @ref LL_DMA_CHANNEL_2
2736 * @arg @ref LL_DMA_CHANNEL_3
2737 * @arg @ref LL_DMA_CHANNEL_4
2738 * @arg @ref LL_DMA_CHANNEL_5
2739 * @arg @ref LL_DMA_CHANNEL_6
2740 * @arg @ref LL_DMA_CHANNEL_7
2741 * @arg @ref LL_DMA_CHANNEL_8
2742 * @arg @ref LL_DMA_CHANNEL_9
2743 * @arg @ref LL_DMA_CHANNEL_10
2744 * @arg @ref LL_DMA_CHANNEL_11
2745 * @arg @ref LL_DMA_CHANNEL_12
2746 * @arg @ref LL_DMA_CHANNEL_13
2747 * @arg @ref LL_DMA_CHANNEL_14
2748 * @arg @ref LL_DMA_CHANNEL_15
2749 * @retval Returned value can be one of the following values:
2750 * @arg @ref LL_DMA_SRC_ALLOCATED_PORT0
2751 * @arg @ref LL_DMA_SRC_ALLOCATED_PORT1
2752 */
LL_DMA_GetSrcAllocatedPort(const DMA_TypeDef * DMAx,uint32_t Channel)2753 __STATIC_INLINE uint32_t LL_DMA_GetSrcAllocatedPort(const DMA_TypeDef *DMAx, uint32_t Channel)
2754 {
2755 uint32_t dma_base_addr = (uint32_t)DMAx;
2756 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SAP));
2757 }
2758
2759 /**
2760 * @brief Set data alignment mode.
2761 * @note This API is used for all available DMA channels.
2762 * For LPDMA channels, PAM field is reduced to one bit.
2763 * @rmtoll CTR1 PAM LL_DMA_SetDataAlignment
2764 * @param DMAx DMAx Instance
2765 * @param Channel This parameter can be one of the following values:
2766 * @arg @ref LL_DMA_CHANNEL_0
2767 * @arg @ref LL_DMA_CHANNEL_1
2768 * @arg @ref LL_DMA_CHANNEL_2
2769 * @arg @ref LL_DMA_CHANNEL_3
2770 * @arg @ref LL_DMA_CHANNEL_4
2771 * @arg @ref LL_DMA_CHANNEL_5
2772 * @arg @ref LL_DMA_CHANNEL_6
2773 * @arg @ref LL_DMA_CHANNEL_7
2774 * @arg @ref LL_DMA_CHANNEL_8
2775 * @arg @ref LL_DMA_CHANNEL_9
2776 * @arg @ref LL_DMA_CHANNEL_10
2777 * @arg @ref LL_DMA_CHANNEL_11
2778 * @arg @ref LL_DMA_CHANNEL_12
2779 * @arg @ref LL_DMA_CHANNEL_13
2780 * @arg @ref LL_DMA_CHANNEL_14
2781 * @arg @ref LL_DMA_CHANNEL_15
2782 * @param DataAlignment This parameter can be one of the following values:
2783 * @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD
2784 * @arg @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD
2785 * @arg @ref LL_DMA_DATA_PACK_UNPACK (This value is not allowed for LPDMA channels)
2786 * @retval None.
2787 */
LL_DMA_SetDataAlignment(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DataAlignment)2788 __STATIC_INLINE void LL_DMA_SetDataAlignment(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DataAlignment)
2789 {
2790 uint32_t dma_base_addr = (uint32_t)DMAx;
2791 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_PAM,
2792 DataAlignment);
2793 }
2794
2795 /**
2796 * @brief Get data alignment mode.
2797 * @note This API is used for all available DMA channels.
2798 * For LPDMA channels, PAM field is reduced to one bit.
2799 * @rmtoll CTR1 PAM LL_DMA_GetDataAlignment
2800 * @param DMAx DMAx Instance
2801 * @param Channel This parameter can be one of the following values:
2802 * @arg @ref LL_DMA_CHANNEL_0
2803 * @arg @ref LL_DMA_CHANNEL_1
2804 * @arg @ref LL_DMA_CHANNEL_2
2805 * @arg @ref LL_DMA_CHANNEL_3
2806 * @arg @ref LL_DMA_CHANNEL_4
2807 * @arg @ref LL_DMA_CHANNEL_5
2808 * @arg @ref LL_DMA_CHANNEL_6
2809 * @arg @ref LL_DMA_CHANNEL_7
2810 * @arg @ref LL_DMA_CHANNEL_8
2811 * @arg @ref LL_DMA_CHANNEL_9
2812 * @arg @ref LL_DMA_CHANNEL_10
2813 * @arg @ref LL_DMA_CHANNEL_11
2814 * @arg @ref LL_DMA_CHANNEL_12
2815 * @arg @ref LL_DMA_CHANNEL_13
2816 * @arg @ref LL_DMA_CHANNEL_14
2817 * @arg @ref LL_DMA_CHANNEL_15
2818 * @retval Returned value can be one of the following values:
2819 * @arg @ref LL_DMA_DATA_ALIGN_ZEROPADD
2820 * @arg @ref LL_DMA_DATA_ALIGN_SIGNEXTPADD
2821 * @arg @ref LL_DMA_DATA_PACK_UNPACK (This value is not allowed for LPDMA channels)
2822 */
LL_DMA_GetDataAlignment(const DMA_TypeDef * DMAx,uint32_t Channel)2823 __STATIC_INLINE uint32_t LL_DMA_GetDataAlignment(const DMA_TypeDef *DMAx, uint32_t Channel)
2824 {
2825 uint32_t dma_base_addr = (uint32_t)DMAx;
2826 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_PAM));
2827 }
2828
2829 /**
2830 * @brief Set source burst length.
2831 * @note This API is not used for LPDMA channels.
2832 * @rmtoll CTR1 SBL_1 LL_DMA_SetSrcBurstLength
2833 * @param DMAx DMAx Instance
2834 * @param Channel This parameter can be one of the following values:
2835 * @arg @ref LL_DMA_CHANNEL_0
2836 * @arg @ref LL_DMA_CHANNEL_1
2837 * @arg @ref LL_DMA_CHANNEL_2
2838 * @arg @ref LL_DMA_CHANNEL_3
2839 * @arg @ref LL_DMA_CHANNEL_4
2840 * @arg @ref LL_DMA_CHANNEL_5
2841 * @arg @ref LL_DMA_CHANNEL_6
2842 * @arg @ref LL_DMA_CHANNEL_7
2843 * @arg @ref LL_DMA_CHANNEL_8
2844 * @arg @ref LL_DMA_CHANNEL_9
2845 * @arg @ref LL_DMA_CHANNEL_10
2846 * @arg @ref LL_DMA_CHANNEL_11
2847 * @arg @ref LL_DMA_CHANNEL_12
2848 * @arg @ref LL_DMA_CHANNEL_13
2849 * @arg @ref LL_DMA_CHANNEL_14
2850 * @arg @ref LL_DMA_CHANNEL_15
2851 * @param SrcBurstLength Between 1 to 64
2852 * @retval None.
2853 */
LL_DMA_SetSrcBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcBurstLength)2854 __STATIC_INLINE void LL_DMA_SetSrcBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcBurstLength)
2855 {
2856 uint32_t dma_base_addr = (uint32_t)DMAx;
2857 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SBL_1,
2858 ((SrcBurstLength - 1U) << DMA_CTR1_SBL_1_Pos) & DMA_CTR1_SBL_1);
2859 }
2860
2861 /**
2862 * @brief Get source burst length.
2863 * @note This API is not used for LPDMA channels.
2864 * @rmtoll CTR1 SBL_1 LL_DMA_GetSrcBurstLength
2865 * @param DMAx DMAx Instance
2866 * @param Channel This parameter can be one of the following values:
2867 * @arg @ref LL_DMA_CHANNEL_0
2868 * @arg @ref LL_DMA_CHANNEL_1
2869 * @arg @ref LL_DMA_CHANNEL_2
2870 * @arg @ref LL_DMA_CHANNEL_3
2871 * @arg @ref LL_DMA_CHANNEL_4
2872 * @arg @ref LL_DMA_CHANNEL_5
2873 * @arg @ref LL_DMA_CHANNEL_6
2874 * @arg @ref LL_DMA_CHANNEL_7
2875 * @arg @ref LL_DMA_CHANNEL_8
2876 * @arg @ref LL_DMA_CHANNEL_9
2877 * @arg @ref LL_DMA_CHANNEL_10
2878 * @arg @ref LL_DMA_CHANNEL_11
2879 * @arg @ref LL_DMA_CHANNEL_12
2880 * @arg @ref LL_DMA_CHANNEL_13
2881 * @arg @ref LL_DMA_CHANNEL_14
2882 * @arg @ref LL_DMA_CHANNEL_15
2883 * @retval Between 1 to 64
2884 * @retval None.
2885 */
LL_DMA_GetSrcBurstLength(const DMA_TypeDef * DMAx,uint32_t Channel)2886 __STATIC_INLINE uint32_t LL_DMA_GetSrcBurstLength(const DMA_TypeDef *DMAx, uint32_t Channel)
2887 {
2888 uint32_t dma_base_addr = (uint32_t)DMAx;
2889 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1,
2890 DMA_CTR1_SBL_1) >> DMA_CTR1_SBL_1_Pos) + 1U);
2891 }
2892
2893 /**
2894 * @brief Set source increment mode.
2895 * @note This API is used for all available DMA channels.
2896 * @rmtoll CTR1 SINC LL_DMA_SetSrcIncMode
2897 * @param DMAx DMAx Instance
2898 * @param Channel This parameter can be one of the following values:
2899 * @arg @ref LL_DMA_CHANNEL_0
2900 * @arg @ref LL_DMA_CHANNEL_1
2901 * @arg @ref LL_DMA_CHANNEL_2
2902 * @arg @ref LL_DMA_CHANNEL_3
2903 * @arg @ref LL_DMA_CHANNEL_4
2904 * @arg @ref LL_DMA_CHANNEL_5
2905 * @arg @ref LL_DMA_CHANNEL_6
2906 * @arg @ref LL_DMA_CHANNEL_7
2907 * @arg @ref LL_DMA_CHANNEL_8
2908 * @arg @ref LL_DMA_CHANNEL_9
2909 * @arg @ref LL_DMA_CHANNEL_10
2910 * @arg @ref LL_DMA_CHANNEL_11
2911 * @arg @ref LL_DMA_CHANNEL_12
2912 * @arg @ref LL_DMA_CHANNEL_13
2913 * @arg @ref LL_DMA_CHANNEL_14
2914 * @arg @ref LL_DMA_CHANNEL_15
2915 * @param SrcInc This parameter can be one of the following values:
2916 * @arg @ref LL_DMA_SRC_FIXED
2917 * @arg @ref LL_DMA_SRC_INCREMENT
2918 * @retval None.
2919 */
LL_DMA_SetSrcIncMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcInc)2920 __STATIC_INLINE void LL_DMA_SetSrcIncMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcInc)
2921 {
2922 uint32_t dma_base_addr = (uint32_t)DMAx;
2923 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SINC, SrcInc);
2924 }
2925
2926 /**
2927 * @brief Get source increment mode.
2928 * @note This API is used for all available DMA channels.
2929 * @rmtoll CTR1 SINC LL_DMA_GetSrcIncMode
2930 * @param DMAx DMAx Instance
2931 * @param Channel This parameter can be one of the following values:
2932 * @arg @ref LL_DMA_CHANNEL_0
2933 * @arg @ref LL_DMA_CHANNEL_1
2934 * @arg @ref LL_DMA_CHANNEL_2
2935 * @arg @ref LL_DMA_CHANNEL_3
2936 * @arg @ref LL_DMA_CHANNEL_4
2937 * @arg @ref LL_DMA_CHANNEL_5
2938 * @arg @ref LL_DMA_CHANNEL_6
2939 * @arg @ref LL_DMA_CHANNEL_7
2940 * @arg @ref LL_DMA_CHANNEL_8
2941 * @arg @ref LL_DMA_CHANNEL_9
2942 * @arg @ref LL_DMA_CHANNEL_10
2943 * @arg @ref LL_DMA_CHANNEL_11
2944 * @arg @ref LL_DMA_CHANNEL_12
2945 * @arg @ref LL_DMA_CHANNEL_13
2946 * @arg @ref LL_DMA_CHANNEL_14
2947 * @arg @ref LL_DMA_CHANNEL_15
2948 * @retval Returned value can be one of the following values:
2949 * @arg @ref LL_DMA_SRC_FIXED
2950 * @arg @ref LL_DMA_SRC_INCREMENT
2951 */
LL_DMA_GetSrcIncMode(const DMA_TypeDef * DMAx,uint32_t Channel)2952 __STATIC_INLINE uint32_t LL_DMA_GetSrcIncMode(const DMA_TypeDef *DMAx, uint32_t Channel)
2953 {
2954 uint32_t dma_base_addr = (uint32_t)DMAx;
2955 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SINC));
2956 }
2957
2958 /**
2959 * @brief Set source data width.
2960 * @note This API is used for all available DMA channels.
2961 * @rmtoll CTR1 SDW_LOG2 LL_DMA_SetSrcDataWidth
2962 * @param DMAx DMAx Instance
2963 * @param Channel This parameter can be one of the following values:
2964 * @arg @ref LL_DMA_CHANNEL_0
2965 * @arg @ref LL_DMA_CHANNEL_1
2966 * @arg @ref LL_DMA_CHANNEL_2
2967 * @arg @ref LL_DMA_CHANNEL_3
2968 * @arg @ref LL_DMA_CHANNEL_4
2969 * @arg @ref LL_DMA_CHANNEL_5
2970 * @arg @ref LL_DMA_CHANNEL_6
2971 * @arg @ref LL_DMA_CHANNEL_7
2972 * @arg @ref LL_DMA_CHANNEL_8
2973 * @arg @ref LL_DMA_CHANNEL_9
2974 * @arg @ref LL_DMA_CHANNEL_10
2975 * @arg @ref LL_DMA_CHANNEL_11
2976 * @arg @ref LL_DMA_CHANNEL_12
2977 * @arg @ref LL_DMA_CHANNEL_13
2978 * @arg @ref LL_DMA_CHANNEL_14
2979 * @arg @ref LL_DMA_CHANNEL_15
2980 * @param SrcDataWidth This parameter can be one of the following values:
2981 * @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE
2982 * @arg @ref LL_DMA_SRC_DATAWIDTH_HALFWORD
2983 * @arg @ref LL_DMA_SRC_DATAWIDTH_WORD
2984 * @retval None.
2985 */
LL_DMA_SetSrcDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcDataWidth)2986 __STATIC_INLINE void LL_DMA_SetSrcDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcDataWidth)
2987 {
2988 uint32_t dma_base_addr = (uint32_t)DMAx;
2989 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SDW_LOG2,
2990 SrcDataWidth);
2991 }
2992
2993 /**
2994 * @brief Get Source Data width.
2995 * @note This API is used for all available DMA channels.
2996 * @rmtoll CTR1 SDW_LOG2 LL_DMA_GetSrcDataWidth
2997 * @param DMAx DMAx Instance
2998 * @param Channel This parameter can be one of the following values:
2999 * @arg @ref LL_DMA_CHANNEL_0
3000 * @arg @ref LL_DMA_CHANNEL_1
3001 * @arg @ref LL_DMA_CHANNEL_2
3002 * @arg @ref LL_DMA_CHANNEL_3
3003 * @arg @ref LL_DMA_CHANNEL_4
3004 * @arg @ref LL_DMA_CHANNEL_5
3005 * @arg @ref LL_DMA_CHANNEL_6
3006 * @arg @ref LL_DMA_CHANNEL_7
3007 * @arg @ref LL_DMA_CHANNEL_8
3008 * @arg @ref LL_DMA_CHANNEL_9
3009 * @arg @ref LL_DMA_CHANNEL_10
3010 * @arg @ref LL_DMA_CHANNEL_11
3011 * @arg @ref LL_DMA_CHANNEL_12
3012 * @arg @ref LL_DMA_CHANNEL_13
3013 * @arg @ref LL_DMA_CHANNEL_14
3014 * @arg @ref LL_DMA_CHANNEL_15
3015 * @retval Returned value can be one of the following values:
3016 * @arg @ref LL_DMA_SRC_DATAWIDTH_BYTE
3017 * @arg @ref LL_DMA_SRC_DATAWIDTH_HALFWORD
3018 * @arg @ref LL_DMA_SRC_DATAWIDTH_WORD
3019 */
LL_DMA_GetSrcDataWidth(const DMA_TypeDef * DMAx,uint32_t Channel)3020 __STATIC_INLINE uint32_t LL_DMA_GetSrcDataWidth(const DMA_TypeDef *DMAx, uint32_t Channel)
3021 {
3022 uint32_t dma_base_addr = (uint32_t)DMAx;
3023 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR1, DMA_CTR1_SDW_LOG2));
3024 }
3025
3026 /**
3027 * @brief Configure channel transfer.
3028 * @note This API is used for all available DMA channels.
3029 * @rmtoll CTR2 TCEM LL_DMA_ConfigChannelTransfer\n
3030 * CTR2 TRIGPOL LL_DMA_ConfigChannelTransfer\n
3031 * CTR2 TRIGM LL_DMA_ConfigChannelTransfer\n
3032 * CTR2 BREQ LL_DMA_ConfigChannelTransfer\n
3033 * CTR2 DREQ LL_DMA_ConfigChannelTransfer\n
3034 * CTR2 SWREQ LL_DMA_ConfigChannelTransfer
3035 * @param DMAx DMAx Instance
3036 * @param Channel This parameter can be one of the following values:
3037 * @arg @ref LL_DMA_CHANNEL_0
3038 * @arg @ref LL_DMA_CHANNEL_1
3039 * @arg @ref LL_DMA_CHANNEL_2
3040 * @arg @ref LL_DMA_CHANNEL_3
3041 * @arg @ref LL_DMA_CHANNEL_4
3042 * @arg @ref LL_DMA_CHANNEL_5
3043 * @arg @ref LL_DMA_CHANNEL_6
3044 * @arg @ref LL_DMA_CHANNEL_7
3045 * @arg @ref LL_DMA_CHANNEL_8
3046 * @arg @ref LL_DMA_CHANNEL_9
3047 * @arg @ref LL_DMA_CHANNEL_10
3048 * @arg @ref LL_DMA_CHANNEL_11
3049 * @arg @ref LL_DMA_CHANNEL_12
3050 * @arg @ref LL_DMA_CHANNEL_13
3051 * @arg @ref LL_DMA_CHANNEL_14
3052 * @arg @ref LL_DMA_CHANNEL_15
3053 * @param Configuration This parameter must be a combination of all the following values:
3054 * @arg @ref LL_DMA_TCEM_BLK_TRANSFER or @ref LL_DMA_TCEM_RPT_BLK_TRANSFER or
3055 * @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER or @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
3056 * @arg @ref LL_DMA_HWREQUEST_SINGLEBURST or @ref LL_DMA_HWREQUEST_BLK
3057 * @arg @ref LL_DMA_TRIG_POLARITY_MASKED or @ref LL_DMA_TRIG_POLARITY_RISING or
3058 * @ref LL_DMA_TRIG_POLARITY_FALLING
3059 * @arg @ref LL_DMA_TRIGM_BLK_TRANSFER or @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER or
3060 * @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER or @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
3061 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or
3062 * @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
3063 *@retval None.
3064 */
LL_DMA_ConfigChannelTransfer(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)3065 __STATIC_INLINE void LL_DMA_ConfigChannelTransfer(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
3066 {
3067 uint32_t dma_base_addr = (uint32_t)DMAx;
3068 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
3069 (DMA_CTR2_TCEM | DMA_CTR2_TRIGPOL | DMA_CTR2_TRIGM | DMA_CTR2_DREQ | DMA_CTR2_SWREQ | DMA_CTR2_BREQ),
3070 Configuration);
3071 }
3072
3073 /**
3074 * @brief Set transfer event mode.
3075 * @note This API is used for all available DMA channels.
3076 * @rmtoll CTR2 TCEM LL_DMA_SetTransferEventMode
3077 * @param DMAx DMAx Instance
3078 * @param Channel This parameter can be one of the following values:
3079 * @arg @ref LL_DMA_CHANNEL_0
3080 * @arg @ref LL_DMA_CHANNEL_1
3081 * @arg @ref LL_DMA_CHANNEL_2
3082 * @arg @ref LL_DMA_CHANNEL_3
3083 * @arg @ref LL_DMA_CHANNEL_4
3084 * @arg @ref LL_DMA_CHANNEL_5
3085 * @arg @ref LL_DMA_CHANNEL_6
3086 * @arg @ref LL_DMA_CHANNEL_7
3087 * @arg @ref LL_DMA_CHANNEL_8
3088 * @arg @ref LL_DMA_CHANNEL_9
3089 * @arg @ref LL_DMA_CHANNEL_10
3090 * @arg @ref LL_DMA_CHANNEL_11
3091 * @arg @ref LL_DMA_CHANNEL_12
3092 * @arg @ref LL_DMA_CHANNEL_13
3093 * @arg @ref LL_DMA_CHANNEL_14
3094 * @arg @ref LL_DMA_CHANNEL_15
3095 * @param TransferEventMode This parameter can be one of the following values:
3096 * @arg @ref LL_DMA_TCEM_BLK_TRANSFER
3097 * @arg @ref LL_DMA_TCEM_RPT_BLK_TRANSFER
3098 * @arg @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER
3099 * @arg @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
3100 * @retval None.
3101 */
LL_DMA_SetTransferEventMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t TransferEventMode)3102 __STATIC_INLINE void LL_DMA_SetTransferEventMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TransferEventMode)
3103 {
3104 uint32_t dma_base_addr = (uint32_t)DMAx;
3105 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TCEM,
3106 TransferEventMode);
3107 }
3108
3109 /**
3110 * @brief Get transfer event mode.
3111 * @note This API is used for all available DMA channels.
3112 * @rmtoll CTR2 TCEM LL_DMA_GetTransferEventMode
3113 * @param DMAx DMAx Instance
3114 * @param Channel This parameter can be one of the following values:
3115 * @arg @ref LL_DMA_CHANNEL_0
3116 * @arg @ref LL_DMA_CHANNEL_1
3117 * @arg @ref LL_DMA_CHANNEL_2
3118 * @arg @ref LL_DMA_CHANNEL_3
3119 * @arg @ref LL_DMA_CHANNEL_4
3120 * @arg @ref LL_DMA_CHANNEL_5
3121 * @arg @ref LL_DMA_CHANNEL_6
3122 * @arg @ref LL_DMA_CHANNEL_7
3123 * @arg @ref LL_DMA_CHANNEL_8
3124 * @arg @ref LL_DMA_CHANNEL_9
3125 * @arg @ref LL_DMA_CHANNEL_10
3126 * @arg @ref LL_DMA_CHANNEL_11
3127 * @arg @ref LL_DMA_CHANNEL_12
3128 * @arg @ref LL_DMA_CHANNEL_13
3129 * @arg @ref LL_DMA_CHANNEL_14
3130 * @arg @ref LL_DMA_CHANNEL_15
3131 * @retval Returned value can be one of the following values:
3132 * @arg @ref LL_DMA_TCEM_BLK_TRANSFER
3133 * @arg @ref LL_DMA_TCEM_RPT_BLK_TRANSFER
3134 * @arg @ref LL_DMA_TCEM_EACH_LLITEM_TRANSFER
3135 * @arg @ref LL_DMA_TCEM_LAST_LLITEM_TRANSFER
3136 */
LL_DMA_GetTransferEventMode(const DMA_TypeDef * DMAx,uint32_t Channel)3137 __STATIC_INLINE uint32_t LL_DMA_GetTransferEventMode(const DMA_TypeDef *DMAx, uint32_t Channel)
3138 {
3139 uint32_t dma_base_addr = (uint32_t)DMAx;
3140 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TCEM));
3141 }
3142
3143 /**
3144 * @brief Set trigger polarity.
3145 * @note This API is used for all available DMA channels.
3146 * @rmtoll CTR2 TRIGPOL LL_DMA_SetTriggerPolarity
3147 * @param DMAx DMAx Instance
3148 * @param Channel This parameter can be one of the following values:
3149 * @arg @ref LL_DMA_CHANNEL_0
3150 * @arg @ref LL_DMA_CHANNEL_1
3151 * @arg @ref LL_DMA_CHANNEL_2
3152 * @arg @ref LL_DMA_CHANNEL_3
3153 * @arg @ref LL_DMA_CHANNEL_4
3154 * @arg @ref LL_DMA_CHANNEL_5
3155 * @arg @ref LL_DMA_CHANNEL_6
3156 * @arg @ref LL_DMA_CHANNEL_7
3157 * @arg @ref LL_DMA_CHANNEL_8
3158 * @arg @ref LL_DMA_CHANNEL_9
3159 * @arg @ref LL_DMA_CHANNEL_10
3160 * @arg @ref LL_DMA_CHANNEL_11
3161 * @arg @ref LL_DMA_CHANNEL_12
3162 * @arg @ref LL_DMA_CHANNEL_13
3163 * @arg @ref LL_DMA_CHANNEL_14
3164 * @arg @ref LL_DMA_CHANNEL_15
3165 * @param TriggerPolarity This parameter can be one of the following values:
3166 * @arg @ref LL_DMA_TRIG_POLARITY_MASKED
3167 * @arg @ref LL_DMA_TRIG_POLARITY_RISING
3168 * @arg @ref LL_DMA_TRIG_POLARITY_FALLING
3169 * @retval None.
3170 */
LL_DMA_SetTriggerPolarity(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t TriggerPolarity)3171 __STATIC_INLINE void LL_DMA_SetTriggerPolarity(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TriggerPolarity)
3172 {
3173 uint32_t dma_base_addr = (uint32_t)DMAx;
3174 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGPOL,
3175 TriggerPolarity);
3176 }
3177
3178 /**
3179 * @brief Get trigger polarity.
3180 * @note This API is used for all available DMA channels.
3181 * @rmtoll CTR2 TRIGPOL LL_DMA_GetTriggerPolarity
3182 * @param DMAx DMAx Instance
3183 * @param Channel This parameter can be one of the following values:
3184 * @arg @ref LL_DMA_CHANNEL_0
3185 * @arg @ref LL_DMA_CHANNEL_1
3186 * @arg @ref LL_DMA_CHANNEL_2
3187 * @arg @ref LL_DMA_CHANNEL_3
3188 * @arg @ref LL_DMA_CHANNEL_4
3189 * @arg @ref LL_DMA_CHANNEL_5
3190 * @arg @ref LL_DMA_CHANNEL_6
3191 * @arg @ref LL_DMA_CHANNEL_7
3192 * @arg @ref LL_DMA_CHANNEL_8
3193 * @arg @ref LL_DMA_CHANNEL_9
3194 * @arg @ref LL_DMA_CHANNEL_10
3195 * @arg @ref LL_DMA_CHANNEL_11
3196 * @arg @ref LL_DMA_CHANNEL_12
3197 * @arg @ref LL_DMA_CHANNEL_13
3198 * @arg @ref LL_DMA_CHANNEL_14
3199 * @arg @ref LL_DMA_CHANNEL_15
3200 * @retval Returned value can be one of the following values:
3201 * @arg @ref LL_DMA_TRIG_POLARITY_MASKED
3202 * @arg @ref LL_DMA_TRIG_POLARITY_RISING
3203 * @arg @ref LL_DMA_TRIG_POLARITY_FALLING
3204 */
LL_DMA_GetTriggerPolarity(const DMA_TypeDef * DMAx,uint32_t Channel)3205 __STATIC_INLINE uint32_t LL_DMA_GetTriggerPolarity(const DMA_TypeDef *DMAx, uint32_t Channel)
3206 {
3207 uint32_t dma_base_addr = (uint32_t)DMAx;
3208 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGPOL));
3209 }
3210
3211 /**
3212 * @brief Set trigger Mode.
3213 * @note This API is used for all available DMA channels.
3214 * @rmtoll CTR2 TRIGM LL_DMA_SetTriggerMode
3215 * @param DMAx DMAx Instance
3216 * @param Channel This parameter can be one of the following values:
3217 * @arg @ref LL_DMA_CHANNEL_0
3218 * @arg @ref LL_DMA_CHANNEL_1
3219 * @arg @ref LL_DMA_CHANNEL_2
3220 * @arg @ref LL_DMA_CHANNEL_3
3221 * @arg @ref LL_DMA_CHANNEL_4
3222 * @arg @ref LL_DMA_CHANNEL_5
3223 * @arg @ref LL_DMA_CHANNEL_6
3224 * @arg @ref LL_DMA_CHANNEL_7
3225 * @arg @ref LL_DMA_CHANNEL_8
3226 * @arg @ref LL_DMA_CHANNEL_9
3227 * @arg @ref LL_DMA_CHANNEL_10
3228 * @arg @ref LL_DMA_CHANNEL_11
3229 * @arg @ref LL_DMA_CHANNEL_12
3230 * @arg @ref LL_DMA_CHANNEL_13
3231 * @arg @ref LL_DMA_CHANNEL_14
3232 * @arg @ref LL_DMA_CHANNEL_15
3233 * @param TriggerMode This parameter can be one of the following values:
3234 * @arg @ref LL_DMA_TRIGM_BLK_TRANSFER
3235 * @arg @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER (This value is allowed only for 2D addressing channels)
3236 * @arg @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER
3237 * @arg @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
3238 * @retval None.
3239 */
LL_DMA_SetTriggerMode(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t TriggerMode)3240 __STATIC_INLINE void LL_DMA_SetTriggerMode(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t TriggerMode)
3241 {
3242 uint32_t dma_base_addr = (uint32_t)DMAx;
3243 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGM,
3244 TriggerMode);
3245 }
3246
3247 /**
3248 * @brief Get trigger Mode.
3249 * @note This API is used for all available DMA channels.
3250 * @rmtoll CTR2 TRIGM LL_DMA_GetTriggerMode
3251 * @param DMAx DMAx Instance
3252 * @param Channel This parameter can be one of the following values:
3253 * @arg @ref LL_DMA_CHANNEL_0
3254 * @arg @ref LL_DMA_CHANNEL_1
3255 * @arg @ref LL_DMA_CHANNEL_2
3256 * @arg @ref LL_DMA_CHANNEL_3
3257 * @arg @ref LL_DMA_CHANNEL_4
3258 * @arg @ref LL_DMA_CHANNEL_5
3259 * @arg @ref LL_DMA_CHANNEL_6
3260 * @arg @ref LL_DMA_CHANNEL_7
3261 * @arg @ref LL_DMA_CHANNEL_8
3262 * @arg @ref LL_DMA_CHANNEL_9
3263 * @arg @ref LL_DMA_CHANNEL_10
3264 * @arg @ref LL_DMA_CHANNEL_11
3265 * @arg @ref LL_DMA_CHANNEL_12
3266 * @arg @ref LL_DMA_CHANNEL_13
3267 * @arg @ref LL_DMA_CHANNEL_14
3268 * @arg @ref LL_DMA_CHANNEL_15
3269 * @retval Returned value can be one of the following values:
3270 * @arg @ref LL_DMA_TRIGM_BLK_TRANSFER
3271 * @arg @ref LL_DMA_TRIGM_RPT_BLK_TRANSFER (This value is allowed only for 2D addressing channels)
3272 * @arg @ref LL_DMA_TRIGM_LLI_LINK_TRANSFER
3273 * @arg @ref LL_DMA_TRIGM_SINGLBURST_TRANSFER
3274 */
LL_DMA_GetTriggerMode(const DMA_TypeDef * DMAx,uint32_t Channel)3275 __STATIC_INLINE uint32_t LL_DMA_GetTriggerMode(const DMA_TypeDef *DMAx, uint32_t Channel)
3276 {
3277 uint32_t dma_base_addr = (uint32_t)DMAx;
3278 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGM));
3279 }
3280
3281 /**
3282 * @brief Set destination hardware and software transfer request.
3283 * @note This API is used for all available DMA channels.
3284 * @rmtoll CTR2 DREQ LL_DMA_SetDataTransferDirection\n
3285 * @rmtoll CTR2 SWREQ LL_DMA_SetDataTransferDirection
3286 * @param DMAx DMAx Instance
3287 * @param Channel This parameter can be one of the following values:
3288 * @arg @ref LL_DMA_CHANNEL_0
3289 * @arg @ref LL_DMA_CHANNEL_1
3290 * @arg @ref LL_DMA_CHANNEL_2
3291 * @arg @ref LL_DMA_CHANNEL_3
3292 * @arg @ref LL_DMA_CHANNEL_4
3293 * @arg @ref LL_DMA_CHANNEL_5
3294 * @arg @ref LL_DMA_CHANNEL_6
3295 * @arg @ref LL_DMA_CHANNEL_7
3296 * @arg @ref LL_DMA_CHANNEL_8
3297 * @arg @ref LL_DMA_CHANNEL_9
3298 * @arg @ref LL_DMA_CHANNEL_10
3299 * @arg @ref LL_DMA_CHANNEL_11
3300 * @arg @ref LL_DMA_CHANNEL_12
3301 * @arg @ref LL_DMA_CHANNEL_13
3302 * @arg @ref LL_DMA_CHANNEL_14
3303 * @arg @ref LL_DMA_CHANNEL_15
3304 * @param Direction This parameter can be one of the following values:
3305 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
3306 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH (This value is not allowed for LPDMA channels)
3307 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY (This value is not allowed for LPDMA channels)
3308 * @retval None.
3309 */
LL_DMA_SetDataTransferDirection(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Direction)3310 __STATIC_INLINE void LL_DMA_SetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction)
3311 {
3312 uint32_t dma_base_addr = (uint32_t)DMAx;
3313 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
3314 DMA_CTR2_DREQ | DMA_CTR2_SWREQ, Direction);
3315 }
3316
3317 /**
3318 * @brief Get destination hardware and software transfer request.
3319 * @note This API is used for all available DMA channels.
3320 * For LPDMA channels, DREQ fields programming is discarded.
3321 * @rmtoll CTR2 DREQ LL_DMA_GetDataTransferDirection\n
3322 * @rmtoll CTR2 SWREQ LL_DMA_GetDataTransferDirection
3323 * @param DMAx DMAx Instance
3324 * @param Channel This parameter can be one of the following values:
3325 * @arg @ref LL_DMA_CHANNEL_0
3326 * @arg @ref LL_DMA_CHANNEL_1
3327 * @arg @ref LL_DMA_CHANNEL_2
3328 * @arg @ref LL_DMA_CHANNEL_3
3329 * @arg @ref LL_DMA_CHANNEL_4
3330 * @arg @ref LL_DMA_CHANNEL_5
3331 * @arg @ref LL_DMA_CHANNEL_6
3332 * @arg @ref LL_DMA_CHANNEL_7
3333 * @arg @ref LL_DMA_CHANNEL_8
3334 * @arg @ref LL_DMA_CHANNEL_9
3335 * @arg @ref LL_DMA_CHANNEL_10
3336 * @arg @ref LL_DMA_CHANNEL_11
3337 * @arg @ref LL_DMA_CHANNEL_12
3338 * @arg @ref LL_DMA_CHANNEL_13
3339 * @arg @ref LL_DMA_CHANNEL_14
3340 * @arg @ref LL_DMA_CHANNEL_15
3341 * @retval Returned value can be one of the following values:
3342 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
3343 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH (This value is not allowed for LPDMA channels)
3344 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY (This value is not allowed for LPDMA channels)
3345 */
LL_DMA_GetDataTransferDirection(const DMA_TypeDef * DMAx,uint32_t Channel)3346 __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(const DMA_TypeDef *DMAx, uint32_t Channel)
3347 {
3348 uint32_t dma_base_addr = (uint32_t)DMAx;
3349 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
3350 DMA_CTR2_DREQ | DMA_CTR2_SWREQ));
3351 }
3352
3353 /**
3354 * @brief Set block hardware request.
3355 * @note This API is used for all available DMA channels.
3356 * @rmtoll CTR2 BREQ LL_DMA_SetBlkHWRequest\n
3357 * @param DMAx DMAx Instance
3358 * @param Channel This parameter can be one of the following values:
3359 * @arg @ref LL_DMA_CHANNEL_0
3360 * @arg @ref LL_DMA_CHANNEL_1
3361 * @arg @ref LL_DMA_CHANNEL_2
3362 * @arg @ref LL_DMA_CHANNEL_3
3363 * @arg @ref LL_DMA_CHANNEL_4
3364 * @arg @ref LL_DMA_CHANNEL_5
3365 * @arg @ref LL_DMA_CHANNEL_6
3366 * @arg @ref LL_DMA_CHANNEL_7
3367 * @arg @ref LL_DMA_CHANNEL_8
3368 * @arg @ref LL_DMA_CHANNEL_9
3369 * @arg @ref LL_DMA_CHANNEL_10
3370 * @arg @ref LL_DMA_CHANNEL_11
3371 * @arg @ref LL_DMA_CHANNEL_12
3372 * @arg @ref LL_DMA_CHANNEL_13
3373 * @arg @ref LL_DMA_CHANNEL_14
3374 * @arg @ref LL_DMA_CHANNEL_15
3375 * @param BlkHWRequest This parameter can be one of the following values:
3376 * @arg @ref LL_DMA_HWREQUEST_SINGLEBURST
3377 * @arg @ref LL_DMA_HWREQUEST_BLK
3378 * @retval None.
3379 */
LL_DMA_SetBlkHWRequest(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkHWRequest)3380 __STATIC_INLINE void LL_DMA_SetBlkHWRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkHWRequest)
3381 {
3382 uint32_t dma_base_addr = (uint32_t)DMAx;
3383 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_BREQ,
3384 BlkHWRequest);
3385 }
3386
3387 /**
3388 * @brief Get block hardware request.
3389 * @note This API is used for all available DMA channels.
3390 * @rmtoll CTR2 BREQ LL_DMA_GetBlkHWRequest\n
3391 * @param DMAx DMAx Instance
3392 * @param Channel This parameter can be one of the following values:
3393 * @arg @ref LL_DMA_CHANNEL_0
3394 * @arg @ref LL_DMA_CHANNEL_1
3395 * @arg @ref LL_DMA_CHANNEL_2
3396 * @arg @ref LL_DMA_CHANNEL_3
3397 * @arg @ref LL_DMA_CHANNEL_4
3398 * @arg @ref LL_DMA_CHANNEL_5
3399 * @arg @ref LL_DMA_CHANNEL_6
3400 * @arg @ref LL_DMA_CHANNEL_7
3401 * @arg @ref LL_DMA_CHANNEL_8
3402 * @arg @ref LL_DMA_CHANNEL_9
3403 * @arg @ref LL_DMA_CHANNEL_10
3404 * @arg @ref LL_DMA_CHANNEL_11
3405 * @arg @ref LL_DMA_CHANNEL_12
3406 * @arg @ref LL_DMA_CHANNEL_13
3407 * @arg @ref LL_DMA_CHANNEL_14
3408 * @arg @ref LL_DMA_CHANNEL_15
3409 * @retval Returned value can be one of the following values:
3410 * @arg @ref LL_DMA_HWREQUEST_SINGLEBURST
3411 * @arg @ref LL_DMA_HWREQUEST_BLK
3412 */
LL_DMA_GetBlkHWRequest(const DMA_TypeDef * DMAx,uint32_t Channel)3413 __STATIC_INLINE uint32_t LL_DMA_GetBlkHWRequest(const DMA_TypeDef *DMAx, uint32_t Channel)
3414 {
3415 uint32_t dma_base_addr = (uint32_t)DMAx;
3416 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_BREQ));
3417 }
3418
3419 /**
3420 * @brief Set hardware request.
3421 * @note This API is used for all available DMA channels.
3422 * For LPDMA channels, REQSEL fields is reduced to 5 bits.
3423 * @rmtoll CTR2 REQSEL LL_DMA_SetPeriphRequest
3424 * @param DMAx DMAx Instance
3425 * @param Channel This parameter can be one of the following values:
3426 * @arg @ref LL_DMA_CHANNEL_0
3427 * @arg @ref LL_DMA_CHANNEL_1
3428 * @arg @ref LL_DMA_CHANNEL_2
3429 * @arg @ref LL_DMA_CHANNEL_3
3430 * @arg @ref LL_DMA_CHANNEL_4
3431 * @arg @ref LL_DMA_CHANNEL_5
3432 * @arg @ref LL_DMA_CHANNEL_6
3433 * @arg @ref LL_DMA_CHANNEL_7
3434 * @arg @ref LL_DMA_CHANNEL_8
3435 * @arg @ref LL_DMA_CHANNEL_9
3436 * @arg @ref LL_DMA_CHANNEL_10
3437 * @arg @ref LL_DMA_CHANNEL_11
3438 * @arg @ref LL_DMA_CHANNEL_12
3439 * @arg @ref LL_DMA_CHANNEL_13
3440 * @arg @ref LL_DMA_CHANNEL_14
3441 * @arg @ref LL_DMA_CHANNEL_15
3442 * @param Request This parameter can be one of the following values:
3443 * @arg @ref LL_GPDMA1_REQUEST_ADC1
3444 * @arg @ref LL_GPDMA1_REQUEST_ADC4
3445 * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH1
3446 * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH2
3447 * @arg @ref LL_GPDMA1_REQUEST_TIM6_UP
3448 * @arg @ref LL_GPDMA1_REQUEST_TIM7_UP
3449 * @arg @ref LL_GPDMA1_REQUEST_SPI1_RX
3450 * @arg @ref LL_GPDMA1_REQUEST_SPI1_TX
3451 * @arg @ref LL_GPDMA1_REQUEST_SPI2_RX
3452 * @arg @ref LL_GPDMA1_REQUEST_SPI2_TX
3453 * @arg @ref LL_GPDMA1_REQUEST_SPI3_RX
3454 * @arg @ref LL_GPDMA1_REQUEST_SPI3_TX
3455 * @arg @ref LL_GPDMA1_REQUEST_I2C1_RX
3456 * @arg @ref LL_GPDMA1_REQUEST_I2C1_TX
3457 * @arg @ref LL_GPDMA1_REQUEST_I2C1_EVC
3458 * @arg @ref LL_GPDMA1_REQUEST_I2C2_RX
3459 * @arg @ref LL_GPDMA1_REQUEST_I2C2_TX
3460 * @arg @ref LL_GPDMA1_REQUEST_I2C2_EVC
3461 * @arg @ref LL_GPDMA1_REQUEST_I2C3_RX
3462 * @arg @ref LL_GPDMA1_REQUEST_I2C3_TX
3463 * @arg @ref LL_GPDMA1_REQUEST_I2C3_EVC
3464 * @arg @ref LL_GPDMA1_REQUEST_I2C4_RX
3465 * @arg @ref LL_GPDMA1_REQUEST_I2C4_TX
3466 * @arg @ref LL_GPDMA1_REQUEST_I2C4_EVC
3467 * @arg @ref LL_GPDMA1_REQUEST_USART1_RX
3468 * @arg @ref LL_GPDMA1_REQUEST_USART1_TX
3469 * @arg @ref LL_GPDMA1_REQUEST_USART2_RX (*)
3470 * @arg @ref LL_GPDMA1_REQUEST_USART2_TX (*)
3471 * @arg @ref LL_GPDMA1_REQUEST_USART3_RX
3472 * @arg @ref LL_GPDMA1_REQUEST_USART3_TX
3473 * @arg @ref LL_GPDMA1_REQUEST_UART4_RX
3474 * @arg @ref LL_GPDMA1_REQUEST_UART4_TX
3475 * @arg @ref LL_GPDMA1_REQUEST_UART5_RX
3476 * @arg @ref LL_GPDMA1_REQUEST_UART5_TX
3477 * @arg @ref LL_GPDMA1_REQUEST_LPUART1_RX
3478 * @arg @ref LL_GPDMA1_REQUEST_LPUART1_TX
3479 * @arg @ref LL_GPDMA1_REQUEST_SAI1_A
3480 * @arg @ref LL_GPDMA1_REQUEST_SAI1_B
3481 * @arg @ref LL_GPDMA1_REQUEST_SAI2_A (*)
3482 * @arg @ref LL_GPDMA1_REQUEST_SAI2_B (*)
3483 * @arg @ref LL_GPDMA1_REQUEST_OCTOSPI1
3484 * @arg @ref LL_GPDMA1_REQUEST_OCTOSPI2 (*)
3485 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH1
3486 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH2
3487 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH3
3488 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH4
3489 * @arg @ref LL_GPDMA1_REQUEST_TIM1_UP
3490 * @arg @ref LL_GPDMA1_REQUEST_TIM1_TRIG
3491 * @arg @ref LL_GPDMA1_REQUEST_TIM1_COM
3492 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH1
3493 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH2
3494 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH3
3495 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH4
3496 * @arg @ref LL_GPDMA1_REQUEST_TIM8_UP
3497 * @arg @ref LL_GPDMA1_REQUEST_TIM8_TRIG
3498 * @arg @ref LL_GPDMA1_REQUEST_TIM8_COM
3499 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH1
3500 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH2
3501 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH3
3502 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH4
3503 * @arg @ref LL_GPDMA1_REQUEST_TIM2_UP
3504 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH1
3505 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH2
3506 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH3
3507 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH4
3508 * @arg @ref LL_GPDMA1_REQUEST_TIM3_UP
3509 * @arg @ref LL_GPDMA1_REQUEST_TIM3_TRIG
3510 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH1
3511 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH2
3512 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH3
3513 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH4
3514 * @arg @ref LL_GPDMA1_REQUEST_TIM4_UP
3515 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH1
3516 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH2
3517 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH3
3518 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH4
3519 * @arg @ref LL_GPDMA1_REQUEST_TIM5_UP
3520 * @arg @ref LL_GPDMA1_REQUEST_TIM5_TRIG
3521 * @arg @ref LL_GPDMA1_REQUEST_TIM15_CH1
3522 * @arg @ref LL_GPDMA1_REQUEST_TIM15_UP
3523 * @arg @ref LL_GPDMA1_REQUEST_TIM15_TRIG
3524 * @arg @ref LL_GPDMA1_REQUEST_TIM15_COM
3525 * @arg @ref LL_GPDMA1_REQUEST_TIM16_CH1
3526 * @arg @ref LL_GPDMA1_REQUEST_TIM16_UP
3527 * @arg @ref LL_GPDMA1_REQUEST_TIM17_CH1
3528 * @arg @ref LL_GPDMA1_REQUEST_TIM17_UP
3529 * @arg @ref LL_GPDMA1_REQUEST_DCMI_PSSI
3530 * @arg @ref LL_GPDMA1_REQUEST_AES_IN
3531 * @arg @ref LL_GPDMA1_REQUEST_AES_OUT
3532 * @arg @ref LL_GPDMA1_REQUEST_HASH_IN
3533 * @arg @ref LL_GPDMA1_REQUEST_UCPD1_TX (*)
3534 * @arg @ref LL_GPDMA1_REQUEST_UCPD1_RX (*)
3535 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT0
3536 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT1
3537 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT2
3538 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT3
3539 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT4
3540 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT5
3541 * @arg @ref LL_GPDMA1_REQUEST_ADF1_FLT0
3542 * @arg @ref LL_GPDMA1_REQUEST_FMAC_READ
3543 * @arg @ref LL_GPDMA1_REQUEST_FMAC_WRITE
3544 * @arg @ref LL_GPDMA1_REQUEST_CORDIC_READ
3545 * @arg @ref LL_GPDMA1_REQUEST_CORDIC_WRITE
3546 * @arg @ref LL_GPDMA1_REQUEST_SAES_IN
3547 * @arg @ref LL_GPDMA1_REQUEST_SAES_OUT
3548 * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC1
3549 * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC2
3550 * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_UE
3551 * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC1
3552 * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC2
3553 * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_UE
3554 * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC1
3555 * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC2
3556 * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_UE
3557 * @arg @ref LL_GPDMA1_REQUEST_HSPI1 (*)
3558 * @arg @ref LL_GPDMA1_REQUEST_I2C5_RX (*)
3559 * @arg @ref LL_GPDMA1_REQUEST_I2C5_TX (*)
3560 * @arg @ref LL_GPDMA1_REQUEST_I2C5_EVC (*)
3561 * @arg @ref LL_GPDMA1_REQUEST_I2C6_RX (*)
3562 * @arg @ref LL_GPDMA1_REQUEST_I2C6_TX (*)
3563 * @arg @ref LL_GPDMA1_REQUEST_I2C6_EVC (*)
3564 * @arg @ref LL_GPDMA1_REQUEST_USART6_RX (*)
3565 * @arg @ref LL_GPDMA1_REQUEST_USART6_TX (*)
3566 * @arg @ref LL_GPDMA1_REQUEST_ADC2 (*)
3567 * @arg @ref LL_GPDMA1_REQUEST_JPEG_RX (*)
3568 * @arg @ref LL_GPDMA1_REQUEST_JPEG_TX (*)
3569 *
3570 * @arg @ref LL_LPDMA1_REQUEST_LPUART1_RX
3571 * @arg @ref LL_LPDMA1_REQUEST_LPUART1_TX
3572 * @arg @ref LL_LPDMA1_REQUEST_SPI3_RX
3573 * @arg @ref LL_LPDMA1_REQUEST_SPI3_TX
3574 * @arg @ref LL_LPDMA1_REQUEST_I2C3_RX
3575 * @arg @ref LL_LPDMA1_REQUEST_I2C3_TX
3576 * @arg @ref LL_LPDMA1_REQUEST_I2C3_EVC
3577 * @arg @ref LL_LPDMA1_REQUEST_ADC4
3578 * @arg @ref LL_LPDMA1_REQUEST_DAC1_CH1
3579 * @arg @ref LL_LPDMA1_REQUEST_DAC1_CH2
3580 * @arg @ref LL_LPDMA1_REQUEST_ADF1_FLT0
3581 * @arg @ref LL_LPDMA1_REQUEST_LPTIM1_IC1
3582 * @arg @ref LL_LPDMA1_REQUEST_LPTIM1_IC2
3583 * @arg @ref LL_LPDMA1_REQUEST_LPTIM1_UE
3584 * @arg @ref LL_LPDMA1_REQUEST_LPTIM3_IC1
3585 * @arg @ref LL_LPDMA1_REQUEST_LPTIM3_IC2
3586 * @arg @ref LL_LPDMA1_REQUEST_LPTIM3_UE
3587 *
3588 * @note (*) Availability depends on devices.
3589 * @retval None.
3590 */
LL_DMA_SetPeriphRequest(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Request)3591 __STATIC_INLINE void LL_DMA_SetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request)
3592 {
3593 uint32_t dma_base_addr = (uint32_t)DMAx;
3594 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_REQSEL, Request);
3595 }
3596
3597 /**
3598 * @brief Get hardware request.
3599 * @note This API is used for all available DMA channels.
3600 * For LPDMA channels, REQSEL fields is reduced to 5 bits.
3601 * @rmtoll CTR2 REQSEL LL_DMA_GetPeriphRequest
3602 * @param DMAx DMAx Instance
3603 * @param Channel This parameter can be one of the following values:
3604 * @arg @ref LL_DMA_CHANNEL_0
3605 * @arg @ref LL_DMA_CHANNEL_1
3606 * @arg @ref LL_DMA_CHANNEL_2
3607 * @arg @ref LL_DMA_CHANNEL_3
3608 * @arg @ref LL_DMA_CHANNEL_4
3609 * @arg @ref LL_DMA_CHANNEL_5
3610 * @arg @ref LL_DMA_CHANNEL_6
3611 * @arg @ref LL_DMA_CHANNEL_7
3612 * @arg @ref LL_DMA_CHANNEL_8
3613 * @arg @ref LL_DMA_CHANNEL_9
3614 * @arg @ref LL_DMA_CHANNEL_10
3615 * @arg @ref LL_DMA_CHANNEL_11
3616 * @arg @ref LL_DMA_CHANNEL_12
3617 * @arg @ref LL_DMA_CHANNEL_13
3618 * @arg @ref LL_DMA_CHANNEL_14
3619 * @arg @ref LL_DMA_CHANNEL_15
3620 * @retval Returned value can be one of the following values:
3621 * @arg @ref LL_GPDMA1_REQUEST_ADC1
3622 * @arg @ref LL_GPDMA1_REQUEST_ADC4
3623 * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH1
3624 * @arg @ref LL_GPDMA1_REQUEST_DAC1_CH2
3625 * @arg @ref LL_GPDMA1_REQUEST_TIM6_UP
3626 * @arg @ref LL_GPDMA1_REQUEST_TIM7_UP
3627 * @arg @ref LL_GPDMA1_REQUEST_SPI1_RX
3628 * @arg @ref LL_GPDMA1_REQUEST_SPI1_TX
3629 * @arg @ref LL_GPDMA1_REQUEST_SPI2_RX
3630 * @arg @ref LL_GPDMA1_REQUEST_SPI2_TX
3631 * @arg @ref LL_GPDMA1_REQUEST_SPI3_RX
3632 * @arg @ref LL_GPDMA1_REQUEST_SPI3_TX
3633 * @arg @ref LL_GPDMA1_REQUEST_I2C1_RX
3634 * @arg @ref LL_GPDMA1_REQUEST_I2C1_TX
3635 * @arg @ref LL_GPDMA1_REQUEST_I2C1_EVC
3636 * @arg @ref LL_GPDMA1_REQUEST_I2C2_RX
3637 * @arg @ref LL_GPDMA1_REQUEST_I2C2_TX
3638 * @arg @ref LL_GPDMA1_REQUEST_I2C2_EVC
3639 * @arg @ref LL_GPDMA1_REQUEST_I2C3_RX
3640 * @arg @ref LL_GPDMA1_REQUEST_I2C3_TX
3641 * @arg @ref LL_GPDMA1_REQUEST_I2C3_EVC
3642 * @arg @ref LL_GPDMA1_REQUEST_I2C4_RX
3643 * @arg @ref LL_GPDMA1_REQUEST_I2C4_TX
3644 * @arg @ref LL_GPDMA1_REQUEST_I2C4_EVC
3645 * @arg @ref LL_GPDMA1_REQUEST_USART1_RX
3646 * @arg @ref LL_GPDMA1_REQUEST_USART1_TX
3647 * @arg @ref LL_GPDMA1_REQUEST_USART2_RX (*)
3648 * @arg @ref LL_GPDMA1_REQUEST_USART2_TX (*)
3649 * @arg @ref LL_GPDMA1_REQUEST_USART3_RX
3650 * @arg @ref LL_GPDMA1_REQUEST_USART3_TX
3651 * @arg @ref LL_GPDMA1_REQUEST_UART4_RX
3652 * @arg @ref LL_GPDMA1_REQUEST_UART4_TX
3653 * @arg @ref LL_GPDMA1_REQUEST_UART5_RX
3654 * @arg @ref LL_GPDMA1_REQUEST_UART5_TX
3655 * @arg @ref LL_GPDMA1_REQUEST_LPUART1_RX
3656 * @arg @ref LL_GPDMA1_REQUEST_LPUART1_TX
3657 * @arg @ref LL_GPDMA1_REQUEST_SAI1_A
3658 * @arg @ref LL_GPDMA1_REQUEST_SAI1_B
3659 * @arg @ref LL_GPDMA1_REQUEST_SAI2_A (*)
3660 * @arg @ref LL_GPDMA1_REQUEST_SAI2_B (*)
3661 * @arg @ref LL_GPDMA1_REQUEST_OCTOSPI1
3662 * @arg @ref LL_GPDMA1_REQUEST_OCTOSPI2 (*)
3663 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH1
3664 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH2
3665 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH3
3666 * @arg @ref LL_GPDMA1_REQUEST_TIM1_CH4
3667 * @arg @ref LL_GPDMA1_REQUEST_TIM1_UP
3668 * @arg @ref LL_GPDMA1_REQUEST_TIM1_TRIG
3669 * @arg @ref LL_GPDMA1_REQUEST_TIM1_COM
3670 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH1
3671 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH2
3672 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH3
3673 * @arg @ref LL_GPDMA1_REQUEST_TIM8_CH4
3674 * @arg @ref LL_GPDMA1_REQUEST_TIM8_UP
3675 * @arg @ref LL_GPDMA1_REQUEST_TIM8_TRIG
3676 * @arg @ref LL_GPDMA1_REQUEST_TIM8_COM
3677 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH1
3678 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH2
3679 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH3
3680 * @arg @ref LL_GPDMA1_REQUEST_TIM2_CH4
3681 * @arg @ref LL_GPDMA1_REQUEST_TIM2_UP
3682 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH1
3683 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH2
3684 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH3
3685 * @arg @ref LL_GPDMA1_REQUEST_TIM3_CH4
3686 * @arg @ref LL_GPDMA1_REQUEST_TIM3_UP
3687 * @arg @ref LL_GPDMA1_REQUEST_TIM3_TRIG
3688 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH1
3689 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH2
3690 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH3
3691 * @arg @ref LL_GPDMA1_REQUEST_TIM4_CH4
3692 * @arg @ref LL_GPDMA1_REQUEST_TIM4_UP
3693 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH1
3694 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH2
3695 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH3
3696 * @arg @ref LL_GPDMA1_REQUEST_TIM5_CH4
3697 * @arg @ref LL_GPDMA1_REQUEST_TIM5_UP
3698 * @arg @ref LL_GPDMA1_REQUEST_TIM5_TRIG
3699 * @arg @ref LL_GPDMA1_REQUEST_TIM15_CH1
3700 * @arg @ref LL_GPDMA1_REQUEST_TIM15_UP
3701 * @arg @ref LL_GPDMA1_REQUEST_TIM15_TRIG
3702 * @arg @ref LL_GPDMA1_REQUEST_TIM15_COM
3703 * @arg @ref LL_GPDMA1_REQUEST_TIM16_CH1
3704 * @arg @ref LL_GPDMA1_REQUEST_TIM16_UP
3705 * @arg @ref LL_GPDMA1_REQUEST_TIM17_CH1
3706 * @arg @ref LL_GPDMA1_REQUEST_TIM17_UP
3707 * @arg @ref LL_GPDMA1_REQUEST_DCMI_PSSI
3708 * @arg @ref LL_GPDMA1_REQUEST_AES_IN
3709 * @arg @ref LL_GPDMA1_REQUEST_AES_OUT
3710 * @arg @ref LL_GPDMA1_REQUEST_HASH_IN
3711 * @arg @ref LL_GPDMA1_REQUEST_UCPD1_TX (*)
3712 * @arg @ref LL_GPDMA1_REQUEST_UCPD1_RX (*)
3713 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT0
3714 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT1
3715 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT2
3716 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT3
3717 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT4
3718 * @arg @ref LL_GPDMA1_REQUEST_MDF1_FLT5
3719 * @arg @ref LL_GPDMA1_REQUEST_ADF1_FLT0
3720 * @arg @ref LL_GPDMA1_REQUEST_FMAC_READ
3721 * @arg @ref LL_GPDMA1_REQUEST_FMAC_WRITE
3722 * @arg @ref LL_GPDMA1_REQUEST_CORDIC_READ
3723 * @arg @ref LL_GPDMA1_REQUEST_CORDIC_WRITE
3724 * @arg @ref LL_GPDMA1_REQUEST_SAES_IN
3725 * @arg @ref LL_GPDMA1_REQUEST_SAES_OUT
3726 * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC1
3727 * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_IC2
3728 * @arg @ref LL_GPDMA1_REQUEST_LPTIM1_UE
3729 * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC1
3730 * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_IC2
3731 * @arg @ref LL_GPDMA1_REQUEST_LPTIM2_UE
3732 * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC1
3733 * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_IC2
3734 * @arg @ref LL_GPDMA1_REQUEST_LPTIM3_UE
3735 * @arg @ref LL_GPDMA1_REQUEST_HSPI1 (*)
3736 * @arg @ref LL_GPDMA1_REQUEST_I2C5_RX (*)
3737 * @arg @ref LL_GPDMA1_REQUEST_I2C5_TX (*)
3738 * @arg @ref LL_GPDMA1_REQUEST_I2C5_EVC (*)
3739 * @arg @ref LL_GPDMA1_REQUEST_I2C6_RX (*)
3740 * @arg @ref LL_GPDMA1_REQUEST_I2C6_TX (*)
3741 * @arg @ref LL_GPDMA1_REQUEST_I2C6_EVC (*)
3742 * @arg @ref LL_GPDMA1_REQUEST_USART6_RX (*)
3743 * @arg @ref LL_GPDMA1_REQUEST_USART6_TX (*)
3744 * @arg @ref LL_GPDMA1_REQUEST_ADC2 (*)
3745 * @arg @ref LL_GPDMA1_REQUEST_JPEG_RX (*)
3746 * @arg @ref LL_GPDMA1_REQUEST_JPEG_TX (*)
3747 *
3748 * @arg @ref LL_LPDMA1_REQUEST_LPUART1_RX
3749 * @arg @ref LL_LPDMA1_REQUEST_LPUART1_TX
3750 * @arg @ref LL_LPDMA1_REQUEST_SPI3_RX
3751 * @arg @ref LL_LPDMA1_REQUEST_SPI3_TX
3752 * @arg @ref LL_LPDMA1_REQUEST_I2C3_RX
3753 * @arg @ref LL_LPDMA1_REQUEST_I2C3_TX
3754 * @arg @ref LL_LPDMA1_REQUEST_I2C3_EVC
3755 * @arg @ref LL_LPDMA1_REQUEST_ADC4
3756 * @arg @ref LL_LPDMA1_REQUEST_DAC1_CH1
3757 * @arg @ref LL_LPDMA1_REQUEST_DAC1_CH2
3758 * @arg @ref LL_LPDMA1_REQUEST_ADF1_FLT0
3759 * @arg @ref LL_LPDMA1_REQUEST_LPTIM1_IC1
3760 * @arg @ref LL_LPDMA1_REQUEST_LPTIM1_IC2
3761 * @arg @ref LL_LPDMA1_REQUEST_LPTIM1_UE
3762 * @arg @ref LL_LPDMA1_REQUEST_LPTIM3_IC1
3763 * @arg @ref LL_LPDMA1_REQUEST_LPTIM3_IC2
3764 * @arg @ref LL_LPDMA1_REQUEST_LPTIM3_UE
3765 *
3766 * @note (*) Availability depends on devices.
3767 */
LL_DMA_GetPeriphRequest(const DMA_TypeDef * DMAx,uint32_t Channel)3768 __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(const DMA_TypeDef *DMAx, uint32_t Channel)
3769 {
3770 uint32_t dma_base_addr = (uint32_t)DMAx;
3771 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_REQSEL));
3772 }
3773
3774 /**
3775 * @brief Set hardware trigger.
3776 * @note This API is used for all available DMA channels.
3777 * For LPDMA channels, TRIGSEL fields is reduced to 5 bits.
3778 * @rmtoll CTR2 TRIGSEL LL_DMA_SetHWTrigger
3779 * @param DMAx DMAx Instance
3780 * @param Channel This parameter can be one of the following values:
3781 * @arg @ref LL_DMA_CHANNEL_0
3782 * @arg @ref LL_DMA_CHANNEL_1
3783 * @arg @ref LL_DMA_CHANNEL_2
3784 * @arg @ref LL_DMA_CHANNEL_3
3785 * @arg @ref LL_DMA_CHANNEL_4
3786 * @arg @ref LL_DMA_CHANNEL_5
3787 * @arg @ref LL_DMA_CHANNEL_6
3788 * @arg @ref LL_DMA_CHANNEL_7
3789 * @arg @ref LL_DMA_CHANNEL_8
3790 * @arg @ref LL_DMA_CHANNEL_9
3791 * @arg @ref LL_DMA_CHANNEL_10
3792 * @arg @ref LL_DMA_CHANNEL_11
3793 * @arg @ref LL_DMA_CHANNEL_12
3794 * @arg @ref LL_DMA_CHANNEL_13
3795 * @arg @ref LL_DMA_CHANNEL_14
3796 * @arg @ref LL_DMA_CHANNEL_15
3797 * @param Trigger This parameter can be one of the following values:
3798 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE0
3799 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE1
3800 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE2
3801 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE3
3802 * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG1
3803 * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG2
3804 * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG3
3805 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH1
3806 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH2
3807 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH1
3808 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH2
3809 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_OUT
3810 * @arg @ref LL_GPDMA1_TRIGGER_COMP1_OUT
3811 * @arg @ref LL_GPDMA1_TRIGGER_COMP2_OUT (*)
3812 * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRA_TRG
3813 * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRB_TRG
3814 * @arg @ref LL_GPDMA1_TRIGGER_RTC_WUT_TRG
3815 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF
3816 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF
3817 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF
3818 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF
3819 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF
3820 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF
3821 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF
3822 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF
3823 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH8_TCF
3824 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH9_TCF
3825 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH10_TCF
3826 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH11_TCF
3827 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH12_TCF
3828 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH13_TCF
3829 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH14_TCF
3830 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH15_TCF
3831 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH0_TCF
3832 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH1_TCF
3833 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH2_TCF
3834 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH3_TCF
3835 * @arg @ref LL_GPDMA1_TRIGGER_TIM2_TRGO
3836 * @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO
3837 * @arg @ref LL_GPDMA1_TRIGGER_TIM3_TRGO (*)
3838 * @arg @ref LL_GPDMA1_TRIGGER_TIM4_TRGO (*)
3839 * @arg @ref LL_GPDMA1_TRIGGER_TIM5_TRGO (*)
3840 * @arg @ref LL_GPDMA1_TRIGGER_LTDC_LI (*)
3841 * @arg @ref LL_GPDMA1_TRIGGER_DSI_TE (*)
3842 * @arg @ref LL_GPDMA1_TRIGGER_DSI_ER (*)
3843 * @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TC (*)
3844 * @arg @ref LL_GPDMA1_TRIGGER_DMA2D_CTC (*)
3845 * @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TW (*)
3846 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG0 (*)
3847 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG1 (*)
3848 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG2 (*)
3849 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG3 (*)
3850 * @arg @ref LL_GPDMA1_TRIGGER_ADC4_AWD1
3851 * @arg @ref LL_GPDMA1_TRIGGER_ADC1_AWD1
3852 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT3 (*)
3853 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT2 (*)
3854 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT1 (*)
3855 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT0 (*)
3856 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_EOC (*)
3857 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFNF (*)
3858 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFT (*)
3859 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFNE (*)
3860 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFT (*)
3861 *
3862 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE0
3863 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE1
3864 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE2
3865 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE3
3866 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE4
3867 * @arg @ref LL_LPDMA1_TRIGGER_TAMP_TRG1
3868 * @arg @ref LL_LPDMA1_TRIGGER_TAMP_TRG2
3869 * @arg @ref LL_LPDMA1_TRIGGER_TAMP_TRG3
3870 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM1_CH1
3871 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM1_CH2
3872 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM3_CH1
3873 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM4_OUT
3874 * @arg @ref LL_LPDMA1_TRIGGER_COMP1_OUT
3875 * @arg @ref LL_LPDMA1_TRIGGER_COMP2_OUT (*)
3876 * @arg @ref LL_LPDMA1_TRIGGER_RTC_ALRA_TRG
3877 * @arg @ref LL_LPDMA1_TRIGGER_RTC_ALRB_TRG
3878 * @arg @ref LL_LPDMA1_TRIGGER_RTC_WUT_TRG
3879 * @arg @ref LL_LPDMA1_TRIGGER_ADC4_AWD1
3880 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH0_TCF
3881 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH1_TCF
3882 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH2_TCF
3883 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH3_TCF
3884 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH0_TCF
3885 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH1_TCF
3886 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH4_TCF
3887 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH5_TCF
3888 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH6_TCF
3889 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH7_TCF
3890 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH12_TCF
3891 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH13_TCF
3892 * @arg @ref LL_LPDMA1_TRIGGER_TIM2_TRGO
3893 * @arg @ref LL_LPDMA1_TRIGGER_TIM15_TRGO
3894 * @note (*) Availability depends on devices.
3895 * @retval None.
3896 */
LL_DMA_SetHWTrigger(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Trigger)3897 __STATIC_INLINE void LL_DMA_SetHWTrigger(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Trigger)
3898 {
3899 uint32_t dma_base_addr = (uint32_t)DMAx;
3900 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2, DMA_CTR2_TRIGSEL,
3901 (Trigger << DMA_CTR2_TRIGSEL_Pos) & DMA_CTR2_TRIGSEL);
3902 }
3903
3904 /**
3905 * @brief Get hardware triggers.
3906 * @note This API is used for all available DMA channels.
3907 * For LPDMA channels, TRIGSEL fields is reduced to 5 bits.
3908 * @rmtoll CTR2 TRIGSEL LL_DMA_GetHWTrigger
3909 * @param DMAx DMAx Instance
3910 * @param Channel This parameter can be one of the following values:
3911 * @arg @ref LL_DMA_CHANNEL_0
3912 * @arg @ref LL_DMA_CHANNEL_1
3913 * @arg @ref LL_DMA_CHANNEL_2
3914 * @arg @ref LL_DMA_CHANNEL_3
3915 * @arg @ref LL_DMA_CHANNEL_4
3916 * @arg @ref LL_DMA_CHANNEL_5
3917 * @arg @ref LL_DMA_CHANNEL_6
3918 * @arg @ref LL_DMA_CHANNEL_7
3919 * @arg @ref LL_DMA_CHANNEL_8
3920 * @arg @ref LL_DMA_CHANNEL_9
3921 * @arg @ref LL_DMA_CHANNEL_10
3922 * @arg @ref LL_DMA_CHANNEL_11
3923 * @arg @ref LL_DMA_CHANNEL_12
3924 * @arg @ref LL_DMA_CHANNEL_13
3925 * @arg @ref LL_DMA_CHANNEL_14
3926 * @arg @ref LL_DMA_CHANNEL_15
3927 * @retval Returned value can be one of the following values:
3928 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE0
3929 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE1
3930 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE2
3931 * @arg @ref LL_GPDMA1_TRIGGER_EXTI_LINE3
3932 * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG1
3933 * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG2
3934 * @arg @ref LL_GPDMA1_TRIGGER_TAMP_TRG3
3935 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH1
3936 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM1_CH2
3937 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH1
3938 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM2_CH2
3939 * @arg @ref LL_GPDMA1_TRIGGER_LPTIM4_OUT
3940 * @arg @ref LL_GPDMA1_TRIGGER_COMP1_OUT
3941 * @arg @ref LL_GPDMA1_TRIGGER_COMP2_OUT (*)
3942 * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRA_TRG
3943 * @arg @ref LL_GPDMA1_TRIGGER_RTC_ALRB_TRG
3944 * @arg @ref LL_GPDMA1_TRIGGER_RTC_WUT_TRG
3945 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH0_TCF
3946 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH1_TCF
3947 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH2_TCF
3948 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH3_TCF
3949 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH4_TCF
3950 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH5_TCF
3951 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH6_TCF
3952 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH7_TCF
3953 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH8_TCF
3954 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH9_TCF
3955 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH10_TCF
3956 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH11_TCF
3957 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH12_TCF
3958 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH13_TCF
3959 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH14_TCF
3960 * @arg @ref LL_GPDMA1_TRIGGER_GPDMA1_CH15_TCF
3961 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH0_TCF
3962 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH1_TCF
3963 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH2_TCF
3964 * @arg @ref LL_GPDMA1_TRIGGER_LPDMA1_CH3_TCF
3965 * @arg @ref LL_GPDMA1_TRIGGER_TIM2_TRGO
3966 * @arg @ref LL_GPDMA1_TRIGGER_TIM15_TRGO
3967 * @arg @ref LL_GPDMA1_TRIGGER_TIM3_TRGO (*)
3968 * @arg @ref LL_GPDMA1_TRIGGER_TIM4_TRGO (*)
3969 * @arg @ref LL_GPDMA1_TRIGGER_TIM5_TRGO (*)
3970 * @arg @ref LL_GPDMA1_TRIGGER_LTDC_LI (*)
3971 * @arg @ref LL_GPDMA1_TRIGGER_DSI_TE (*)
3972 * @arg @ref LL_GPDMA1_TRIGGER_DSI_ER (*)
3973 * @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TC (*)
3974 * @arg @ref LL_GPDMA1_TRIGGER_DMA2D_CTC (*)
3975 * @arg @ref LL_GPDMA1_TRIGGER_DMA2D_TW (*)
3976 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG0 (*)
3977 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG1 (*)
3978 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG2 (*)
3979 * @arg @ref LL_GPDMA1_TRIGGER_GPU2D_FLAG3 (*)
3980 * @arg @ref LL_GPDMA1_TRIGGER_ADC4_AWD1
3981 * @arg @ref LL_GPDMA1_TRIGGER_ADC1_AWD1
3982 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT3 (*)
3983 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT2 (*)
3984 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT1 (*)
3985 * @arg @ref LL_GPDMA1_TRIGGER_GFXTIM_EVT0 (*)
3986 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_EOC (*)
3987 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFNF (*)
3988 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_IFT (*)
3989 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFNE (*)
3990 * @arg @ref LL_GPDMA1_TRIGGER_JPEG_OFT (*)
3991 *
3992 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE0
3993 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE1
3994 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE2
3995 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE3
3996 * @arg @ref LL_LPDMA1_TRIGGER_EXTI_LINE4
3997 * @arg @ref LL_LPDMA1_TRIGGER_TAMP_TRG1
3998 * @arg @ref LL_LPDMA1_TRIGGER_TAMP_TRG2
3999 * @arg @ref LL_LPDMA1_TRIGGER_TAMP_TRG3
4000 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM1_CH1
4001 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM1_CH2
4002 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM3_CH1
4003 * @arg @ref LL_LPDMA1_TRIGGER_LPTIM4_OUT
4004 * @arg @ref LL_LPDMA1_TRIGGER_COMP1_OUT
4005 * @arg @ref LL_LPDMA1_TRIGGER_COMP2_OUT (*)
4006 * @arg @ref LL_LPDMA1_TRIGGER_RTC_ALRA_TRG
4007 * @arg @ref LL_LPDMA1_TRIGGER_RTC_ALRB_TRG
4008 * @arg @ref LL_LPDMA1_TRIGGER_RTC_WUT_TRG
4009 * @arg @ref LL_LPDMA1_TRIGGER_ADC4_AWD1
4010 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH0_TCF
4011 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH1_TCF
4012 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH2_TCF
4013 * @arg @ref LL_LPDMA1_TRIGGER_LPDMA1_CH3_TCF
4014 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH0_TCF
4015 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH1_TCF
4016 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH4_TCF
4017 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH5_TCF
4018 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH6_TCF
4019 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH7_TCF
4020 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH12_TCF
4021 * @arg @ref LL_LPDMA1_TRIGGER_GPDMA1_CH13_TCF
4022 * @arg @ref LL_LPDMA1_TRIGGER_TIM2_TRGO
4023 * @arg @ref LL_LPDMA1_TRIGGER_TIM15_TRGO
4024 * @note (*) Availability depends on devices.
4025 */
LL_DMA_GetHWTrigger(const DMA_TypeDef * DMAx,uint32_t Channel)4026 __STATIC_INLINE uint32_t LL_DMA_GetHWTrigger(const DMA_TypeDef *DMAx, uint32_t Channel)
4027 {
4028 uint32_t dma_base_addr = (uint32_t)DMAx;
4029 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR2,
4030 DMA_CTR2_TRIGSEL) >> DMA_CTR2_TRIGSEL_Pos);
4031 }
4032
4033 /**
4034 * @brief Configure addresses update.
4035 * @note This API is used only for 2D addressing channels.
4036 * @rmtoll CBR1 BRDDEC LL_DMA_ConfigBlkRptAddrUpdate\n
4037 * CBR1 BRSDEC LL_DMA_ConfigBlkRptAddrUpdate\n
4038 * CBR1 DDEC LL_DMA_ConfigBlkRptAddrUpdate\n
4039 * CBR1 SDEC LL_DMA_ConfigBlkRptAddrUpdate
4040 * @param DMAx DMAx Instance
4041 * @param Channel This parameter can be one of the following values:
4042 * @arg @ref LL_DMA_CHANNEL_12
4043 * @arg @ref LL_DMA_CHANNEL_13
4044 * @arg @ref LL_DMA_CHANNEL_14
4045 * @arg @ref LL_DMA_CHANNEL_15
4046 * @param Configuration This parameter must be a combination of all the following values:
4047 * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT or @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
4048 * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT or @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
4049 * @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT or @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
4050 * @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT or @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
4051 *@retval None.
4052 */
LL_DMA_ConfigBlkRptAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t Configuration)4053 __STATIC_INLINE void LL_DMA_ConfigBlkRptAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration)
4054 {
4055 uint32_t dma_base_addr = (uint32_t)DMAx;
4056 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
4057 DMA_CBR1_BRDDEC | DMA_CBR1_BRSDEC | DMA_CBR1_DDEC | DMA_CBR1_SDEC, Configuration);
4058 }
4059
4060 /**
4061 * @brief Configure DMA Block number of data and repeat Count.
4062 * @note This API is used only for 2D addressing channels.
4063 * @rmtoll CBR1 BNDT LL_DMA_ConfigBlkCounters\n
4064 * CBR1 BRC LL_DMA_ConfigBlkCounters
4065 * @param DMAx DMAx Instance
4066 * @param Channel This parameter can be one of the following values:
4067 * @arg @ref LL_DMA_CHANNEL_12
4068 * @arg @ref LL_DMA_CHANNEL_13
4069 * @arg @ref LL_DMA_CHANNEL_14
4070 * @arg @ref LL_DMA_CHANNEL_15
4071 * @param BlkDataLength Block transfer length
4072 Value between 0 to 0x0000FFFF
4073 * @param BlkRptCount Block repeat counter
4074 * Value between 0 to 0x000007FF
4075 *@retval None.
4076 */
LL_DMA_ConfigBlkCounters(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkDataLength,uint32_t BlkRptCount)4077 __STATIC_INLINE void LL_DMA_ConfigBlkCounters(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkDataLength,
4078 uint32_t BlkRptCount)
4079 {
4080 uint32_t dma_base_addr = (uint32_t)DMAx;
4081 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
4082 (DMA_CBR1_BNDT | DMA_CBR1_BRC), (BlkDataLength | (BlkRptCount << DMA_CBR1_BRC_Pos)));
4083 }
4084
4085 /**
4086 * @brief Set block repeat destination address update.
4087 * @note This API is used only for 2D addressing channels.
4088 * @rmtoll CBR1 BRDDEC LL_DMA_SetBlkRptDestAddrUpdate
4089 * @param DMAx DMAx Instance
4090 * @param Channel This parameter can be one of the following values:
4091 * @arg @ref LL_DMA_CHANNEL_12
4092 * @arg @ref LL_DMA_CHANNEL_13
4093 * @arg @ref LL_DMA_CHANNEL_14
4094 * @arg @ref LL_DMA_CHANNEL_15
4095 * @param BlkRptDestAddrUpdate This parameter can be one of the following values:
4096 * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT
4097 * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
4098 * @retval None.
4099 */
LL_DMA_SetBlkRptDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptDestAddrUpdate)4100 __STATIC_INLINE void LL_DMA_SetBlkRptDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel,
4101 uint32_t BlkRptDestAddrUpdate)
4102 {
4103 uint32_t dma_base_addr = (uint32_t)DMAx;
4104 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRDDEC,
4105 BlkRptDestAddrUpdate);
4106 }
4107
4108 /**
4109 * @brief Get block repeat destination address update.
4110 * @note This API is used only for 2D addressing channels.
4111 * @rmtoll CBR1 BRDDEC LL_DMA_GetBlkRptDestAddrUpdate
4112 * @param DMAx DMAx Instance
4113 * @param Channel This parameter can be one of the following values:
4114 * @arg @ref LL_DMA_CHANNEL_12
4115 * @arg @ref LL_DMA_CHANNEL_13
4116 * @arg @ref LL_DMA_CHANNEL_14
4117 * @arg @ref LL_DMA_CHANNEL_15
4118 * @retval Returned value can be one of the following values:
4119 * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_INCREMENT
4120 * @arg @ref LL_DMA_BLKRPT_DEST_ADDR_DECREMENT
4121 */
LL_DMA_GetBlkRptDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)4122 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
4123 {
4124 uint32_t dma_base_addr = (uint32_t)DMAx;
4125 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRDDEC));
4126 }
4127
4128 /**
4129 * @brief Set block repeat source address update.
4130 * @note This API is used only for 2D addressing channels.
4131 * @rmtoll CBR1 BRSDEC LL_DMA_SetBlkRptSrcAddrUpdate
4132 * @param DMAx DMAx Instance
4133 * @param Channel This parameter can be one of the following values:
4134 * @arg @ref LL_DMA_CHANNEL_12
4135 * @arg @ref LL_DMA_CHANNEL_13
4136 * @arg @ref LL_DMA_CHANNEL_14
4137 * @arg @ref LL_DMA_CHANNEL_15
4138 * @param BlkRptSrcAddrUpdate This parameter can be one of the following values:
4139 * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT
4140 * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
4141 * @retval None.
4142 */
LL_DMA_SetBlkRptSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptSrcAddrUpdate)4143 __STATIC_INLINE void LL_DMA_SetBlkRptSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel,
4144 uint32_t BlkRptSrcAddrUpdate)
4145 {
4146 uint32_t dma_base_addr = (uint32_t)DMAx;
4147 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRSDEC,
4148 BlkRptSrcAddrUpdate);
4149 }
4150
4151 /**
4152 * @brief Get block repeat source address update.
4153 * @note This API is used only for 2D addressing channels.
4154 * @rmtoll CBR1 BRSDEC LL_DMA_GetBlkRptSrcAddrUpdate
4155 * @param DMAx DMAx Instance
4156 * @param Channel This parameter can be one of the following values:
4157 * @arg @ref LL_DMA_CHANNEL_12
4158 * @arg @ref LL_DMA_CHANNEL_13
4159 * @arg @ref LL_DMA_CHANNEL_14
4160 * @arg @ref LL_DMA_CHANNEL_15
4161 * @retval Returned value can be one of the following values:
4162 * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_INCREMENT
4163 * @arg @ref LL_DMA_BLKRPT_SRC_ADDR_DECREMENT
4164 */
LL_DMA_GetBlkRptSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)4165 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
4166 {
4167 uint32_t dma_base_addr = (uint32_t)DMAx;
4168 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRSDEC));
4169 }
4170
4171 /**
4172 * @brief Set destination address update.
4173 * @note This API is used only for 2D addressing channels.
4174 * @rmtoll CBR1 DDEC LL_DMA_SetDestAddrUpdate
4175 * @param DMAx DMAx Instance
4176 * @param Channel This parameter can be one of the following values:
4177 * @arg @ref LL_DMA_CHANNEL_12
4178 * @arg @ref LL_DMA_CHANNEL_13
4179 * @arg @ref LL_DMA_CHANNEL_14
4180 * @arg @ref LL_DMA_CHANNEL_15
4181 * @param DestAddrUpdate This parameter can be one of the following values:
4182 * @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT
4183 * @arg @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
4184 * @retval None.
4185 */
LL_DMA_SetDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAddrUpdate)4186 __STATIC_INLINE void LL_DMA_SetDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddrUpdate)
4187 {
4188 uint32_t dma_base_addr = (uint32_t)DMAx;
4189 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_DDEC,
4190 DestAddrUpdate);
4191 }
4192
4193 /**
4194 * @brief Get destination address update.
4195 * @note This API is used only for 2D addressing channels.
4196 * @rmtoll CBR1 DDEC LL_DMA_GetDestAddrUpdate
4197 * @param DMAx DMAx Instance
4198 * @param Channel This parameter can be one of the following values:
4199 * @arg @ref LL_DMA_CHANNEL_12
4200 * @arg @ref LL_DMA_CHANNEL_13
4201 * @arg @ref LL_DMA_CHANNEL_14
4202 * @arg @ref LL_DMA_CHANNEL_15
4203 * @retval Returned value can be one of the following values:
4204 * @arg @ref LL_DMA_BURST_DEST_ADDR_INCREMENT
4205 * @arg @ref LL_DMA_BURST_DEST_ADDR_DECREMENT
4206 */
LL_DMA_GetDestAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)4207 __STATIC_INLINE uint32_t LL_DMA_GetDestAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
4208 {
4209 uint32_t dma_base_addr = (uint32_t)DMAx;
4210 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_DDEC));
4211 }
4212
4213 /**
4214 * @brief Set source address update.
4215 * @note This API is used only for 2D addressing channels.
4216 * @rmtoll CBR1 SDEC LL_DMA_SetSrcAddrUpdate
4217 * @param DMAx DMAx Instance
4218 * @param Channel This parameter can be one of the following values:
4219 * @arg @ref LL_DMA_CHANNEL_12
4220 * @arg @ref LL_DMA_CHANNEL_13
4221 * @arg @ref LL_DMA_CHANNEL_14
4222 * @arg @ref LL_DMA_CHANNEL_15
4223 * @param SrcAddrUpdate This parameter can be one of the following values:
4224 * @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT
4225 * @arg @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
4226 * @retval None.
4227 */
LL_DMA_SetSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddrUpdate)4228 __STATIC_INLINE void LL_DMA_SetSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrUpdate)
4229 {
4230 uint32_t dma_base_addr = (uint32_t)DMAx;
4231 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_SDEC,
4232 SrcAddrUpdate);
4233 }
4234
4235 /**
4236 * @brief Get source address update.
4237 * @note This API is used only for 2D addressing channels.
4238 * @rmtoll CBR1 SDEC LL_DMA_GetSrcAddrUpdate
4239 * @param DMAx DMAx Instance
4240 * @param Channel This parameter can be one of the following values:
4241 * @arg @ref LL_DMA_CHANNEL_12
4242 * @arg @ref LL_DMA_CHANNEL_13
4243 * @arg @ref LL_DMA_CHANNEL_14
4244 * @arg @ref LL_DMA_CHANNEL_15
4245 * @retval Returned value can be one of the following values:
4246 * @arg @ref LL_DMA_BURST_SRC_ADDR_INCREMENT
4247 * @arg @ref LL_DMA_BURST_SRC_ADDR_DECREMENT
4248 */
LL_DMA_GetSrcAddrUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)4249 __STATIC_INLINE uint32_t LL_DMA_GetSrcAddrUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
4250 {
4251 uint32_t dma_base_addr = (uint32_t)DMAx;
4252 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_SDEC));
4253 }
4254
4255 /**
4256 * @brief Set block repeat count.
4257 * @note This API is used only for 2D addressing channels.
4258 * @rmtoll CBR1 BRC LL_DMA_SetBlkRptCount
4259 * @param DMAx DMAx Instance
4260 * @param Channel This parameter can be one of the following values:
4261 * @arg @ref LL_DMA_CHANNEL_12
4262 * @arg @ref LL_DMA_CHANNEL_13
4263 * @arg @ref LL_DMA_CHANNEL_14
4264 * @arg @ref LL_DMA_CHANNEL_15
4265 * @param BlkRptCount Block repeat counter
4266 * Value between 0 to 0x000007FF
4267 * @retval None.
4268 */
LL_DMA_SetBlkRptCount(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptCount)4269 __STATIC_INLINE void LL_DMA_SetBlkRptCount(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkRptCount)
4270 {
4271 uint32_t dma_base_addr = (uint32_t)DMAx;
4272 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BRC,
4273 (BlkRptCount << DMA_CBR1_BRC_Pos) & DMA_CBR1_BRC);
4274 }
4275
4276 /**
4277 * @brief Get block repeat count.
4278 * @note This API is used only for 2D addressing channels.
4279 * @rmtoll CBR1 BRC LL_DMA_GetBlkRptCount
4280 * @param DMAx DMAx Instance
4281 * @param Channel This parameter can be one of the following values:
4282 * @arg @ref LL_DMA_CHANNEL_12
4283 * @arg @ref LL_DMA_CHANNEL_13
4284 * @arg @ref LL_DMA_CHANNEL_14
4285 * @arg @ref LL_DMA_CHANNEL_15
4286 * @retval Between 0 to 0x000007FF
4287 */
LL_DMA_GetBlkRptCount(const DMA_TypeDef * DMAx,uint32_t Channel)4288 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptCount(const DMA_TypeDef *DMAx, uint32_t Channel)
4289 {
4290 uint32_t dma_base_addr = (uint32_t)DMAx;
4291 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1,
4292 DMA_CBR1_BRC) >> DMA_CBR1_BRC_Pos);
4293 }
4294
4295 /**
4296 * @brief Set block data length in bytes to transfer.
4297 * @note This API is used for all available DMA channels.
4298 * @rmtoll CBR1 BNDT LL_DMA_SetBlkDataLength
4299 * @param DMAx DMAx Instance
4300 * @param Channel This parameter can be one of the following values:
4301 * @arg @ref LL_DMA_CHANNEL_0
4302 * @arg @ref LL_DMA_CHANNEL_1
4303 * @arg @ref LL_DMA_CHANNEL_2
4304 * @arg @ref LL_DMA_CHANNEL_3
4305 * @arg @ref LL_DMA_CHANNEL_4
4306 * @arg @ref LL_DMA_CHANNEL_5
4307 * @arg @ref LL_DMA_CHANNEL_6
4308 * @arg @ref LL_DMA_CHANNEL_7
4309 * @arg @ref LL_DMA_CHANNEL_8
4310 * @arg @ref LL_DMA_CHANNEL_9
4311 * @arg @ref LL_DMA_CHANNEL_10
4312 * @arg @ref LL_DMA_CHANNEL_11
4313 * @arg @ref LL_DMA_CHANNEL_12
4314 * @arg @ref LL_DMA_CHANNEL_13
4315 * @arg @ref LL_DMA_CHANNEL_14
4316 * @arg @ref LL_DMA_CHANNEL_15
4317 * @param BlkDataLength Between 0 to 0x0000FFFF
4318 * @retval None.
4319 */
LL_DMA_SetBlkDataLength(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkDataLength)4320 __STATIC_INLINE void LL_DMA_SetBlkDataLength(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t BlkDataLength)
4321 {
4322 uint32_t dma_base_addr = (uint32_t)DMAx;
4323 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BNDT,
4324 BlkDataLength);
4325 }
4326
4327 /**
4328 * @brief Get block data length in bytes to transfer.
4329 * @note This API is used for all available DMA channels.
4330 * @rmtoll CBR1 BNDT LL_DMA_GetBlkDataLength
4331 * @param DMAx DMAx Instance
4332 * @param Channel This parameter can be one of the following values:
4333 * @arg @ref LL_DMA_CHANNEL_0
4334 * @arg @ref LL_DMA_CHANNEL_1
4335 * @arg @ref LL_DMA_CHANNEL_2
4336 * @arg @ref LL_DMA_CHANNEL_3
4337 * @arg @ref LL_DMA_CHANNEL_4
4338 * @arg @ref LL_DMA_CHANNEL_5
4339 * @arg @ref LL_DMA_CHANNEL_6
4340 * @arg @ref LL_DMA_CHANNEL_7
4341 * @arg @ref LL_DMA_CHANNEL_8
4342 * @arg @ref LL_DMA_CHANNEL_9
4343 * @arg @ref LL_DMA_CHANNEL_10
4344 * @arg @ref LL_DMA_CHANNEL_11
4345 * @arg @ref LL_DMA_CHANNEL_12
4346 * @arg @ref LL_DMA_CHANNEL_13
4347 * @arg @ref LL_DMA_CHANNEL_14
4348 * @arg @ref LL_DMA_CHANNEL_15
4349 * @retval Between 0 to 0x0000FFFF
4350 */
LL_DMA_GetBlkDataLength(const DMA_TypeDef * DMAx,uint32_t Channel)4351 __STATIC_INLINE uint32_t LL_DMA_GetBlkDataLength(const DMA_TypeDef *DMAx, uint32_t Channel)
4352 {
4353 uint32_t dma_base_addr = (uint32_t)DMAx;
4354 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR1, DMA_CBR1_BNDT));
4355 }
4356
4357 /**
4358 * @brief Configure the source and destination addresses.
4359 * @note This API is used for all available DMA channels.
4360 * @note This API must not be called when the DMA Channel is enabled.
4361 * @rmtoll CSAR SA LL_DMA_ConfigAddresses\n
4362 * CDAR DA LL_DMA_ConfigAddresses
4363 * @param DMAx DMAx Instance
4364 * @param Channel This parameter can be one of the following values:
4365 * @arg @ref LL_DMA_CHANNEL_0
4366 * @arg @ref LL_DMA_CHANNEL_1
4367 * @arg @ref LL_DMA_CHANNEL_2
4368 * @arg @ref LL_DMA_CHANNEL_3
4369 * @arg @ref LL_DMA_CHANNEL_4
4370 * @arg @ref LL_DMA_CHANNEL_5
4371 * @arg @ref LL_DMA_CHANNEL_6
4372 * @arg @ref LL_DMA_CHANNEL_7
4373 * @arg @ref LL_DMA_CHANNEL_8
4374 * @arg @ref LL_DMA_CHANNEL_9
4375 * @arg @ref LL_DMA_CHANNEL_10
4376 * @arg @ref LL_DMA_CHANNEL_11
4377 * @arg @ref LL_DMA_CHANNEL_12
4378 * @arg @ref LL_DMA_CHANNEL_13
4379 * @arg @ref LL_DMA_CHANNEL_14
4380 * @arg @ref LL_DMA_CHANNEL_15
4381 * @param SrcAddress Between 0 to 0xFFFFFFFF
4382 * @param DestAddress Between 0 to 0xFFFFFFFF
4383 * @retval None.
4384 */
LL_DMA_ConfigAddresses(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddress,uint32_t DestAddress)4385 __STATIC_INLINE void LL_DMA_ConfigAddresses(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t
4386 DestAddress)
4387 {
4388 uint32_t dma_base_addr = (uint32_t)DMAx;
4389 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR, SrcAddress);
4390 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR, DestAddress);
4391 }
4392
4393 /**
4394 * @brief Set source address.
4395 * @note This API is used for all available DMA channels.
4396 * @rmtoll CSAR SA LL_DMA_SetSrcAddress
4397 * @param DMAx DMAx Instance
4398 * @param Channel This parameter can be one of the following values:
4399 * @arg @ref LL_DMA_CHANNEL_0
4400 * @arg @ref LL_DMA_CHANNEL_1
4401 * @arg @ref LL_DMA_CHANNEL_2
4402 * @arg @ref LL_DMA_CHANNEL_3
4403 * @arg @ref LL_DMA_CHANNEL_4
4404 * @arg @ref LL_DMA_CHANNEL_5
4405 * @arg @ref LL_DMA_CHANNEL_6
4406 * @arg @ref LL_DMA_CHANNEL_7
4407 * @arg @ref LL_DMA_CHANNEL_8
4408 * @arg @ref LL_DMA_CHANNEL_9
4409 * @arg @ref LL_DMA_CHANNEL_10
4410 * @arg @ref LL_DMA_CHANNEL_11
4411 * @arg @ref LL_DMA_CHANNEL_12
4412 * @arg @ref LL_DMA_CHANNEL_13
4413 * @arg @ref LL_DMA_CHANNEL_14
4414 * @arg @ref LL_DMA_CHANNEL_15
4415 * @param SrcAddress Between 0 to 0xFFFFFFFF
4416 * @retval None.
4417 */
LL_DMA_SetSrcAddress(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddress)4418 __STATIC_INLINE void LL_DMA_SetSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress)
4419 {
4420 uint32_t dma_base_addr = (uint32_t)DMAx;
4421 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR, SrcAddress);
4422 }
4423
4424 /**
4425 * @brief Get source address.
4426 * @note This API is used for all available DMA channels.
4427 * @rmtoll CSAR SA LL_DMA_GetSrcAddress
4428 * @param DMAx DMAx Instance
4429 * @param Channel This parameter can be one of the following values:
4430 * @arg @ref LL_DMA_CHANNEL_0
4431 * @arg @ref LL_DMA_CHANNEL_1
4432 * @arg @ref LL_DMA_CHANNEL_2
4433 * @arg @ref LL_DMA_CHANNEL_3
4434 * @arg @ref LL_DMA_CHANNEL_4
4435 * @arg @ref LL_DMA_CHANNEL_5
4436 * @arg @ref LL_DMA_CHANNEL_6
4437 * @arg @ref LL_DMA_CHANNEL_7
4438 * @arg @ref LL_DMA_CHANNEL_8
4439 * @arg @ref LL_DMA_CHANNEL_9
4440 * @arg @ref LL_DMA_CHANNEL_10
4441 * @arg @ref LL_DMA_CHANNEL_11
4442 * @arg @ref LL_DMA_CHANNEL_12
4443 * @arg @ref LL_DMA_CHANNEL_13
4444 * @arg @ref LL_DMA_CHANNEL_14
4445 * @arg @ref LL_DMA_CHANNEL_15
4446 * @retval Between 0 to 0xFFFFFFFF
4447 */
LL_DMA_GetSrcAddress(const DMA_TypeDef * DMAx,uint32_t Channel)4448 __STATIC_INLINE uint32_t LL_DMA_GetSrcAddress(const DMA_TypeDef *DMAx, uint32_t Channel)
4449 {
4450 uint32_t dma_base_addr = (uint32_t)DMAx;
4451 return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSAR));
4452 }
4453
4454 /**
4455 * @brief Set destination address.
4456 * @note This API is used for all available DMA channels.
4457 * @rmtoll CDAR DA LL_DMA_SetDestAddress
4458 * @param DMAx DMAx Instance
4459 * @param Channel This parameter can be one of the following values:
4460 * @arg @ref LL_DMA_CHANNEL_0
4461 * @arg @ref LL_DMA_CHANNEL_1
4462 * @arg @ref LL_DMA_CHANNEL_2
4463 * @arg @ref LL_DMA_CHANNEL_3
4464 * @arg @ref LL_DMA_CHANNEL_4
4465 * @arg @ref LL_DMA_CHANNEL_5
4466 * @arg @ref LL_DMA_CHANNEL_6
4467 * @arg @ref LL_DMA_CHANNEL_7
4468 * @arg @ref LL_DMA_CHANNEL_8
4469 * @arg @ref LL_DMA_CHANNEL_9
4470 * @arg @ref LL_DMA_CHANNEL_10
4471 * @arg @ref LL_DMA_CHANNEL_11
4472 * @arg @ref LL_DMA_CHANNEL_12
4473 * @arg @ref LL_DMA_CHANNEL_13
4474 * @arg @ref LL_DMA_CHANNEL_14
4475 * @arg @ref LL_DMA_CHANNEL_15
4476 * @param DestAddress Between 0 to 0xFFFFFFFF
4477 * @retval None.
4478 */
LL_DMA_SetDestAddress(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAddress)4479 __STATIC_INLINE void LL_DMA_SetDestAddress(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddress)
4480 {
4481 uint32_t dma_base_addr = (uint32_t)DMAx;
4482 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR, DestAddress);
4483 }
4484
4485 /**
4486 * @brief Get destination address.
4487 * @note This API is used for all available DMA channels.
4488 * @rmtoll CDAR DA LL_DMA_GetDestAddress
4489 * @param DMAx DMAx Instance
4490 * @param Channel This parameter can be one of the following values:
4491 * @arg @ref LL_DMA_CHANNEL_0
4492 * @arg @ref LL_DMA_CHANNEL_1
4493 * @arg @ref LL_DMA_CHANNEL_2
4494 * @arg @ref LL_DMA_CHANNEL_3
4495 * @arg @ref LL_DMA_CHANNEL_4
4496 * @arg @ref LL_DMA_CHANNEL_5
4497 * @arg @ref LL_DMA_CHANNEL_6
4498 * @arg @ref LL_DMA_CHANNEL_7
4499 * @arg @ref LL_DMA_CHANNEL_8
4500 * @arg @ref LL_DMA_CHANNEL_9
4501 * @arg @ref LL_DMA_CHANNEL_10
4502 * @arg @ref LL_DMA_CHANNEL_11
4503 * @arg @ref LL_DMA_CHANNEL_12
4504 * @arg @ref LL_DMA_CHANNEL_13
4505 * @arg @ref LL_DMA_CHANNEL_14
4506 * @arg @ref LL_DMA_CHANNEL_15
4507 * @retval Between 0 to 0xFFFFFFFF
4508 */
LL_DMA_GetDestAddress(const DMA_TypeDef * DMAx,uint32_t Channel)4509 __STATIC_INLINE uint32_t LL_DMA_GetDestAddress(const DMA_TypeDef *DMAx, uint32_t Channel)
4510 {
4511 uint32_t dma_base_addr = (uint32_t)DMAx;
4512 return (READ_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CDAR));
4513 }
4514
4515 /**
4516 * @brief Configure source and destination addresses offset.
4517 * @note This API is used only for 2D addressing channels.
4518 * @note This API must not be called when the DMA Channel is enabled.
4519 * @rmtoll CTR3 DAO LL_DMA_ConfigAddrUpdateValue\n
4520 * CTR3 SAO LL_DMA_ConfigAddrUpdateValue
4521 * @param DMAx DMAx Instance
4522 * @param Channel This parameter can be one of the following values:
4523 * @arg @ref LL_DMA_CHANNEL_12
4524 * @arg @ref LL_DMA_CHANNEL_13
4525 * @arg @ref LL_DMA_CHANNEL_14
4526 * @arg @ref LL_DMA_CHANNEL_15
4527 * @param DestAddrOffset Between 0 to 0x00001FFF
4528 * @param SrcAddrOffset Between 0 to 0x00001FFF
4529 * @retval None.
4530 */
LL_DMA_ConfigAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddrOffset,uint32_t DestAddrOffset)4531 __STATIC_INLINE void LL_DMA_ConfigAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrOffset,
4532 uint32_t DestAddrOffset)
4533 {
4534 uint32_t dma_base_addr = (uint32_t)DMAx;
4535 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3,
4536 (SrcAddrOffset & DMA_CTR3_SAO) | ((DestAddrOffset << DMA_CTR3_DAO_Pos) & DMA_CTR3_DAO));
4537 }
4538
4539 /**
4540 * @brief Set destination address offset.
4541 * @note This API is used only for 2D addressing channels.
4542 * @rmtoll CTR3 DAO LL_DMA_SetDestAddrUpdateValue
4543 * @param DMAx DMAx Instance
4544 * @param Channel This parameter can be one of the following values:
4545 * @arg @ref LL_DMA_CHANNEL_12
4546 * @arg @ref LL_DMA_CHANNEL_13
4547 * @arg @ref LL_DMA_CHANNEL_14
4548 * @arg @ref LL_DMA_CHANNEL_15
4549 * @param DestAddrOffset Between 0 to 0x00001FFF
4550 * @retval None.
4551 */
LL_DMA_SetDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t DestAddrOffset)4552 __STATIC_INLINE void LL_DMA_SetDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t DestAddrOffset)
4553 {
4554 uint32_t dma_base_addr = (uint32_t)DMAx;
4555 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_DAO,
4556 ((DestAddrOffset << DMA_CTR3_DAO_Pos) & DMA_CTR3_DAO));
4557 }
4558
4559 /**
4560 * @brief Get destination address offset.
4561 * @note This API is used only for 2D addressing channels.
4562 * @rmtoll CDAR DAO LL_DMA_GetDestAddrUpdateValue
4563 * @param DMAx DMAx Instance
4564 * @param Channel This parameter can be one of the following values:
4565 * @arg @ref LL_DMA_CHANNEL_12
4566 * @arg @ref LL_DMA_CHANNEL_13
4567 * @arg @ref LL_DMA_CHANNEL_14
4568 * @arg @ref LL_DMA_CHANNEL_15
4569 * @retval Between 0 to 0x00001FFF
4570 */
LL_DMA_GetDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)4571 __STATIC_INLINE uint32_t LL_DMA_GetDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
4572 {
4573 uint32_t dma_base_addr = (uint32_t)DMAx;
4574 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3,
4575 DMA_CTR3_DAO) >> DMA_CTR3_DAO_Pos);
4576 }
4577
4578 /**
4579 * @brief Set source address offset.
4580 * @note This API is used only for 2D addressing channels.
4581 * @rmtoll CTR3 SAO LL_DMA_SetSrcAddrUpdateValue
4582 * @param DMAx DMAx Instance
4583 * @param Channel This parameter can be one of the following values:
4584 * @arg @ref LL_DMA_CHANNEL_12
4585 * @arg @ref LL_DMA_CHANNEL_13
4586 * @arg @ref LL_DMA_CHANNEL_14
4587 * @arg @ref LL_DMA_CHANNEL_15
4588 * @param SrcAddrOffset Between 0 to 0x00001FFF
4589 * @retval None.
4590 */
LL_DMA_SetSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t SrcAddrOffset)4591 __STATIC_INLINE void LL_DMA_SetSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddrOffset)
4592 {
4593 uint32_t dma_base_addr = (uint32_t)DMAx;
4594 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_SAO,
4595 SrcAddrOffset & DMA_CTR3_SAO);
4596 }
4597
4598 /**
4599 * @brief Get source address offset.
4600 * @note This API is used only for 2D addressing channels.
4601 * @rmtoll CTR3 SAO LL_DMA_GetSrcAddrUpdateValue
4602 * @param DMAx DMAx Instance
4603 * @param Channel This parameter can be one of the following values:
4604 * @arg @ref LL_DMA_CHANNEL_12
4605 * @arg @ref LL_DMA_CHANNEL_13
4606 * @arg @ref LL_DMA_CHANNEL_14
4607 * @arg @ref LL_DMA_CHANNEL_15
4608 * @retval Between 0 to 0x00001FFF
4609 */
LL_DMA_GetSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)4610 __STATIC_INLINE uint32_t LL_DMA_GetSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
4611 {
4612 uint32_t dma_base_addr = (uint32_t)DMAx;
4613 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CTR3, DMA_CTR3_SAO));
4614 }
4615
4616 /**
4617 * @brief Configure the block repeated source and destination addresses offset.
4618 * @note This API is used only for 2D addressing channels.
4619 * @note This API must not be called when the DMA Channel is enabled.
4620 * @rmtoll CBR2 BRDAO LL_DMA_ConfigBlkRptAddrUpdateValue\n
4621 * CBR2 BRSAO LL_DMA_ConfigBlkRptAddrUpdateValue
4622 * @param DMAx DMAx Instance
4623 * @param Channel This parameter can be one of the following values:
4624 * @arg @ref LL_DMA_CHANNEL_12
4625 * @arg @ref LL_DMA_CHANNEL_13
4626 * @arg @ref LL_DMA_CHANNEL_14
4627 * @arg @ref LL_DMA_CHANNEL_15
4628 * @param BlkRptDestAddrOffset Between 0 to 0x0000FFFF
4629 * @param BlkRptSrcAddrOffset Between 0 to 0x0000FFFF
4630 * @retval None.
4631 */
LL_DMA_ConfigBlkRptAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptSrcAddrOffset,uint32_t BlkRptDestAddrOffset)4632 __STATIC_INLINE void LL_DMA_ConfigBlkRptAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
4633 uint32_t BlkRptSrcAddrOffset, uint32_t BlkRptDestAddrOffset)
4634 {
4635 uint32_t dma_base_addr = (uint32_t)DMAx;
4636 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2,
4637 ((BlkRptDestAddrOffset << DMA_CBR2_BRDAO_Pos) & DMA_CBR2_BRDAO) | (BlkRptSrcAddrOffset & DMA_CBR2_BRSAO));
4638 }
4639
4640 /**
4641 * @brief Set block repeated destination address offset.
4642 * @note This API is used only for 2D addressing channels.
4643 * @rmtoll CBR2 BRDAO LL_DMA_SetBlkRptDestAddrUpdateValue
4644 * @param DMAx DMAx Instance
4645 * @param Channel This parameter can be one of the following values:
4646 * @arg @ref LL_DMA_CHANNEL_12
4647 * @arg @ref LL_DMA_CHANNEL_13
4648 * @arg @ref LL_DMA_CHANNEL_14
4649 * @arg @ref LL_DMA_CHANNEL_15
4650 * @param BlkRptDestAddrOffset Between 0 to 0x0000FFFF
4651 * @retval None.
4652 */
LL_DMA_SetBlkRptDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptDestAddrOffset)4653 __STATIC_INLINE void LL_DMA_SetBlkRptDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
4654 uint32_t BlkRptDestAddrOffset)
4655 {
4656 uint32_t dma_base_addr = (uint32_t)DMAx;
4657 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRDAO,
4658 ((BlkRptDestAddrOffset << DMA_CBR2_BRDAO_Pos) & DMA_CBR2_BRDAO));
4659 }
4660
4661 /**
4662 * @brief Get block repeated destination address offset.
4663 * @note This API is used only for 2D addressing channels.
4664 * @rmtoll CBR2 BRDAO LL_DMA_GetBlkRptDestAddrUpdateValue
4665 * @param DMAx DMAx Instance
4666 * @param Channel This parameter can be one of the following values:
4667 * @arg @ref LL_DMA_CHANNEL_12
4668 * @arg @ref LL_DMA_CHANNEL_13
4669 * @arg @ref LL_DMA_CHANNEL_14
4670 * @arg @ref LL_DMA_CHANNEL_15
4671 * @retval Between 0 to 0x0000FFFF.
4672 */
LL_DMA_GetBlkRptDestAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)4673 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptDestAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
4674 {
4675 uint32_t dma_base_addr = (uint32_t)DMAx;
4676 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2,
4677 DMA_CBR2_BRDAO) >> DMA_CBR2_BRDAO_Pos);
4678 }
4679
4680 /**
4681 * @brief Set block repeated source address offset.
4682 * @note This API is used only for 2D addressing channels.
4683 * @rmtoll CBR2 BRSAO LL_DMA_SetBlkRptSrcAddrUpdateValue
4684 * @param DMAx DMAx Instance
4685 * @param Channel This parameter can be one of the following values:
4686 * @arg @ref LL_DMA_CHANNEL_12
4687 * @arg @ref LL_DMA_CHANNEL_13
4688 * @arg @ref LL_DMA_CHANNEL_14
4689 * @arg @ref LL_DMA_CHANNEL_15
4690 * @param BlkRptSrcAddrOffset Between 0 to 0x0000FFFF
4691 * @retval None.
4692 */
LL_DMA_SetBlkRptSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t BlkRptSrcAddrOffset)4693 __STATIC_INLINE void LL_DMA_SetBlkRptSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel,
4694 uint32_t BlkRptSrcAddrOffset)
4695 {
4696 uint32_t dma_base_addr = (uint32_t)DMAx;
4697 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRSAO,
4698 BlkRptSrcAddrOffset);
4699 }
4700
4701 /**
4702 * @brief Get block repeated source address offset.
4703 * @note This API is used only for 2D addressing channels.
4704 * @rmtoll CBR2 BRSAO LL_DMA_GetBlkRptSrcAddrUpdateValue
4705 * @param DMAx DMAx Instance
4706 * @param Channel This parameter can be one of the following values:
4707 * @arg @ref LL_DMA_CHANNEL_12
4708 * @arg @ref LL_DMA_CHANNEL_13
4709 * @arg @ref LL_DMA_CHANNEL_14
4710 * @arg @ref LL_DMA_CHANNEL_15
4711 * @retval Between 0 to 0x0000FFFF
4712 */
LL_DMA_GetBlkRptSrcAddrUpdateValue(const DMA_TypeDef * DMAx,uint32_t Channel)4713 __STATIC_INLINE uint32_t LL_DMA_GetBlkRptSrcAddrUpdateValue(const DMA_TypeDef *DMAx, uint32_t Channel)
4714 {
4715 uint32_t dma_base_addr = (uint32_t)DMAx;
4716 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CBR2, DMA_CBR2_BRSAO));
4717 }
4718
4719 /**
4720 * @brief Configure registers update and node address offset during the link transfer.
4721 * @note This API is used for all available DMA channels.
4722 * For linear addressing channels, UT3 and UB2 fields are discarded.
4723 * @rmtoll CLLR UT1 LL_DMA_ConfigLinkUpdate\n
4724 * @rmtoll CLLR UT2 LL_DMA_ConfigLinkUpdate\n
4725 * @rmtoll CLLR UB1 LL_DMA_ConfigLinkUpdate\n
4726 * @rmtoll CLLR USA LL_DMA_ConfigLinkUpdate\n
4727 * @rmtoll CLLR UDA LL_DMA_ConfigLinkUpdate\n
4728 * @rmtoll CLLR UT3 LL_DMA_ConfigLinkUpdate\n
4729 * @rmtoll CLLR UB2 LL_DMA_ConfigLinkUpdate\n
4730 * @rmtoll CLLR ULL LL_DMA_ConfigLinkUpdate
4731 * @param DMAx DMAx Instance
4732 * @param Channel This parameter can be one of the following values:
4733 * @arg @ref LL_DMA_CHANNEL_0
4734 * @arg @ref LL_DMA_CHANNEL_1
4735 * @arg @ref LL_DMA_CHANNEL_2
4736 * @arg @ref LL_DMA_CHANNEL_3
4737 * @arg @ref LL_DMA_CHANNEL_4
4738 * @arg @ref LL_DMA_CHANNEL_5
4739 * @arg @ref LL_DMA_CHANNEL_6
4740 * @arg @ref LL_DMA_CHANNEL_7
4741 * @arg @ref LL_DMA_CHANNEL_8
4742 * @arg @ref LL_DMA_CHANNEL_9
4743 * @arg @ref LL_DMA_CHANNEL_10
4744 * @arg @ref LL_DMA_CHANNEL_11
4745 * @arg @ref LL_DMA_CHANNEL_12
4746 * @arg @ref LL_DMA_CHANNEL_13
4747 * @arg @ref LL_DMA_CHANNEL_14
4748 * @arg @ref LL_DMA_CHANNEL_15
4749 * @param RegistersUpdate This parameter must be a combination of all the following values:
4750 * @arg @ref LL_DMA_UPDATE_CTR1
4751 * @arg @ref LL_DMA_UPDATE_CTR2
4752 * @arg @ref LL_DMA_UPDATE_CBR1
4753 * @arg @ref LL_DMA_UPDATE_CSAR
4754 * @arg @ref LL_DMA_UPDATE_CDAR
4755 * @arg @ref LL_DMA_UPDATE_CTR3 (This value is allowed only for 2D addressing channels)
4756 * @arg @ref LL_DMA_UPDATE_CBR2 (This value is allowed only for 2D addressing channels)
4757 * @arg @ref LL_DMA_UPDATE_CLLR
4758 * @param LinkedListAddrOffset Between 0 to 0x0000FFFC by increment of 4 Bytes.
4759 * @retval None.
4760 */
LL_DMA_ConfigLinkUpdate(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t RegistersUpdate,uint32_t LinkedListAddrOffset)4761 __STATIC_INLINE void LL_DMA_ConfigLinkUpdate(const DMA_TypeDef *DMAx, uint32_t Channel, uint32_t RegistersUpdate,
4762 uint32_t LinkedListAddrOffset)
4763 {
4764 uint32_t dma_base_addr = (uint32_t)DMAx;
4765 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR,
4766 (DMA_CLLR_UT1 | DMA_CLLR_UT2 | DMA_CLLR_UB1 | DMA_CLLR_USA | DMA_CLLR_UDA | DMA_CLLR_UT3 | \
4767 DMA_CLLR_UB2 | DMA_CLLR_ULL | DMA_CLLR_LA), (RegistersUpdate | (LinkedListAddrOffset & DMA_CLLR_LA)));
4768 }
4769
4770 /**
4771 * @brief Enable CTR1 update during the link transfer.
4772 * @note This API is used for all available DMA channels.
4773 * @rmtoll CLLR UT1 LL_DMA_EnableCTR1Update
4774 * @param DMAx DMAx Instance
4775 * @param Channel This parameter can be one of the following values:
4776 * @arg @ref LL_DMA_CHANNEL_0
4777 * @arg @ref LL_DMA_CHANNEL_1
4778 * @arg @ref LL_DMA_CHANNEL_2
4779 * @arg @ref LL_DMA_CHANNEL_3
4780 * @arg @ref LL_DMA_CHANNEL_4
4781 * @arg @ref LL_DMA_CHANNEL_5
4782 * @arg @ref LL_DMA_CHANNEL_6
4783 * @arg @ref LL_DMA_CHANNEL_7
4784 * @arg @ref LL_DMA_CHANNEL_8
4785 * @arg @ref LL_DMA_CHANNEL_9
4786 * @arg @ref LL_DMA_CHANNEL_10
4787 * @arg @ref LL_DMA_CHANNEL_11
4788 * @arg @ref LL_DMA_CHANNEL_12
4789 * @arg @ref LL_DMA_CHANNEL_13
4790 * @arg @ref LL_DMA_CHANNEL_14
4791 * @arg @ref LL_DMA_CHANNEL_15
4792 * @retval None.
4793 */
LL_DMA_EnableCTR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)4794 __STATIC_INLINE void LL_DMA_EnableCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4795 {
4796 uint32_t dma_base_addr = (uint32_t)DMAx;
4797 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1);
4798 }
4799
4800 /**
4801 * @brief Disable CTR1 update during the link transfer.
4802 * @note This API is used for all available DMA channels.
4803 * @rmtoll CLLR UT1 LL_DMA_DisableCTR1Update
4804 * @param DMAx DMAx Instance
4805 * @param Channel This parameter can be one of the following values:
4806 * @arg @ref LL_DMA_CHANNEL_0
4807 * @arg @ref LL_DMA_CHANNEL_1
4808 * @arg @ref LL_DMA_CHANNEL_2
4809 * @arg @ref LL_DMA_CHANNEL_3
4810 * @arg @ref LL_DMA_CHANNEL_4
4811 * @arg @ref LL_DMA_CHANNEL_5
4812 * @arg @ref LL_DMA_CHANNEL_6
4813 * @arg @ref LL_DMA_CHANNEL_7
4814 * @arg @ref LL_DMA_CHANNEL_8
4815 * @arg @ref LL_DMA_CHANNEL_9
4816 * @arg @ref LL_DMA_CHANNEL_10
4817 * @arg @ref LL_DMA_CHANNEL_11
4818 * @arg @ref LL_DMA_CHANNEL_12
4819 * @arg @ref LL_DMA_CHANNEL_13
4820 * @arg @ref LL_DMA_CHANNEL_14
4821 * @arg @ref LL_DMA_CHANNEL_15
4822 * @retval None.
4823 */
LL_DMA_DisableCTR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)4824 __STATIC_INLINE void LL_DMA_DisableCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4825 {
4826 uint32_t dma_base_addr = (uint32_t)DMAx;
4827 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1);
4828 }
4829
4830 /**
4831 * @brief Check if CTR1 update during the link transfer is enabled.
4832 * @note This API is used for all available DMA channels.
4833 * @rmtoll CLLR UT1 LL_DMA_IsEnabledCTR1Update
4834 * @param DMAx DMAx Instance
4835 * @param Channel This parameter can be one of the following values:
4836 * @arg @ref LL_DMA_CHANNEL_0
4837 * @arg @ref LL_DMA_CHANNEL_1
4838 * @arg @ref LL_DMA_CHANNEL_2
4839 * @arg @ref LL_DMA_CHANNEL_3
4840 * @arg @ref LL_DMA_CHANNEL_4
4841 * @arg @ref LL_DMA_CHANNEL_5
4842 * @arg @ref LL_DMA_CHANNEL_6
4843 * @arg @ref LL_DMA_CHANNEL_7
4844 * @arg @ref LL_DMA_CHANNEL_8
4845 * @arg @ref LL_DMA_CHANNEL_9
4846 * @arg @ref LL_DMA_CHANNEL_10
4847 * @arg @ref LL_DMA_CHANNEL_11
4848 * @arg @ref LL_DMA_CHANNEL_12
4849 * @arg @ref LL_DMA_CHANNEL_13
4850 * @arg @ref LL_DMA_CHANNEL_14
4851 * @arg @ref LL_DMA_CHANNEL_15
4852 * @retval State of bit (1 or 0).
4853 */
LL_DMA_IsEnabledCTR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)4854 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4855 {
4856 uint32_t dma_base_addr = (uint32_t)DMAx;
4857 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT1)
4858 == (DMA_CLLR_UT1)) ? 1UL : 0UL);
4859 }
4860
4861 /**
4862 * @brief Enable CTR2 update during the link transfer.
4863 * @note This API is used for all available DMA channels.
4864 * @rmtoll CLLR UT2 LL_DMA_EnableCTR2Update
4865 * @param DMAx DMAx Instance
4866 * @param Channel This parameter can be one of the following values:
4867 * @arg @ref LL_DMA_CHANNEL_0
4868 * @arg @ref LL_DMA_CHANNEL_1
4869 * @arg @ref LL_DMA_CHANNEL_2
4870 * @arg @ref LL_DMA_CHANNEL_3
4871 * @arg @ref LL_DMA_CHANNEL_4
4872 * @arg @ref LL_DMA_CHANNEL_5
4873 * @arg @ref LL_DMA_CHANNEL_6
4874 * @arg @ref LL_DMA_CHANNEL_7
4875 * @arg @ref LL_DMA_CHANNEL_8
4876 * @arg @ref LL_DMA_CHANNEL_9
4877 * @arg @ref LL_DMA_CHANNEL_10
4878 * @arg @ref LL_DMA_CHANNEL_11
4879 * @arg @ref LL_DMA_CHANNEL_12
4880 * @arg @ref LL_DMA_CHANNEL_13
4881 * @arg @ref LL_DMA_CHANNEL_14
4882 * @arg @ref LL_DMA_CHANNEL_15
4883 * @retval None.
4884 */
LL_DMA_EnableCTR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)4885 __STATIC_INLINE void LL_DMA_EnableCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4886 {
4887 uint32_t dma_base_addr = (uint32_t)DMAx;
4888 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2);
4889 }
4890
4891 /**
4892 * @brief Disable CTR2 update during the link transfer.
4893 * @note This API is used for all available DMA channels.
4894 * @rmtoll CLLR UT2 LL_DMA_DisableCTR2Update
4895 * @param DMAx DMAx Instance
4896 * @param Channel This parameter can be one of the following values:
4897 * @arg @ref LL_DMA_CHANNEL_0
4898 * @arg @ref LL_DMA_CHANNEL_1
4899 * @arg @ref LL_DMA_CHANNEL_2
4900 * @arg @ref LL_DMA_CHANNEL_3
4901 * @arg @ref LL_DMA_CHANNEL_4
4902 * @arg @ref LL_DMA_CHANNEL_5
4903 * @arg @ref LL_DMA_CHANNEL_6
4904 * @arg @ref LL_DMA_CHANNEL_7
4905 * @arg @ref LL_DMA_CHANNEL_8
4906 * @arg @ref LL_DMA_CHANNEL_9
4907 * @arg @ref LL_DMA_CHANNEL_10
4908 * @arg @ref LL_DMA_CHANNEL_11
4909 * @arg @ref LL_DMA_CHANNEL_12
4910 * @arg @ref LL_DMA_CHANNEL_13
4911 * @arg @ref LL_DMA_CHANNEL_14
4912 * @arg @ref LL_DMA_CHANNEL_15
4913 * @retval None.
4914 */
LL_DMA_DisableCTR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)4915 __STATIC_INLINE void LL_DMA_DisableCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4916 {
4917 uint32_t dma_base_addr = (uint32_t)DMAx;
4918 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2);
4919 }
4920
4921 /**
4922 * @brief Check if CTR2 update during the link transfer is enabled.
4923 * @note This API is used for all available DMA channels.
4924 * @rmtoll CLLR UT2 LL_DMA_IsEnabledCTR2Update
4925 * @param DMAx DMAx Instance
4926 * @param Channel This parameter can be one of the following values:
4927 * @arg @ref LL_DMA_CHANNEL_0
4928 * @arg @ref LL_DMA_CHANNEL_1
4929 * @arg @ref LL_DMA_CHANNEL_2
4930 * @arg @ref LL_DMA_CHANNEL_3
4931 * @arg @ref LL_DMA_CHANNEL_4
4932 * @arg @ref LL_DMA_CHANNEL_5
4933 * @arg @ref LL_DMA_CHANNEL_6
4934 * @arg @ref LL_DMA_CHANNEL_7
4935 * @arg @ref LL_DMA_CHANNEL_8
4936 * @arg @ref LL_DMA_CHANNEL_9
4937 * @arg @ref LL_DMA_CHANNEL_10
4938 * @arg @ref LL_DMA_CHANNEL_11
4939 * @arg @ref LL_DMA_CHANNEL_12
4940 * @arg @ref LL_DMA_CHANNEL_13
4941 * @arg @ref LL_DMA_CHANNEL_14
4942 * @arg @ref LL_DMA_CHANNEL_15
4943 * @retval State of bit (1 or 0).
4944 */
LL_DMA_IsEnabledCTR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)4945 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4946 {
4947 uint32_t dma_base_addr = (uint32_t)DMAx;
4948 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT2)
4949 == (DMA_CLLR_UT2)) ? 1UL : 0UL);
4950 }
4951
4952 /**
4953 * @brief Enable CBR1 update during the link transfer.
4954 * @note This API is used for all available DMA channels.
4955 * @rmtoll CLLR UB1 LL_DMA_EnableCBR1Update
4956 * @param DMAx DMAx Instance
4957 * @param Channel This parameter can be one of the following values:
4958 * @arg @ref LL_DMA_CHANNEL_0
4959 * @arg @ref LL_DMA_CHANNEL_1
4960 * @arg @ref LL_DMA_CHANNEL_2
4961 * @arg @ref LL_DMA_CHANNEL_3
4962 * @arg @ref LL_DMA_CHANNEL_4
4963 * @arg @ref LL_DMA_CHANNEL_5
4964 * @arg @ref LL_DMA_CHANNEL_6
4965 * @arg @ref LL_DMA_CHANNEL_7
4966 * @arg @ref LL_DMA_CHANNEL_8
4967 * @arg @ref LL_DMA_CHANNEL_9
4968 * @arg @ref LL_DMA_CHANNEL_10
4969 * @arg @ref LL_DMA_CHANNEL_11
4970 * @arg @ref LL_DMA_CHANNEL_12
4971 * @arg @ref LL_DMA_CHANNEL_13
4972 * @arg @ref LL_DMA_CHANNEL_14
4973 * @arg @ref LL_DMA_CHANNEL_15
4974 * @retval None.
4975 */
LL_DMA_EnableCBR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)4976 __STATIC_INLINE void LL_DMA_EnableCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
4977 {
4978 uint32_t dma_base_addr = (uint32_t)DMAx;
4979 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1);
4980 }
4981
4982 /**
4983 * @brief Disable CBR1 update during the link transfer.
4984 * @note This API is used for all available DMA channels.
4985 * @rmtoll CLLR UB1 LL_DMA_DisableCBR1Update
4986 * @param DMAx DMAx Instance
4987 * @param Channel This parameter can be one of the following values:
4988 * @arg @ref LL_DMA_CHANNEL_0
4989 * @arg @ref LL_DMA_CHANNEL_1
4990 * @arg @ref LL_DMA_CHANNEL_2
4991 * @arg @ref LL_DMA_CHANNEL_3
4992 * @arg @ref LL_DMA_CHANNEL_4
4993 * @arg @ref LL_DMA_CHANNEL_5
4994 * @arg @ref LL_DMA_CHANNEL_6
4995 * @arg @ref LL_DMA_CHANNEL_7
4996 * @arg @ref LL_DMA_CHANNEL_8
4997 * @arg @ref LL_DMA_CHANNEL_9
4998 * @arg @ref LL_DMA_CHANNEL_10
4999 * @arg @ref LL_DMA_CHANNEL_11
5000 * @arg @ref LL_DMA_CHANNEL_12
5001 * @arg @ref LL_DMA_CHANNEL_13
5002 * @arg @ref LL_DMA_CHANNEL_14
5003 * @arg @ref LL_DMA_CHANNEL_15
5004 * @retval None.
5005 */
LL_DMA_DisableCBR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)5006 __STATIC_INLINE void LL_DMA_DisableCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5007 {
5008 uint32_t dma_base_addr = (uint32_t)DMAx;
5009 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1);
5010 }
5011
5012 /**
5013 * @brief Check if CBR1 update during the link transfer is enabled.
5014 * @note This API is used for all available DMA channels.
5015 * @rmtoll CLLR UB1 LL_DMA_IsEnabledCBR1Update
5016 * @param DMAx DMAx Instance
5017 * @param Channel This parameter can be one of the following values:
5018 * @arg @ref LL_DMA_CHANNEL_0
5019 * @arg @ref LL_DMA_CHANNEL_1
5020 * @arg @ref LL_DMA_CHANNEL_2
5021 * @arg @ref LL_DMA_CHANNEL_3
5022 * @arg @ref LL_DMA_CHANNEL_4
5023 * @arg @ref LL_DMA_CHANNEL_5
5024 * @arg @ref LL_DMA_CHANNEL_6
5025 * @arg @ref LL_DMA_CHANNEL_7
5026 * @arg @ref LL_DMA_CHANNEL_8
5027 * @arg @ref LL_DMA_CHANNEL_9
5028 * @arg @ref LL_DMA_CHANNEL_10
5029 * @arg @ref LL_DMA_CHANNEL_11
5030 * @arg @ref LL_DMA_CHANNEL_12
5031 * @arg @ref LL_DMA_CHANNEL_13
5032 * @arg @ref LL_DMA_CHANNEL_14
5033 * @arg @ref LL_DMA_CHANNEL_15
5034 * @retval State of bit (1 or 0).
5035 */
LL_DMA_IsEnabledCBR1Update(const DMA_TypeDef * DMAx,uint32_t Channel)5036 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCBR1Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5037 {
5038 uint32_t dma_base_addr = (uint32_t)DMAx;
5039 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB1)
5040 == (DMA_CLLR_UB1)) ? 1UL : 0UL);
5041 }
5042
5043 /**
5044 * @brief Enable CSAR update during the link transfer.
5045 * @note This API is used for all available DMA channels.
5046 * @rmtoll CLLR USA LL_DMA_EnableCSARUpdate
5047 * @param DMAx DMAx Instance
5048 * @param Channel This parameter can be one of the following values:
5049 * @arg @ref LL_DMA_CHANNEL_0
5050 * @arg @ref LL_DMA_CHANNEL_1
5051 * @arg @ref LL_DMA_CHANNEL_2
5052 * @arg @ref LL_DMA_CHANNEL_3
5053 * @arg @ref LL_DMA_CHANNEL_4
5054 * @arg @ref LL_DMA_CHANNEL_5
5055 * @arg @ref LL_DMA_CHANNEL_6
5056 * @arg @ref LL_DMA_CHANNEL_7
5057 * @arg @ref LL_DMA_CHANNEL_8
5058 * @arg @ref LL_DMA_CHANNEL_9
5059 * @arg @ref LL_DMA_CHANNEL_10
5060 * @arg @ref LL_DMA_CHANNEL_11
5061 * @arg @ref LL_DMA_CHANNEL_12
5062 * @arg @ref LL_DMA_CHANNEL_13
5063 * @arg @ref LL_DMA_CHANNEL_14
5064 * @arg @ref LL_DMA_CHANNEL_15
5065 * @retval None.
5066 */
LL_DMA_EnableCSARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5067 __STATIC_INLINE void LL_DMA_EnableCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5068 {
5069 uint32_t dma_base_addr = (uint32_t)DMAx;
5070 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA);
5071 }
5072
5073 /**
5074 * @brief Disable CSAR update during the link transfer.
5075 * @note This API is used for all available DMA channels.
5076 * @rmtoll CLLR USA LL_DMA_DisableCSARUpdate
5077 * @param DMAx DMAx Instance
5078 * @param Channel This parameter can be one of the following values:
5079 * @arg @ref LL_DMA_CHANNEL_0
5080 * @arg @ref LL_DMA_CHANNEL_1
5081 * @arg @ref LL_DMA_CHANNEL_2
5082 * @arg @ref LL_DMA_CHANNEL_3
5083 * @arg @ref LL_DMA_CHANNEL_4
5084 * @arg @ref LL_DMA_CHANNEL_5
5085 * @arg @ref LL_DMA_CHANNEL_6
5086 * @arg @ref LL_DMA_CHANNEL_7
5087 * @arg @ref LL_DMA_CHANNEL_8
5088 * @arg @ref LL_DMA_CHANNEL_9
5089 * @arg @ref LL_DMA_CHANNEL_10
5090 * @arg @ref LL_DMA_CHANNEL_11
5091 * @arg @ref LL_DMA_CHANNEL_12
5092 * @arg @ref LL_DMA_CHANNEL_13
5093 * @arg @ref LL_DMA_CHANNEL_14
5094 * @arg @ref LL_DMA_CHANNEL_15
5095 * @retval None.
5096 */
LL_DMA_DisableCSARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5097 __STATIC_INLINE void LL_DMA_DisableCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5098 {
5099 uint32_t dma_base_addr = (uint32_t)DMAx;
5100 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA);
5101 }
5102
5103 /**
5104 * @brief Check if CSAR update during the link transfer is enabled.
5105 * @note This API is used for all available DMA channels.
5106 * @rmtoll CLLR USA LL_DMA_IsEnabledCSARUpdate
5107 * @param DMAx DMAx Instance
5108 * @param Channel This parameter can be one of the following values:
5109 * @arg @ref LL_DMA_CHANNEL_0
5110 * @arg @ref LL_DMA_CHANNEL_1
5111 * @arg @ref LL_DMA_CHANNEL_2
5112 * @arg @ref LL_DMA_CHANNEL_3
5113 * @arg @ref LL_DMA_CHANNEL_4
5114 * @arg @ref LL_DMA_CHANNEL_5
5115 * @arg @ref LL_DMA_CHANNEL_6
5116 * @arg @ref LL_DMA_CHANNEL_7
5117 * @arg @ref LL_DMA_CHANNEL_8
5118 * @arg @ref LL_DMA_CHANNEL_9
5119 * @arg @ref LL_DMA_CHANNEL_10
5120 * @arg @ref LL_DMA_CHANNEL_11
5121 * @arg @ref LL_DMA_CHANNEL_12
5122 * @arg @ref LL_DMA_CHANNEL_13
5123 * @arg @ref LL_DMA_CHANNEL_14
5124 * @arg @ref LL_DMA_CHANNEL_15
5125 * @retval State of bit (1 or 0).
5126 */
LL_DMA_IsEnabledCSARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5127 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCSARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5128 {
5129 uint32_t dma_base_addr = (uint32_t)DMAx;
5130 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_USA)
5131 == (DMA_CLLR_USA)) ? 1UL : 0UL);
5132 }
5133
5134 /**
5135 * @brief Enable CDAR update during the link transfer.
5136 * @note This API is used for all available DMA channels.
5137 * @rmtoll CLLR UDA LL_DMA_EnableCDARUpdate
5138 * @param DMAx DMAx Instance
5139 * @param Channel This parameter can be one of the following values:
5140 * @arg @ref LL_DMA_CHANNEL_0
5141 * @arg @ref LL_DMA_CHANNEL_1
5142 * @arg @ref LL_DMA_CHANNEL_2
5143 * @arg @ref LL_DMA_CHANNEL_3
5144 * @arg @ref LL_DMA_CHANNEL_4
5145 * @arg @ref LL_DMA_CHANNEL_5
5146 * @arg @ref LL_DMA_CHANNEL_6
5147 * @arg @ref LL_DMA_CHANNEL_7
5148 * @arg @ref LL_DMA_CHANNEL_8
5149 * @arg @ref LL_DMA_CHANNEL_9
5150 * @arg @ref LL_DMA_CHANNEL_10
5151 * @arg @ref LL_DMA_CHANNEL_11
5152 * @arg @ref LL_DMA_CHANNEL_12
5153 * @arg @ref LL_DMA_CHANNEL_13
5154 * @arg @ref LL_DMA_CHANNEL_14
5155 * @arg @ref LL_DMA_CHANNEL_15
5156 * @retval None.
5157 */
LL_DMA_EnableCDARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5158 __STATIC_INLINE void LL_DMA_EnableCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5159 {
5160 uint32_t dma_base_addr = (uint32_t)DMAx;
5161 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA);
5162 }
5163
5164 /**
5165 * @brief Disable CDAR update during the link transfer.
5166 * @note This API is used for all available DMA channels.
5167 * @rmtoll CLLR UDA LL_DMA_DisableCDARUpdate
5168 * @param DMAx DMAx Instance
5169 * @param Channel This parameter can be one of the following values:
5170 * @arg @ref LL_DMA_CHANNEL_0
5171 * @arg @ref LL_DMA_CHANNEL_1
5172 * @arg @ref LL_DMA_CHANNEL_2
5173 * @arg @ref LL_DMA_CHANNEL_3
5174 * @arg @ref LL_DMA_CHANNEL_4
5175 * @arg @ref LL_DMA_CHANNEL_5
5176 * @arg @ref LL_DMA_CHANNEL_6
5177 * @arg @ref LL_DMA_CHANNEL_7
5178 * @arg @ref LL_DMA_CHANNEL_8
5179 * @arg @ref LL_DMA_CHANNEL_9
5180 * @arg @ref LL_DMA_CHANNEL_10
5181 * @arg @ref LL_DMA_CHANNEL_11
5182 * @arg @ref LL_DMA_CHANNEL_12
5183 * @arg @ref LL_DMA_CHANNEL_13
5184 * @arg @ref LL_DMA_CHANNEL_14
5185 * @arg @ref LL_DMA_CHANNEL_15
5186 * @retval None.
5187 */
LL_DMA_DisableCDARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5188 __STATIC_INLINE void LL_DMA_DisableCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5189 {
5190 uint32_t dma_base_addr = (uint32_t)DMAx;
5191 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA);
5192 }
5193
5194 /**
5195 * @brief Check if CDAR update during the link transfer is enabled.
5196 * @note This API is used for all available DMA channels.
5197 * @rmtoll CLLR UDA LL_DMA_IsEnabledCDARUpdate
5198 * @param DMAx DMAx Instance
5199 * @param Channel This parameter can be one of the following values:
5200 * @arg @ref LL_DMA_CHANNEL_0
5201 * @arg @ref LL_DMA_CHANNEL_1
5202 * @arg @ref LL_DMA_CHANNEL_2
5203 * @arg @ref LL_DMA_CHANNEL_3
5204 * @arg @ref LL_DMA_CHANNEL_4
5205 * @arg @ref LL_DMA_CHANNEL_5
5206 * @arg @ref LL_DMA_CHANNEL_6
5207 * @arg @ref LL_DMA_CHANNEL_7
5208 * @arg @ref LL_DMA_CHANNEL_8
5209 * @arg @ref LL_DMA_CHANNEL_9
5210 * @arg @ref LL_DMA_CHANNEL_10
5211 * @arg @ref LL_DMA_CHANNEL_11
5212 * @arg @ref LL_DMA_CHANNEL_12
5213 * @arg @ref LL_DMA_CHANNEL_13
5214 * @arg @ref LL_DMA_CHANNEL_14
5215 * @arg @ref LL_DMA_CHANNEL_15
5216 * @retval State of bit (1 or 0).
5217 */
LL_DMA_IsEnabledCDARUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5218 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCDARUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5219 {
5220 uint32_t dma_base_addr = (uint32_t)DMAx;
5221 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UDA)
5222 == (DMA_CLLR_UDA)) ? 1UL : 0UL);
5223 }
5224
5225 /**
5226 * @brief Enable CTR3 update during the link transfer.
5227 * @note This API is used only for 2D addressing channels.
5228 * @rmtoll CLLR UT3 LL_DMA_EnableCTR3Update
5229 * @param DMAx DMAx Instance
5230 * @param Channel This parameter can be one of the following values:
5231 * @arg @ref LL_DMA_CHANNEL_12
5232 * @arg @ref LL_DMA_CHANNEL_13
5233 * @arg @ref LL_DMA_CHANNEL_14
5234 * @arg @ref LL_DMA_CHANNEL_15
5235 * @retval None.
5236 */
LL_DMA_EnableCTR3Update(const DMA_TypeDef * DMAx,uint32_t Channel)5237 __STATIC_INLINE void LL_DMA_EnableCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5238 {
5239 uint32_t dma_base_addr = (uint32_t)DMAx;
5240 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3);
5241 }
5242
5243 /**
5244 * @brief Disable CTR3 update during the link transfer.
5245 * @note This API is used only for 2D addressing channels.
5246 * @rmtoll CLLR UT3 LL_DMA_DisableCTR3Update
5247 * @param DMAx DMAx Instance
5248 * @param Channel This parameter can be one of the following values:
5249 * @arg @ref LL_DMA_CHANNEL_12
5250 * @arg @ref LL_DMA_CHANNEL_13
5251 * @arg @ref LL_DMA_CHANNEL_14
5252 * @arg @ref LL_DMA_CHANNEL_15
5253 * @retval None.
5254 */
LL_DMA_DisableCTR3Update(const DMA_TypeDef * DMAx,uint32_t Channel)5255 __STATIC_INLINE void LL_DMA_DisableCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5256 {
5257 uint32_t dma_base_addr = (uint32_t)DMAx;
5258 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3);
5259 }
5260
5261 /**
5262 * @brief Check if CTR3 update during the link transfer is enabled.
5263 * @note This API is used only for 2D addressing channels.
5264 * @rmtoll CLLR UT3 LL_DMA_IsEnabledCTR3Update
5265 * @param DMAx DMAx Instance
5266 * @param Channel This parameter can be one of the following values:
5267 * @arg @ref LL_DMA_CHANNEL_12
5268 * @arg @ref LL_DMA_CHANNEL_13
5269 * @arg @ref LL_DMA_CHANNEL_14
5270 * @arg @ref LL_DMA_CHANNEL_15
5271 * @retval State of bit (1 or 0).
5272 */
LL_DMA_IsEnabledCTR3Update(const DMA_TypeDef * DMAx,uint32_t Channel)5273 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCTR3Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5274 {
5275 uint32_t dma_base_addr = (uint32_t)DMAx;
5276 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UT3)
5277 == (DMA_CLLR_UT3)) ? 1UL : 0UL);
5278 }
5279
5280 /**
5281 * @brief Enable CBR2 update during the link transfer.
5282 * @note This API is used only for 2D addressing channels.
5283 * @rmtoll CLLR UB2 LL_DMA_EnableCBR2Update
5284 * @param DMAx DMAx Instance
5285 * @param Channel This parameter can be one of the following values:
5286 * @arg @ref LL_DMA_CHANNEL_12
5287 * @arg @ref LL_DMA_CHANNEL_13
5288 * @arg @ref LL_DMA_CHANNEL_14
5289 * @arg @ref LL_DMA_CHANNEL_15
5290 * @retval None.
5291 */
LL_DMA_EnableCBR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)5292 __STATIC_INLINE void LL_DMA_EnableCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5293 {
5294 uint32_t dma_base_addr = (uint32_t)DMAx;
5295 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2);
5296 }
5297
5298 /**
5299 * @brief Disable CBR2 update during the link transfer.
5300 * @note This API is used only for 2D addressing channels.
5301 * @rmtoll CLLR UB2 LL_DMA_DisableCBR2Update
5302 * @param DMAx DMAx Instance
5303 * @param Channel This parameter can be one of the following values:
5304 * @arg @ref LL_DMA_CHANNEL_12
5305 * @arg @ref LL_DMA_CHANNEL_13
5306 * @arg @ref LL_DMA_CHANNEL_14
5307 * @arg @ref LL_DMA_CHANNEL_15
5308 * @retval None.
5309 */
LL_DMA_DisableCBR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)5310 __STATIC_INLINE void LL_DMA_DisableCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5311 {
5312 uint32_t dma_base_addr = (uint32_t)DMAx;
5313 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2);
5314 }
5315
5316 /**
5317 * @brief Check if CBR2 update during the link transfer is enabled.
5318 * @note This API is used only for 2D addressing channels.
5319 * @rmtoll CLLR UB2 LL_DMA_IsEnabledCBR2Update
5320 * @param DMAx DMAx Instance
5321 * @param Channel This parameter can be one of the following values:
5322 * @arg @ref LL_DMA_CHANNEL_12
5323 * @arg @ref LL_DMA_CHANNEL_13
5324 * @arg @ref LL_DMA_CHANNEL_14
5325 * @arg @ref LL_DMA_CHANNEL_15
5326 * @retval State of bit (1 or 0).
5327 */
LL_DMA_IsEnabledCBR2Update(const DMA_TypeDef * DMAx,uint32_t Channel)5328 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCBR2Update(const DMA_TypeDef *DMAx, uint32_t Channel)
5329 {
5330 uint32_t dma_base_addr = (uint32_t)DMAx;
5331 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_UB2)
5332 == (DMA_CLLR_UB2)) ? 1UL : 0UL);
5333 }
5334
5335 /**
5336 * @brief Enable CLLR update during the link transfer.
5337 * @note This API is used for all available DMA channels.
5338 * @rmtoll CLLR ULL LL_DMA_EnableCLLRUpdate
5339 * @param DMAx DMAx Instance
5340 * @param Channel This parameter can be one of the following values:
5341 * @arg @ref LL_DMA_CHANNEL_0
5342 * @arg @ref LL_DMA_CHANNEL_1
5343 * @arg @ref LL_DMA_CHANNEL_2
5344 * @arg @ref LL_DMA_CHANNEL_3
5345 * @arg @ref LL_DMA_CHANNEL_4
5346 * @arg @ref LL_DMA_CHANNEL_5
5347 * @arg @ref LL_DMA_CHANNEL_6
5348 * @arg @ref LL_DMA_CHANNEL_7
5349 * @arg @ref LL_DMA_CHANNEL_8
5350 * @arg @ref LL_DMA_CHANNEL_9
5351 * @arg @ref LL_DMA_CHANNEL_10
5352 * @arg @ref LL_DMA_CHANNEL_11
5353 * @arg @ref LL_DMA_CHANNEL_12
5354 * @arg @ref LL_DMA_CHANNEL_13
5355 * @arg @ref LL_DMA_CHANNEL_14
5356 * @arg @ref LL_DMA_CHANNEL_15
5357 * @retval None.
5358 */
LL_DMA_EnableCLLRUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5359 __STATIC_INLINE void LL_DMA_EnableCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5360 {
5361 uint32_t dma_base_addr = (uint32_t)DMAx;
5362 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL);
5363 }
5364
5365 /**
5366 * @brief Disable CLLR update during the link transfer.
5367 * @note This API is used for all available DMA channels.
5368 * @rmtoll CLLR ULL LL_DMA_DisableCLLRUpdate
5369 * @param DMAx DMAx Instance
5370 * @param Channel This parameter can be one of the following values:
5371 * @arg @ref LL_DMA_CHANNEL_0
5372 * @arg @ref LL_DMA_CHANNEL_1
5373 * @arg @ref LL_DMA_CHANNEL_2
5374 * @arg @ref LL_DMA_CHANNEL_3
5375 * @arg @ref LL_DMA_CHANNEL_4
5376 * @arg @ref LL_DMA_CHANNEL_5
5377 * @arg @ref LL_DMA_CHANNEL_6
5378 * @arg @ref LL_DMA_CHANNEL_7
5379 * @arg @ref LL_DMA_CHANNEL_8
5380 * @arg @ref LL_DMA_CHANNEL_9
5381 * @arg @ref LL_DMA_CHANNEL_10
5382 * @arg @ref LL_DMA_CHANNEL_11
5383 * @arg @ref LL_DMA_CHANNEL_12
5384 * @arg @ref LL_DMA_CHANNEL_13
5385 * @arg @ref LL_DMA_CHANNEL_14
5386 * @arg @ref LL_DMA_CHANNEL_15
5387 * @retval None.
5388 */
LL_DMA_DisableCLLRUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5389 __STATIC_INLINE void LL_DMA_DisableCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5390 {
5391 uint32_t dma_base_addr = (uint32_t)DMAx;
5392 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL);
5393 }
5394
5395 /**
5396 * @brief Check if CLLR update during the link transfer is enabled.
5397 * @note This API is used for all available DMA channels.
5398 * @rmtoll CLLR ULL LL_DMA_IsEnabledCLLRUpdate
5399 * @param DMAx DMAx Instance
5400 * @param Channel This parameter can be one of the following values:
5401 * @arg @ref LL_DMA_CHANNEL_0
5402 * @arg @ref LL_DMA_CHANNEL_1
5403 * @arg @ref LL_DMA_CHANNEL_2
5404 * @arg @ref LL_DMA_CHANNEL_3
5405 * @arg @ref LL_DMA_CHANNEL_4
5406 * @arg @ref LL_DMA_CHANNEL_5
5407 * @arg @ref LL_DMA_CHANNEL_6
5408 * @arg @ref LL_DMA_CHANNEL_7
5409 * @arg @ref LL_DMA_CHANNEL_8
5410 * @arg @ref LL_DMA_CHANNEL_9
5411 * @arg @ref LL_DMA_CHANNEL_10
5412 * @arg @ref LL_DMA_CHANNEL_11
5413 * @arg @ref LL_DMA_CHANNEL_12
5414 * @arg @ref LL_DMA_CHANNEL_13
5415 * @arg @ref LL_DMA_CHANNEL_14
5416 * @arg @ref LL_DMA_CHANNEL_15
5417 * @retval State of bit (1 or 0).
5418 */
LL_DMA_IsEnabledCLLRUpdate(const DMA_TypeDef * DMAx,uint32_t Channel)5419 __STATIC_INLINE uint32_t LL_DMA_IsEnabledCLLRUpdate(const DMA_TypeDef *DMAx, uint32_t Channel)
5420 {
5421 uint32_t dma_base_addr = (uint32_t)DMAx;
5422 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_ULL)
5423 == (DMA_CLLR_ULL)) ? 1UL : 0UL);
5424 }
5425
5426 /**
5427 * @brief Set linked list address offset.
5428 * @note This API is used for all available DMA channels.
5429 * @rmtoll CLLR LA LL_DMA_SetLinkedListAddrOffset
5430 * @param DMAx DMAx Instance
5431 * @param Channel This parameter can be one of the following values:
5432 * @arg @ref LL_DMA_CHANNEL_0
5433 * @arg @ref LL_DMA_CHANNEL_1
5434 * @arg @ref LL_DMA_CHANNEL_2
5435 * @arg @ref LL_DMA_CHANNEL_3
5436 * @arg @ref LL_DMA_CHANNEL_4
5437 * @arg @ref LL_DMA_CHANNEL_5
5438 * @arg @ref LL_DMA_CHANNEL_6
5439 * @arg @ref LL_DMA_CHANNEL_7
5440 * @arg @ref LL_DMA_CHANNEL_8
5441 * @arg @ref LL_DMA_CHANNEL_9
5442 * @arg @ref LL_DMA_CHANNEL_10
5443 * @arg @ref LL_DMA_CHANNEL_11
5444 * @arg @ref LL_DMA_CHANNEL_12
5445 * @arg @ref LL_DMA_CHANNEL_13
5446 * @arg @ref LL_DMA_CHANNEL_14
5447 * @arg @ref LL_DMA_CHANNEL_15
5448 * @param LinkedListAddrOffset Between 0 to 0x0000FFFC by increment of 4 Bytes.
5449 * @retval None.
5450 */
LL_DMA_SetLinkedListAddrOffset(const DMA_TypeDef * DMAx,uint32_t Channel,uint32_t LinkedListAddrOffset)5451 __STATIC_INLINE void LL_DMA_SetLinkedListAddrOffset(const DMA_TypeDef *DMAx, uint32_t Channel,
5452 uint32_t LinkedListAddrOffset)
5453 {
5454 uint32_t dma_base_addr = (uint32_t)DMAx;
5455 MODIFY_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR, DMA_CLLR_LA,
5456 (LinkedListAddrOffset & DMA_CLLR_LA));
5457 }
5458
5459 /**
5460 * @brief Get linked list address offset.
5461 * @note This API is used for all available DMA channels.
5462 * @rmtoll CLLR LA LL_DMA_GetLinkedListAddrOffset
5463 * @param DMAx DMAx Instance
5464 * @param Channel This parameter can be one of the following values:
5465 * @arg @ref LL_DMA_CHANNEL_0
5466 * @arg @ref LL_DMA_CHANNEL_1
5467 * @arg @ref LL_DMA_CHANNEL_2
5468 * @arg @ref LL_DMA_CHANNEL_3
5469 * @arg @ref LL_DMA_CHANNEL_4
5470 * @arg @ref LL_DMA_CHANNEL_5
5471 * @arg @ref LL_DMA_CHANNEL_6
5472 * @arg @ref LL_DMA_CHANNEL_7
5473 * @arg @ref LL_DMA_CHANNEL_8
5474 * @arg @ref LL_DMA_CHANNEL_9
5475 * @arg @ref LL_DMA_CHANNEL_10
5476 * @arg @ref LL_DMA_CHANNEL_11
5477 * @arg @ref LL_DMA_CHANNEL_12
5478 * @arg @ref LL_DMA_CHANNEL_13
5479 * @arg @ref LL_DMA_CHANNEL_14
5480 * @arg @ref LL_DMA_CHANNEL_15
5481 * @retval Between 0 to 0x0000FFFC.
5482 */
LL_DMA_GetLinkedListAddrOffset(const DMA_TypeDef * DMAx,uint32_t Channel)5483 __STATIC_INLINE uint32_t LL_DMA_GetLinkedListAddrOffset(const DMA_TypeDef *DMAx, uint32_t Channel)
5484 {
5485 uint32_t dma_base_addr = (uint32_t)DMAx;
5486 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CLLR,
5487 DMA_CLLR_LA) >> DMA_CLLR_LA_Pos);
5488 }
5489
5490 /**
5491 * @brief Get FIFO level.
5492 * @note This API is not used for LPDMA channels.
5493 * @rmtoll CSR FIFOL LL_DMA_GetFIFOLevel
5494 * @param DMAx DMAx Instance
5495 * @param Channel This parameter can be one of the following values:
5496 * @arg @ref LL_DMA_CHANNEL_0
5497 * @arg @ref LL_DMA_CHANNEL_1
5498 * @arg @ref LL_DMA_CHANNEL_2
5499 * @arg @ref LL_DMA_CHANNEL_3
5500 * @arg @ref LL_DMA_CHANNEL_4
5501 * @arg @ref LL_DMA_CHANNEL_5
5502 * @arg @ref LL_DMA_CHANNEL_6
5503 * @arg @ref LL_DMA_CHANNEL_7
5504 * @arg @ref LL_DMA_CHANNEL_8
5505 * @arg @ref LL_DMA_CHANNEL_9
5506 * @arg @ref LL_DMA_CHANNEL_10
5507 * @arg @ref LL_DMA_CHANNEL_11
5508 * @arg @ref LL_DMA_CHANNEL_12
5509 * @arg @ref LL_DMA_CHANNEL_13
5510 * @arg @ref LL_DMA_CHANNEL_14
5511 * @arg @ref LL_DMA_CHANNEL_15
5512 * @retval Between 0 to 0x000000FF.
5513 */
LL_DMA_GetFIFOLevel(const DMA_TypeDef * DMAx,uint32_t Channel)5514 __STATIC_INLINE uint32_t LL_DMA_GetFIFOLevel(const DMA_TypeDef *DMAx, uint32_t Channel)
5515 {
5516 uint32_t dma_base_addr = (uint32_t)DMAx;
5517 return (READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR,
5518 DMA_CSR_FIFOL) >> DMA_CSR_FIFOL_Pos);
5519 }
5520
5521 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
5522 /**
5523 * @brief Enable the DMA channel secure attribute.
5524 * @note This API is used for all available DMA channels.
5525 * @rmtoll SECCFGR SECx LL_DMA_EnableChannelSecure
5526 * @param DMAx DMAx Instance
5527 * @param Channel This parameter can be one of the following values:
5528 * @arg @ref LL_DMA_CHANNEL_0
5529 * @arg @ref LL_DMA_CHANNEL_1
5530 * @arg @ref LL_DMA_CHANNEL_2
5531 * @arg @ref LL_DMA_CHANNEL_3
5532 * @arg @ref LL_DMA_CHANNEL_4
5533 * @arg @ref LL_DMA_CHANNEL_5
5534 * @arg @ref LL_DMA_CHANNEL_6
5535 * @arg @ref LL_DMA_CHANNEL_7
5536 * @arg @ref LL_DMA_CHANNEL_8
5537 * @arg @ref LL_DMA_CHANNEL_9
5538 * @arg @ref LL_DMA_CHANNEL_10
5539 * @arg @ref LL_DMA_CHANNEL_11
5540 * @arg @ref LL_DMA_CHANNEL_12
5541 * @arg @ref LL_DMA_CHANNEL_13
5542 * @arg @ref LL_DMA_CHANNEL_14
5543 * @arg @ref LL_DMA_CHANNEL_15
5544 * @retval None.
5545 */
LL_DMA_EnableChannelSecure(DMA_TypeDef * DMAx,uint32_t Channel)5546 __STATIC_INLINE void LL_DMA_EnableChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel)
5547 {
5548 SET_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)));
5549 }
5550
5551 /**
5552 * @brief Disable the DMA channel secure attribute.
5553 * @note This API is used for all available DMA channels.
5554 * @rmtoll SECCFGR SECx LL_DMA_DisableChannelSecure
5555 * @param DMAx DMAx Instance
5556 * @param Channel This parameter can be one of the following values:
5557 * @arg @ref LL_DMA_CHANNEL_0
5558 * @arg @ref LL_DMA_CHANNEL_1
5559 * @arg @ref LL_DMA_CHANNEL_2
5560 * @arg @ref LL_DMA_CHANNEL_3
5561 * @arg @ref LL_DMA_CHANNEL_4
5562 * @arg @ref LL_DMA_CHANNEL_5
5563 * @arg @ref LL_DMA_CHANNEL_6
5564 * @arg @ref LL_DMA_CHANNEL_7
5565 * @arg @ref LL_DMA_CHANNEL_8
5566 * @arg @ref LL_DMA_CHANNEL_9
5567 * @arg @ref LL_DMA_CHANNEL_10
5568 * @arg @ref LL_DMA_CHANNEL_11
5569 * @arg @ref LL_DMA_CHANNEL_12
5570 * @arg @ref LL_DMA_CHANNEL_13
5571 * @arg @ref LL_DMA_CHANNEL_14
5572 * @arg @ref LL_DMA_CHANNEL_15
5573 * @retval None.
5574 */
LL_DMA_DisableChannelSecure(DMA_TypeDef * DMAx,uint32_t Channel)5575 __STATIC_INLINE void LL_DMA_DisableChannelSecure(DMA_TypeDef *DMAx, uint32_t Channel)
5576 {
5577 CLEAR_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)));
5578 }
5579 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
5580
5581 /**
5582 * @brief Check if DMA channel secure is enabled.
5583 * @note This API is used for all available DMA channels.
5584 * @rmtoll SECCFGR SECx LL_DMA_IsEnabledChannelSecure
5585 * @param DMAx DMAx Instance
5586 * @param Channel This parameter can be one of the following values:
5587 * @arg @ref LL_DMA_CHANNEL_0
5588 * @arg @ref LL_DMA_CHANNEL_1
5589 * @arg @ref LL_DMA_CHANNEL_2
5590 * @arg @ref LL_DMA_CHANNEL_3
5591 * @arg @ref LL_DMA_CHANNEL_4
5592 * @arg @ref LL_DMA_CHANNEL_5
5593 * @arg @ref LL_DMA_CHANNEL_6
5594 * @arg @ref LL_DMA_CHANNEL_7
5595 * @arg @ref LL_DMA_CHANNEL_8
5596 * @arg @ref LL_DMA_CHANNEL_9
5597 * @arg @ref LL_DMA_CHANNEL_10
5598 * @arg @ref LL_DMA_CHANNEL_11
5599 * @arg @ref LL_DMA_CHANNEL_12
5600 * @arg @ref LL_DMA_CHANNEL_13
5601 * @arg @ref LL_DMA_CHANNEL_14
5602 * @arg @ref LL_DMA_CHANNEL_15
5603 * @retval State of bit (1 or 0).
5604 */
LL_DMA_IsEnabledChannelSecure(const DMA_TypeDef * DMAx,uint32_t Channel)5605 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelSecure(const DMA_TypeDef *DMAx, uint32_t Channel)
5606 {
5607 return ((READ_BIT(DMAx->SECCFGR, (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU)))
5608 == (DMA_SECCFGR_SEC0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
5609 }
5610
5611 /**
5612 * @brief Enable the DMA channel privilege attribute.
5613 * @note This API is used for all available DMA channels.
5614 * @rmtoll PRIVCFGR PRIVx LL_DMA_EnableChannelPrivilege
5615 * @param DMAx DMAx Instance
5616 * @param Channel This parameter can be one of the following values:
5617 * @arg @ref LL_DMA_CHANNEL_0
5618 * @arg @ref LL_DMA_CHANNEL_1
5619 * @arg @ref LL_DMA_CHANNEL_2
5620 * @arg @ref LL_DMA_CHANNEL_3
5621 * @arg @ref LL_DMA_CHANNEL_4
5622 * @arg @ref LL_DMA_CHANNEL_5
5623 * @arg @ref LL_DMA_CHANNEL_6
5624 * @arg @ref LL_DMA_CHANNEL_7
5625 * @arg @ref LL_DMA_CHANNEL_8
5626 * @arg @ref LL_DMA_CHANNEL_9
5627 * @arg @ref LL_DMA_CHANNEL_10
5628 * @arg @ref LL_DMA_CHANNEL_11
5629 * @arg @ref LL_DMA_CHANNEL_12
5630 * @arg @ref LL_DMA_CHANNEL_13
5631 * @arg @ref LL_DMA_CHANNEL_14
5632 * @arg @ref LL_DMA_CHANNEL_15
5633 * @retval None.
5634 */
LL_DMA_EnableChannelPrivilege(DMA_TypeDef * DMAx,uint32_t Channel)5635 __STATIC_INLINE void LL_DMA_EnableChannelPrivilege(DMA_TypeDef *DMAx, uint32_t Channel)
5636 {
5637 SET_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)));
5638 }
5639
5640 /**
5641 * @brief Disable the DMA channel privilege attribute.
5642 * @note This API is used for all available DMA channels.
5643 * @rmtoll PRIVCFGR PRIVx LL_DMA_DisableChannelPrivilege
5644 * @param DMAx DMAx Instance
5645 * @param Channel This parameter can be one of the following values:
5646 * @arg @ref LL_DMA_CHANNEL_0
5647 * @arg @ref LL_DMA_CHANNEL_1
5648 * @arg @ref LL_DMA_CHANNEL_2
5649 * @arg @ref LL_DMA_CHANNEL_3
5650 * @arg @ref LL_DMA_CHANNEL_4
5651 * @arg @ref LL_DMA_CHANNEL_5
5652 * @arg @ref LL_DMA_CHANNEL_6
5653 * @arg @ref LL_DMA_CHANNEL_7
5654 * @arg @ref LL_DMA_CHANNEL_8
5655 * @arg @ref LL_DMA_CHANNEL_9
5656 * @arg @ref LL_DMA_CHANNEL_10
5657 * @arg @ref LL_DMA_CHANNEL_11
5658 * @arg @ref LL_DMA_CHANNEL_12
5659 * @arg @ref LL_DMA_CHANNEL_13
5660 * @arg @ref LL_DMA_CHANNEL_14
5661 * @arg @ref LL_DMA_CHANNEL_15
5662 * @retval None.
5663 */
LL_DMA_DisableChannelPrivilege(DMA_TypeDef * DMAx,uint32_t Channel)5664 __STATIC_INLINE void LL_DMA_DisableChannelPrivilege(DMA_TypeDef *DMAx, uint32_t Channel)
5665 {
5666 CLEAR_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)));
5667 }
5668
5669 /**
5670 * @brief Check if DMA Channel privilege is enabled.
5671 * @note This API is used for all available DMA channels.
5672 * @rmtoll PRIVCFGR PRIVx LL_DMA_IsEnabledChannelPrivilege
5673 * @param DMAx DMAx Instance
5674 * @param Channel This parameter can be one of the following values:
5675 * @arg @ref LL_DMA_CHANNEL_0
5676 * @arg @ref LL_DMA_CHANNEL_1
5677 * @arg @ref LL_DMA_CHANNEL_2
5678 * @arg @ref LL_DMA_CHANNEL_3
5679 * @arg @ref LL_DMA_CHANNEL_4
5680 * @arg @ref LL_DMA_CHANNEL_5
5681 * @arg @ref LL_DMA_CHANNEL_6
5682 * @arg @ref LL_DMA_CHANNEL_7
5683 * @arg @ref LL_DMA_CHANNEL_8
5684 * @arg @ref LL_DMA_CHANNEL_9
5685 * @arg @ref LL_DMA_CHANNEL_10
5686 * @arg @ref LL_DMA_CHANNEL_11
5687 * @arg @ref LL_DMA_CHANNEL_12
5688 * @arg @ref LL_DMA_CHANNEL_13
5689 * @arg @ref LL_DMA_CHANNEL_14
5690 * @arg @ref LL_DMA_CHANNEL_15
5691 * @retval State of bit (1 or 0).
5692 */
LL_DMA_IsEnabledChannelPrivilege(const DMA_TypeDef * DMAx,uint32_t Channel)5693 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelPrivilege(const DMA_TypeDef *DMAx, uint32_t Channel)
5694 {
5695 return ((READ_BIT(DMAx->PRIVCFGR, (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU)))
5696 == (DMA_PRIVCFGR_PRIV0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
5697 }
5698
5699 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
5700 /**
5701 * @brief Enable the DMA channel lock attributes.
5702 * @note This API is used for all available DMA channels.
5703 * @rmtoll RCFGLOCKR LOCKx LL_DMA_EnableChannelLockAttribute
5704 * @param DMAx DMAx Instance
5705 * @param Channel This parameter can be one of the following values:
5706 * @arg @ref LL_DMA_CHANNEL_0
5707 * @arg @ref LL_DMA_CHANNEL_1
5708 * @arg @ref LL_DMA_CHANNEL_2
5709 * @arg @ref LL_DMA_CHANNEL_3
5710 * @arg @ref LL_DMA_CHANNEL_4
5711 * @arg @ref LL_DMA_CHANNEL_5
5712 * @arg @ref LL_DMA_CHANNEL_6
5713 * @arg @ref LL_DMA_CHANNEL_7
5714 * @arg @ref LL_DMA_CHANNEL_8
5715 * @arg @ref LL_DMA_CHANNEL_9
5716 * @arg @ref LL_DMA_CHANNEL_10
5717 * @arg @ref LL_DMA_CHANNEL_11
5718 * @arg @ref LL_DMA_CHANNEL_12
5719 * @arg @ref LL_DMA_CHANNEL_13
5720 * @arg @ref LL_DMA_CHANNEL_14
5721 * @arg @ref LL_DMA_CHANNEL_15
5722 * @retval None.
5723 */
LL_DMA_EnableChannelLockAttribute(DMA_TypeDef * DMAx,uint32_t Channel)5724 __STATIC_INLINE void LL_DMA_EnableChannelLockAttribute(DMA_TypeDef *DMAx, uint32_t Channel)
5725 {
5726 SET_BIT(DMAx->RCFGLOCKR, (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU)));
5727 }
5728 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
5729
5730 /**
5731 * @brief Check if DMA channel attributes are locked.
5732 * @note This API is used for all available DMA channels.
5733 * @rmtoll SECCFGR LOCKx LL_DMA_IsEnabledChannelLockAttribute
5734 * @param DMAx DMAx Instance
5735 * @param Channel This parameter can be one of the following values:
5736 * @arg @ref LL_DMA_CHANNEL_0
5737 * @arg @ref LL_DMA_CHANNEL_1
5738 * @arg @ref LL_DMA_CHANNEL_2
5739 * @arg @ref LL_DMA_CHANNEL_3
5740 * @arg @ref LL_DMA_CHANNEL_4
5741 * @arg @ref LL_DMA_CHANNEL_5
5742 * @arg @ref LL_DMA_CHANNEL_6
5743 * @arg @ref LL_DMA_CHANNEL_7
5744 * @arg @ref LL_DMA_CHANNEL_8
5745 * @arg @ref LL_DMA_CHANNEL_9
5746 * @arg @ref LL_DMA_CHANNEL_10
5747 * @arg @ref LL_DMA_CHANNEL_11
5748 * @arg @ref LL_DMA_CHANNEL_12
5749 * @arg @ref LL_DMA_CHANNEL_13
5750 * @arg @ref LL_DMA_CHANNEL_14
5751 * @arg @ref LL_DMA_CHANNEL_15
5752 * @retval State of bit (1 or 0).
5753 */
LL_DMA_IsEnabledChannelLockAttribute(const DMA_TypeDef * DMAx,uint32_t Channel)5754 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannelLockAttribute(const DMA_TypeDef *DMAx, uint32_t Channel)
5755 {
5756 return ((READ_BIT(DMAx->RCFGLOCKR, (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU)))
5757 == (DMA_RCFGLOCKR_LOCK0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
5758 }
5759
5760 /**
5761 * @}
5762 */
5763
5764 /** @defgroup DMA_LL_EF_FLAG_Management Flag Management
5765 * @{
5766 */
5767
5768 /**
5769 * @brief Clear trigger overrun flag.
5770 * @note This API is used for all available DMA channels.
5771 * @rmtoll CFCR TOF LL_DMA_ClearFlag_TO
5772 * @param DMAx DMAx Instance
5773 * @param Channel This parameter can be one of the following values:
5774 * @arg @ref LL_DMA_CHANNEL_0
5775 * @arg @ref LL_DMA_CHANNEL_1
5776 * @arg @ref LL_DMA_CHANNEL_2
5777 * @arg @ref LL_DMA_CHANNEL_3
5778 * @arg @ref LL_DMA_CHANNEL_4
5779 * @arg @ref LL_DMA_CHANNEL_5
5780 * @arg @ref LL_DMA_CHANNEL_6
5781 * @arg @ref LL_DMA_CHANNEL_7
5782 * @arg @ref LL_DMA_CHANNEL_8
5783 * @arg @ref LL_DMA_CHANNEL_9
5784 * @arg @ref LL_DMA_CHANNEL_10
5785 * @arg @ref LL_DMA_CHANNEL_11
5786 * @arg @ref LL_DMA_CHANNEL_12
5787 * @arg @ref LL_DMA_CHANNEL_13
5788 * @arg @ref LL_DMA_CHANNEL_14
5789 * @arg @ref LL_DMA_CHANNEL_15
5790 * @retval None.
5791 */
LL_DMA_ClearFlag_TO(const DMA_TypeDef * DMAx,uint32_t Channel)5792 __STATIC_INLINE void LL_DMA_ClearFlag_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
5793 {
5794 uint32_t dma_base_addr = (uint32_t)DMAx;
5795 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_TOF);
5796 }
5797
5798 /**
5799 * @brief Clear suspension flag.
5800 * @note This API is used for all available DMA channels.
5801 * @rmtoll CFCR SUSPF LL_DMA_ClearFlag_SUSP
5802 * @param DMAx DMAx Instance
5803 * @param Channel This parameter can be one of the following values:
5804 * @arg @ref LL_DMA_CHANNEL_0
5805 * @arg @ref LL_DMA_CHANNEL_1
5806 * @arg @ref LL_DMA_CHANNEL_2
5807 * @arg @ref LL_DMA_CHANNEL_3
5808 * @arg @ref LL_DMA_CHANNEL_4
5809 * @arg @ref LL_DMA_CHANNEL_5
5810 * @arg @ref LL_DMA_CHANNEL_6
5811 * @arg @ref LL_DMA_CHANNEL_7
5812 * @arg @ref LL_DMA_CHANNEL_8
5813 * @arg @ref LL_DMA_CHANNEL_9
5814 * @arg @ref LL_DMA_CHANNEL_10
5815 * @arg @ref LL_DMA_CHANNEL_11
5816 * @arg @ref LL_DMA_CHANNEL_12
5817 * @arg @ref LL_DMA_CHANNEL_13
5818 * @arg @ref LL_DMA_CHANNEL_14
5819 * @arg @ref LL_DMA_CHANNEL_15
5820 * @retval None.
5821 */
LL_DMA_ClearFlag_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)5822 __STATIC_INLINE void LL_DMA_ClearFlag_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
5823 {
5824 uint32_t dma_base_addr = (uint32_t)DMAx;
5825 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_SUSPF);
5826 }
5827
5828 /**
5829 * @brief Clear user setting error flag.
5830 * @note This API is used for all available DMA channels.
5831 * @rmtoll CFCR USEF LL_DMA_ClearFlag_USE
5832 * @param DMAx DMAx Instance
5833 * @param Channel This parameter can be one of the following values:
5834 * @arg @ref LL_DMA_CHANNEL_0
5835 * @arg @ref LL_DMA_CHANNEL_1
5836 * @arg @ref LL_DMA_CHANNEL_2
5837 * @arg @ref LL_DMA_CHANNEL_3
5838 * @arg @ref LL_DMA_CHANNEL_4
5839 * @arg @ref LL_DMA_CHANNEL_5
5840 * @arg @ref LL_DMA_CHANNEL_6
5841 * @arg @ref LL_DMA_CHANNEL_7
5842 * @arg @ref LL_DMA_CHANNEL_8
5843 * @arg @ref LL_DMA_CHANNEL_9
5844 * @arg @ref LL_DMA_CHANNEL_10
5845 * @arg @ref LL_DMA_CHANNEL_11
5846 * @arg @ref LL_DMA_CHANNEL_12
5847 * @arg @ref LL_DMA_CHANNEL_13
5848 * @arg @ref LL_DMA_CHANNEL_14
5849 * @arg @ref LL_DMA_CHANNEL_15
5850 * @retval None.
5851 */
LL_DMA_ClearFlag_USE(const DMA_TypeDef * DMAx,uint32_t Channel)5852 __STATIC_INLINE void LL_DMA_ClearFlag_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
5853 {
5854 uint32_t dma_base_addr = (uint32_t)DMAx;
5855 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_USEF);
5856 }
5857
5858 /**
5859 * @brief Clear link transfer error flag.
5860 * @note This API is used for all available DMA channels.
5861 * @rmtoll CFCR ULEF LL_DMA_ClearFlag_ULE
5862 * @param DMAx DMAx Instance
5863 * @param Channel This parameter can be one of the following values:
5864 * @arg @ref LL_DMA_CHANNEL_0
5865 * @arg @ref LL_DMA_CHANNEL_1
5866 * @arg @ref LL_DMA_CHANNEL_2
5867 * @arg @ref LL_DMA_CHANNEL_3
5868 * @arg @ref LL_DMA_CHANNEL_4
5869 * @arg @ref LL_DMA_CHANNEL_5
5870 * @arg @ref LL_DMA_CHANNEL_6
5871 * @arg @ref LL_DMA_CHANNEL_7
5872 * @arg @ref LL_DMA_CHANNEL_8
5873 * @arg @ref LL_DMA_CHANNEL_9
5874 * @arg @ref LL_DMA_CHANNEL_10
5875 * @arg @ref LL_DMA_CHANNEL_11
5876 * @arg @ref LL_DMA_CHANNEL_12
5877 * @arg @ref LL_DMA_CHANNEL_13
5878 * @arg @ref LL_DMA_CHANNEL_14
5879 * @arg @ref LL_DMA_CHANNEL_15
5880 * @retval None.
5881 */
LL_DMA_ClearFlag_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)5882 __STATIC_INLINE void LL_DMA_ClearFlag_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
5883 {
5884 uint32_t dma_base_addr = (uint32_t)DMAx;
5885 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_ULEF);
5886 }
5887
5888 /**
5889 * @brief Clear data transfer error flag.
5890 * @note This API is used for all available DMA channels.
5891 * @rmtoll CFCR DTEF LL_DMA_ClearFlag_DTE
5892 * @param DMAx DMAx Instance
5893 * @param Channel This parameter can be one of the following values:
5894 * @arg @ref LL_DMA_CHANNEL_0
5895 * @arg @ref LL_DMA_CHANNEL_1
5896 * @arg @ref LL_DMA_CHANNEL_2
5897 * @arg @ref LL_DMA_CHANNEL_3
5898 * @arg @ref LL_DMA_CHANNEL_4
5899 * @arg @ref LL_DMA_CHANNEL_5
5900 * @arg @ref LL_DMA_CHANNEL_6
5901 * @arg @ref LL_DMA_CHANNEL_7
5902 * @arg @ref LL_DMA_CHANNEL_8
5903 * @arg @ref LL_DMA_CHANNEL_9
5904 * @arg @ref LL_DMA_CHANNEL_10
5905 * @arg @ref LL_DMA_CHANNEL_11
5906 * @arg @ref LL_DMA_CHANNEL_12
5907 * @arg @ref LL_DMA_CHANNEL_13
5908 * @arg @ref LL_DMA_CHANNEL_14
5909 * @arg @ref LL_DMA_CHANNEL_15
5910 * @retval None.
5911 */
LL_DMA_ClearFlag_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)5912 __STATIC_INLINE void LL_DMA_ClearFlag_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
5913 {
5914 uint32_t dma_base_addr = (uint32_t)DMAx;
5915 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_DTEF);
5916 }
5917
5918 /**
5919 * @brief Clear half transfer flag.
5920 * @note This API is used for all available DMA channels.
5921 * @rmtoll CFCR HTF LL_DMA_ClearFlag_HT
5922 * @param DMAx DMAx Instance
5923 * @param Channel This parameter can be one of the following values:
5924 * @arg @ref LL_DMA_CHANNEL_0
5925 * @arg @ref LL_DMA_CHANNEL_1
5926 * @arg @ref LL_DMA_CHANNEL_2
5927 * @arg @ref LL_DMA_CHANNEL_3
5928 * @arg @ref LL_DMA_CHANNEL_4
5929 * @arg @ref LL_DMA_CHANNEL_5
5930 * @arg @ref LL_DMA_CHANNEL_6
5931 * @arg @ref LL_DMA_CHANNEL_7
5932 * @arg @ref LL_DMA_CHANNEL_8
5933 * @arg @ref LL_DMA_CHANNEL_9
5934 * @arg @ref LL_DMA_CHANNEL_10
5935 * @arg @ref LL_DMA_CHANNEL_11
5936 * @arg @ref LL_DMA_CHANNEL_12
5937 * @arg @ref LL_DMA_CHANNEL_13
5938 * @arg @ref LL_DMA_CHANNEL_14
5939 * @arg @ref LL_DMA_CHANNEL_15
5940 * @retval None.
5941 */
LL_DMA_ClearFlag_HT(const DMA_TypeDef * DMAx,uint32_t Channel)5942 __STATIC_INLINE void LL_DMA_ClearFlag_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
5943 {
5944 uint32_t dma_base_addr = (uint32_t)DMAx;
5945 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_HTF);
5946 }
5947
5948 /**
5949 * @brief Clear transfer complete flag.
5950 * @note This API is used for all available DMA channels.
5951 * @rmtoll CFCR TCF LL_DMA_ClearFlag_TC
5952 * @param DMAx DMAx Instance
5953 * @param Channel This parameter can be one of the following values:
5954 * @arg @ref LL_DMA_CHANNEL_0
5955 * @arg @ref LL_DMA_CHANNEL_1
5956 * @arg @ref LL_DMA_CHANNEL_2
5957 * @arg @ref LL_DMA_CHANNEL_3
5958 * @arg @ref LL_DMA_CHANNEL_4
5959 * @arg @ref LL_DMA_CHANNEL_5
5960 * @arg @ref LL_DMA_CHANNEL_6
5961 * @arg @ref LL_DMA_CHANNEL_7
5962 * @arg @ref LL_DMA_CHANNEL_8
5963 * @arg @ref LL_DMA_CHANNEL_9
5964 * @arg @ref LL_DMA_CHANNEL_10
5965 * @arg @ref LL_DMA_CHANNEL_11
5966 * @arg @ref LL_DMA_CHANNEL_12
5967 * @arg @ref LL_DMA_CHANNEL_13
5968 * @arg @ref LL_DMA_CHANNEL_14
5969 * @arg @ref LL_DMA_CHANNEL_15
5970 * @retval None.
5971 */
LL_DMA_ClearFlag_TC(const DMA_TypeDef * DMAx,uint32_t Channel)5972 __STATIC_INLINE void LL_DMA_ClearFlag_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
5973 {
5974 uint32_t dma_base_addr = (uint32_t)DMAx;
5975 WRITE_REG(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CFCR, DMA_CFCR_TCF);
5976 }
5977
5978 /**
5979 * @brief Get trigger overrun flag.
5980 * @note This API is used for all available DMA channels.
5981 * @rmtoll CSR TOF LL_DMA_IsActiveFlag_TO
5982 * @param DMAx DMAx Instance
5983 * @param Channel This parameter can be one of the following values:
5984 * @arg @ref LL_DMA_CHANNEL_0
5985 * @arg @ref LL_DMA_CHANNEL_1
5986 * @arg @ref LL_DMA_CHANNEL_2
5987 * @arg @ref LL_DMA_CHANNEL_3
5988 * @arg @ref LL_DMA_CHANNEL_4
5989 * @arg @ref LL_DMA_CHANNEL_5
5990 * @arg @ref LL_DMA_CHANNEL_6
5991 * @arg @ref LL_DMA_CHANNEL_7
5992 * @arg @ref LL_DMA_CHANNEL_8
5993 * @arg @ref LL_DMA_CHANNEL_9
5994 * @arg @ref LL_DMA_CHANNEL_10
5995 * @arg @ref LL_DMA_CHANNEL_11
5996 * @arg @ref LL_DMA_CHANNEL_12
5997 * @arg @ref LL_DMA_CHANNEL_13
5998 * @arg @ref LL_DMA_CHANNEL_14
5999 * @arg @ref LL_DMA_CHANNEL_15
6000 * @retval State of bit (1 or 0).
6001 */
LL_DMA_IsActiveFlag_TO(const DMA_TypeDef * DMAx,uint32_t Channel)6002 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
6003 {
6004 uint32_t dma_base_addr = (uint32_t)DMAx;
6005 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_TOF)
6006 == (DMA_CSR_TOF)) ? 1UL : 0UL);
6007 }
6008
6009 /**
6010 * @brief Get suspension flag.
6011 * @note This API is used for all available DMA channels.
6012 * @rmtoll CSR SUSPF LL_DMA_IsActiveFlag_SUSP
6013 * @param DMAx DMAx Instance
6014 * @param Channel This parameter can be one of the following values:
6015 * @arg @ref LL_DMA_CHANNEL_0
6016 * @arg @ref LL_DMA_CHANNEL_1
6017 * @arg @ref LL_DMA_CHANNEL_2
6018 * @arg @ref LL_DMA_CHANNEL_3
6019 * @arg @ref LL_DMA_CHANNEL_4
6020 * @arg @ref LL_DMA_CHANNEL_5
6021 * @arg @ref LL_DMA_CHANNEL_6
6022 * @arg @ref LL_DMA_CHANNEL_7
6023 * @arg @ref LL_DMA_CHANNEL_8
6024 * @arg @ref LL_DMA_CHANNEL_9
6025 * @arg @ref LL_DMA_CHANNEL_10
6026 * @arg @ref LL_DMA_CHANNEL_11
6027 * @arg @ref LL_DMA_CHANNEL_12
6028 * @arg @ref LL_DMA_CHANNEL_13
6029 * @arg @ref LL_DMA_CHANNEL_14
6030 * @arg @ref LL_DMA_CHANNEL_15
6031 * @retval State of bit (1 or 0).
6032 */
LL_DMA_IsActiveFlag_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)6033 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
6034 {
6035 uint32_t dma_base_addr = (uint32_t)DMAx;
6036 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_SUSPF)
6037 == (DMA_CSR_SUSPF)) ? 1UL : 0UL);
6038 }
6039
6040 /**
6041 * @brief Get user setting error flag.
6042 * @note This API is used for all available DMA channels.
6043 * @rmtoll CSR USEF LL_DMA_IsActiveFlag_USE
6044 * @param DMAx DMAx Instance
6045 * @param Channel This parameter can be one of the following values:
6046 * @arg @ref LL_DMA_CHANNEL_0
6047 * @arg @ref LL_DMA_CHANNEL_1
6048 * @arg @ref LL_DMA_CHANNEL_2
6049 * @arg @ref LL_DMA_CHANNEL_3
6050 * @arg @ref LL_DMA_CHANNEL_4
6051 * @arg @ref LL_DMA_CHANNEL_5
6052 * @arg @ref LL_DMA_CHANNEL_6
6053 * @arg @ref LL_DMA_CHANNEL_7
6054 * @arg @ref LL_DMA_CHANNEL_8
6055 * @arg @ref LL_DMA_CHANNEL_9
6056 * @arg @ref LL_DMA_CHANNEL_10
6057 * @arg @ref LL_DMA_CHANNEL_11
6058 * @arg @ref LL_DMA_CHANNEL_12
6059 * @arg @ref LL_DMA_CHANNEL_13
6060 * @arg @ref LL_DMA_CHANNEL_14
6061 * @arg @ref LL_DMA_CHANNEL_15
6062 * @retval State of bit (1 or 0).
6063 */
LL_DMA_IsActiveFlag_USE(const DMA_TypeDef * DMAx,uint32_t Channel)6064 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
6065 {
6066 uint32_t dma_base_addr = (uint32_t)DMAx;
6067 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_USEF)
6068 == (DMA_CSR_USEF)) ? 1UL : 0UL);
6069 }
6070
6071 /**
6072 * @brief Get user setting error flag.
6073 * @note This API is used for all available DMA channels.
6074 * @rmtoll CSR ULEF LL_DMA_IsActiveFlag_ULE
6075 * @param DMAx DMAx Instance
6076 * @param Channel This parameter can be one of the following values:
6077 * @arg @ref LL_DMA_CHANNEL_0
6078 * @arg @ref LL_DMA_CHANNEL_1
6079 * @arg @ref LL_DMA_CHANNEL_2
6080 * @arg @ref LL_DMA_CHANNEL_3
6081 * @arg @ref LL_DMA_CHANNEL_4
6082 * @arg @ref LL_DMA_CHANNEL_5
6083 * @arg @ref LL_DMA_CHANNEL_6
6084 * @arg @ref LL_DMA_CHANNEL_7
6085 * @arg @ref LL_DMA_CHANNEL_8
6086 * @arg @ref LL_DMA_CHANNEL_9
6087 * @arg @ref LL_DMA_CHANNEL_10
6088 * @arg @ref LL_DMA_CHANNEL_11
6089 * @arg @ref LL_DMA_CHANNEL_12
6090 * @arg @ref LL_DMA_CHANNEL_13
6091 * @arg @ref LL_DMA_CHANNEL_14
6092 * @arg @ref LL_DMA_CHANNEL_15
6093 * @retval State of bit (1 or 0).
6094 */
LL_DMA_IsActiveFlag_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)6095 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
6096 {
6097 uint32_t dma_base_addr = (uint32_t)DMAx;
6098 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_ULEF)
6099 == (DMA_CSR_ULEF)) ? 1UL : 0UL);
6100 }
6101
6102 /**
6103 * @brief Get data transfer error flag.
6104 * @note This API is used for all available DMA channels.
6105 * @rmtoll CSR DTEF LL_DMA_IsActiveFlag_DTE
6106 * @param DMAx DMAx Instance
6107 * @param Channel This parameter can be one of the following values:
6108 * @arg @ref LL_DMA_CHANNEL_0
6109 * @arg @ref LL_DMA_CHANNEL_1
6110 * @arg @ref LL_DMA_CHANNEL_2
6111 * @arg @ref LL_DMA_CHANNEL_3
6112 * @arg @ref LL_DMA_CHANNEL_4
6113 * @arg @ref LL_DMA_CHANNEL_5
6114 * @arg @ref LL_DMA_CHANNEL_6
6115 * @arg @ref LL_DMA_CHANNEL_7
6116 * @arg @ref LL_DMA_CHANNEL_8
6117 * @arg @ref LL_DMA_CHANNEL_9
6118 * @arg @ref LL_DMA_CHANNEL_10
6119 * @arg @ref LL_DMA_CHANNEL_11
6120 * @arg @ref LL_DMA_CHANNEL_12
6121 * @arg @ref LL_DMA_CHANNEL_13
6122 * @arg @ref LL_DMA_CHANNEL_14
6123 * @arg @ref LL_DMA_CHANNEL_15
6124 * @retval State of bit (1 or 0).
6125 */
LL_DMA_IsActiveFlag_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)6126 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
6127 {
6128 uint32_t dma_base_addr = (uint32_t)DMAx;
6129 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_DTEF)
6130 == (DMA_CSR_DTEF)) ? 1UL : 0UL);
6131 }
6132
6133 /**
6134 * @brief Get half transfer flag.
6135 * @note This API is used for all available DMA channels.
6136 * @rmtoll CSR HTF LL_DMA_IsActiveFlag_HT
6137 * @param DMAx DMAx Instance
6138 * @param Channel This parameter can be one of the following values:
6139 * @arg @ref LL_DMA_CHANNEL_0
6140 * @arg @ref LL_DMA_CHANNEL_1
6141 * @arg @ref LL_DMA_CHANNEL_2
6142 * @arg @ref LL_DMA_CHANNEL_3
6143 * @arg @ref LL_DMA_CHANNEL_4
6144 * @arg @ref LL_DMA_CHANNEL_5
6145 * @arg @ref LL_DMA_CHANNEL_6
6146 * @arg @ref LL_DMA_CHANNEL_7
6147 * @arg @ref LL_DMA_CHANNEL_8
6148 * @arg @ref LL_DMA_CHANNEL_9
6149 * @arg @ref LL_DMA_CHANNEL_10
6150 * @arg @ref LL_DMA_CHANNEL_11
6151 * @arg @ref LL_DMA_CHANNEL_12
6152 * @arg @ref LL_DMA_CHANNEL_13
6153 * @arg @ref LL_DMA_CHANNEL_14
6154 * @arg @ref LL_DMA_CHANNEL_15
6155 * @retval State of bit (1 or 0).
6156 */
LL_DMA_IsActiveFlag_HT(const DMA_TypeDef * DMAx,uint32_t Channel)6157 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
6158 {
6159 uint32_t dma_base_addr = (uint32_t)DMAx;
6160 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_HTF)
6161 == (DMA_CSR_HTF)) ? 1UL : 0UL);
6162 }
6163
6164 /**
6165 * @brief Get transfer complete flag.
6166 * @note This API is used for all available DMA channels.
6167 * @rmtoll CSR TCF LL_DMA_IsActiveFlag_TC
6168 * @param DMAx DMAx Instance
6169 * @param Channel This parameter can be one of the following values:
6170 * @arg @ref LL_DMA_CHANNEL_0
6171 * @arg @ref LL_DMA_CHANNEL_1
6172 * @arg @ref LL_DMA_CHANNEL_2
6173 * @arg @ref LL_DMA_CHANNEL_3
6174 * @arg @ref LL_DMA_CHANNEL_4
6175 * @arg @ref LL_DMA_CHANNEL_5
6176 * @arg @ref LL_DMA_CHANNEL_6
6177 * @arg @ref LL_DMA_CHANNEL_7
6178 * @arg @ref LL_DMA_CHANNEL_8
6179 * @arg @ref LL_DMA_CHANNEL_9
6180 * @arg @ref LL_DMA_CHANNEL_10
6181 * @arg @ref LL_DMA_CHANNEL_11
6182 * @arg @ref LL_DMA_CHANNEL_12
6183 * @arg @ref LL_DMA_CHANNEL_13
6184 * @arg @ref LL_DMA_CHANNEL_14
6185 * @arg @ref LL_DMA_CHANNEL_15
6186 * @retval State of bit (1 or 0).
6187 */
LL_DMA_IsActiveFlag_TC(const DMA_TypeDef * DMAx,uint32_t Channel)6188 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
6189 {
6190 uint32_t dma_base_addr = (uint32_t)DMAx;
6191 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_TCF)
6192 == (DMA_CSR_TCF)) ? 1UL : 0UL);
6193 }
6194
6195 /**
6196 * @brief Get idle flag.
6197 * @note This API is used for all available DMA channels.
6198 * @rmtoll CSR IDLEF LL_DMA_IsActiveFlag_IDLE
6199 * @param DMAx DMAx Instance
6200 * @param Channel This parameter can be one of the following values:
6201 * @arg @ref LL_DMA_CHANNEL_0
6202 * @arg @ref LL_DMA_CHANNEL_1
6203 * @arg @ref LL_DMA_CHANNEL_2
6204 * @arg @ref LL_DMA_CHANNEL_3
6205 * @arg @ref LL_DMA_CHANNEL_4
6206 * @arg @ref LL_DMA_CHANNEL_5
6207 * @arg @ref LL_DMA_CHANNEL_6
6208 * @arg @ref LL_DMA_CHANNEL_7
6209 * @arg @ref LL_DMA_CHANNEL_8
6210 * @arg @ref LL_DMA_CHANNEL_9
6211 * @arg @ref LL_DMA_CHANNEL_10
6212 * @arg @ref LL_DMA_CHANNEL_11
6213 * @arg @ref LL_DMA_CHANNEL_12
6214 * @arg @ref LL_DMA_CHANNEL_13
6215 * @arg @ref LL_DMA_CHANNEL_14
6216 * @arg @ref LL_DMA_CHANNEL_15
6217 * @retval State of bit (1 or 0).
6218 */
LL_DMA_IsActiveFlag_IDLE(const DMA_TypeDef * DMAx,uint32_t Channel)6219 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_IDLE(const DMA_TypeDef *DMAx, uint32_t Channel)
6220 {
6221 uint32_t dma_base_addr = (uint32_t)DMAx;
6222 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CSR, DMA_CSR_IDLEF)
6223 == (DMA_CSR_IDLEF)) ? 1UL : 0UL);
6224 }
6225
6226 /**
6227 * @brief Check if nsecure masked interrupt is active.
6228 * @note This API is used for all available DMA channels.
6229 * @rmtoll MISR MISx LL_DMA_IsActiveFlag_MIS
6230 * @param DMAx DMAx Instance
6231 * @param Channel This parameter can be one of the following values:
6232 * @arg @ref LL_DMA_CHANNEL_0
6233 * @arg @ref LL_DMA_CHANNEL_1
6234 * @arg @ref LL_DMA_CHANNEL_2
6235 * @arg @ref LL_DMA_CHANNEL_3
6236 * @arg @ref LL_DMA_CHANNEL_4
6237 * @arg @ref LL_DMA_CHANNEL_5
6238 * @arg @ref LL_DMA_CHANNEL_6
6239 * @arg @ref LL_DMA_CHANNEL_7
6240 * @arg @ref LL_DMA_CHANNEL_8
6241 * @arg @ref LL_DMA_CHANNEL_9
6242 * @arg @ref LL_DMA_CHANNEL_10
6243 * @arg @ref LL_DMA_CHANNEL_11
6244 * @arg @ref LL_DMA_CHANNEL_12
6245 * @arg @ref LL_DMA_CHANNEL_13
6246 * @arg @ref LL_DMA_CHANNEL_14
6247 * @arg @ref LL_DMA_CHANNEL_15
6248 * @retval State of bit (1 or 0).
6249 */
LL_DMA_IsActiveFlag_MIS(const DMA_TypeDef * DMAx,uint32_t Channel)6250 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_MIS(const DMA_TypeDef *DMAx, uint32_t Channel)
6251 {
6252 return ((READ_BIT(DMAx->MISR, (DMA_MISR_MIS0 << (Channel & 0x0FU)))
6253 == (DMA_MISR_MIS0 << (Channel & 0x0FU))) ? 1UL : 0UL);
6254 }
6255
6256 #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
6257 /**
6258 * @brief Check if secure masked interrupt is active.
6259 * @note This API is used for all available DMA channels.
6260 * @rmtoll SMISR MISx LL_DMA_IsActiveFlag_SMIS
6261 * @param DMAx DMAx Instance
6262 * @param Channel This parameter can be one of the following values:
6263 * @arg @ref LL_DMA_CHANNEL_0
6264 * @arg @ref LL_DMA_CHANNEL_1
6265 * @arg @ref LL_DMA_CHANNEL_2
6266 * @arg @ref LL_DMA_CHANNEL_3
6267 * @arg @ref LL_DMA_CHANNEL_4
6268 * @arg @ref LL_DMA_CHANNEL_5
6269 * @arg @ref LL_DMA_CHANNEL_6
6270 * @arg @ref LL_DMA_CHANNEL_7
6271 * @arg @ref LL_DMA_CHANNEL_8
6272 * @arg @ref LL_DMA_CHANNEL_9
6273 * @arg @ref LL_DMA_CHANNEL_10
6274 * @arg @ref LL_DMA_CHANNEL_11
6275 * @arg @ref LL_DMA_CHANNEL_12
6276 * @arg @ref LL_DMA_CHANNEL_13
6277 * @arg @ref LL_DMA_CHANNEL_14
6278 * @arg @ref LL_DMA_CHANNEL_15
6279 * @retval State of bit (1 or 0).
6280 */
LL_DMA_IsActiveFlag_SMIS(const DMA_TypeDef * DMAx,uint32_t Channel)6281 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_SMIS(const DMA_TypeDef *DMAx, uint32_t Channel)
6282 {
6283 return ((READ_BIT(DMAx->SMISR, (DMA_SMISR_MIS0 << (Channel & 0x0000000FU)))
6284 == (DMA_SMISR_MIS0 << (Channel & 0x0000000FU))) ? 1UL : 0UL);
6285 }
6286 #endif /* (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) */
6287 /**
6288 * @}
6289 */
6290
6291 /** @defgroup DMA_LL_EF_IT_Management Interrupt Management
6292 * @{
6293 */
6294
6295 /**
6296 * @brief Enable trigger overrun interrupt.
6297 * @note This API is used for all available DMA channels.
6298 * @rmtoll CCR TOIE LL_DMA_EnableIT_TO
6299 * @param DMAx DMAx Instance
6300 * @param Channel This parameter can be one of the following values:
6301 * @arg @ref LL_DMA_CHANNEL_0
6302 * @arg @ref LL_DMA_CHANNEL_1
6303 * @arg @ref LL_DMA_CHANNEL_2
6304 * @arg @ref LL_DMA_CHANNEL_3
6305 * @arg @ref LL_DMA_CHANNEL_4
6306 * @arg @ref LL_DMA_CHANNEL_5
6307 * @arg @ref LL_DMA_CHANNEL_6
6308 * @arg @ref LL_DMA_CHANNEL_7
6309 * @arg @ref LL_DMA_CHANNEL_8
6310 * @arg @ref LL_DMA_CHANNEL_9
6311 * @arg @ref LL_DMA_CHANNEL_10
6312 * @arg @ref LL_DMA_CHANNEL_11
6313 * @arg @ref LL_DMA_CHANNEL_12
6314 * @arg @ref LL_DMA_CHANNEL_13
6315 * @arg @ref LL_DMA_CHANNEL_14
6316 * @arg @ref LL_DMA_CHANNEL_15
6317 * @retval None.
6318 */
LL_DMA_EnableIT_TO(const DMA_TypeDef * DMAx,uint32_t Channel)6319 __STATIC_INLINE void LL_DMA_EnableIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
6320 {
6321 uint32_t dma_base_addr = (uint32_t)DMAx;
6322 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE);
6323 }
6324
6325 /**
6326 * @brief Enable suspension interrupt.
6327 * @note This API is used for all available DMA channels.
6328 * @rmtoll CCR SUSPIE LL_DMA_EnableIT_SUSP
6329 * @param DMAx DMAx Instance
6330 * @param Channel This parameter can be one of the following values:
6331 * @arg @ref LL_DMA_CHANNEL_0
6332 * @arg @ref LL_DMA_CHANNEL_1
6333 * @arg @ref LL_DMA_CHANNEL_2
6334 * @arg @ref LL_DMA_CHANNEL_3
6335 * @arg @ref LL_DMA_CHANNEL_4
6336 * @arg @ref LL_DMA_CHANNEL_5
6337 * @arg @ref LL_DMA_CHANNEL_6
6338 * @arg @ref LL_DMA_CHANNEL_7
6339 * @arg @ref LL_DMA_CHANNEL_8
6340 * @arg @ref LL_DMA_CHANNEL_9
6341 * @arg @ref LL_DMA_CHANNEL_10
6342 * @arg @ref LL_DMA_CHANNEL_11
6343 * @arg @ref LL_DMA_CHANNEL_12
6344 * @arg @ref LL_DMA_CHANNEL_13
6345 * @arg @ref LL_DMA_CHANNEL_14
6346 * @arg @ref LL_DMA_CHANNEL_15
6347 * @retval None.
6348 */
LL_DMA_EnableIT_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)6349 __STATIC_INLINE void LL_DMA_EnableIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
6350 {
6351 uint32_t dma_base_addr = (uint32_t)DMAx;
6352 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE);
6353 }
6354
6355 /**
6356 * @brief Enable user setting error interrupt.
6357 * @note This API is used for all available DMA channels.
6358 * @rmtoll CCR USEIE LL_DMA_EnableIT_USE
6359 * @param DMAx DMAx Instance
6360 * @param Channel This parameter can be one of the following values:
6361 * @arg @ref LL_DMA_CHANNEL_0
6362 * @arg @ref LL_DMA_CHANNEL_1
6363 * @arg @ref LL_DMA_CHANNEL_2
6364 * @arg @ref LL_DMA_CHANNEL_3
6365 * @arg @ref LL_DMA_CHANNEL_4
6366 * @arg @ref LL_DMA_CHANNEL_5
6367 * @arg @ref LL_DMA_CHANNEL_6
6368 * @arg @ref LL_DMA_CHANNEL_7
6369 * @arg @ref LL_DMA_CHANNEL_8
6370 * @arg @ref LL_DMA_CHANNEL_9
6371 * @arg @ref LL_DMA_CHANNEL_10
6372 * @arg @ref LL_DMA_CHANNEL_11
6373 * @arg @ref LL_DMA_CHANNEL_12
6374 * @arg @ref LL_DMA_CHANNEL_13
6375 * @arg @ref LL_DMA_CHANNEL_14
6376 * @arg @ref LL_DMA_CHANNEL_15
6377 * @retval None.
6378 */
LL_DMA_EnableIT_USE(const DMA_TypeDef * DMAx,uint32_t Channel)6379 __STATIC_INLINE void LL_DMA_EnableIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
6380 {
6381 uint32_t dma_base_addr = (uint32_t)DMAx;
6382 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE);
6383 }
6384
6385 /**
6386 * @brief Enable update link transfer error interrupt.
6387 * @note This API is used for all available DMA channels.
6388 * @rmtoll CCR ULEIE LL_DMA_EnableIT_ULE
6389 * @param DMAx DMAx Instance
6390 * @param Channel This parameter can be one of the following values:
6391 * @arg @ref LL_DMA_CHANNEL_0
6392 * @arg @ref LL_DMA_CHANNEL_1
6393 * @arg @ref LL_DMA_CHANNEL_2
6394 * @arg @ref LL_DMA_CHANNEL_3
6395 * @arg @ref LL_DMA_CHANNEL_4
6396 * @arg @ref LL_DMA_CHANNEL_5
6397 * @arg @ref LL_DMA_CHANNEL_6
6398 * @arg @ref LL_DMA_CHANNEL_7
6399 * @arg @ref LL_DMA_CHANNEL_8
6400 * @arg @ref LL_DMA_CHANNEL_9
6401 * @arg @ref LL_DMA_CHANNEL_10
6402 * @arg @ref LL_DMA_CHANNEL_11
6403 * @arg @ref LL_DMA_CHANNEL_12
6404 * @arg @ref LL_DMA_CHANNEL_13
6405 * @arg @ref LL_DMA_CHANNEL_14
6406 * @arg @ref LL_DMA_CHANNEL_15
6407 * @retval None.
6408 */
LL_DMA_EnableIT_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)6409 __STATIC_INLINE void LL_DMA_EnableIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
6410 {
6411 uint32_t dma_base_addr = (uint32_t)DMAx;
6412 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE);
6413 }
6414
6415 /**
6416 * @brief Enable data transfer error interrupt.
6417 * @note This API is used for all available DMA channels.
6418 * @rmtoll CCR DTEIE LL_DMA_EnableIT_DTE
6419 * @param DMAx DMAx Instance
6420 * @param Channel This parameter can be one of the following values:
6421 * @arg @ref LL_DMA_CHANNEL_0
6422 * @arg @ref LL_DMA_CHANNEL_1
6423 * @arg @ref LL_DMA_CHANNEL_2
6424 * @arg @ref LL_DMA_CHANNEL_3
6425 * @arg @ref LL_DMA_CHANNEL_4
6426 * @arg @ref LL_DMA_CHANNEL_5
6427 * @arg @ref LL_DMA_CHANNEL_6
6428 * @arg @ref LL_DMA_CHANNEL_7
6429 * @arg @ref LL_DMA_CHANNEL_8
6430 * @arg @ref LL_DMA_CHANNEL_9
6431 * @arg @ref LL_DMA_CHANNEL_10
6432 * @arg @ref LL_DMA_CHANNEL_11
6433 * @arg @ref LL_DMA_CHANNEL_12
6434 * @arg @ref LL_DMA_CHANNEL_13
6435 * @arg @ref LL_DMA_CHANNEL_14
6436 * @arg @ref LL_DMA_CHANNEL_15
6437 * @retval None.
6438 */
LL_DMA_EnableIT_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)6439 __STATIC_INLINE void LL_DMA_EnableIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
6440 {
6441 uint32_t dma_base_addr = (uint32_t)DMAx;
6442 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE);
6443 }
6444
6445 /**
6446 * @brief Enable half transfer complete interrupt.
6447 * @note This API is used for all available DMA channels.
6448 * @rmtoll CCR HTIE LL_DMA_EnableIT_HT
6449 * @param DMAx DMAx Instance
6450 * @param Channel This parameter can be one of the following values:
6451 * @arg @ref LL_DMA_CHANNEL_0
6452 * @arg @ref LL_DMA_CHANNEL_1
6453 * @arg @ref LL_DMA_CHANNEL_2
6454 * @arg @ref LL_DMA_CHANNEL_3
6455 * @arg @ref LL_DMA_CHANNEL_4
6456 * @arg @ref LL_DMA_CHANNEL_5
6457 * @arg @ref LL_DMA_CHANNEL_6
6458 * @arg @ref LL_DMA_CHANNEL_7
6459 * @arg @ref LL_DMA_CHANNEL_8
6460 * @arg @ref LL_DMA_CHANNEL_9
6461 * @arg @ref LL_DMA_CHANNEL_10
6462 * @arg @ref LL_DMA_CHANNEL_11
6463 * @arg @ref LL_DMA_CHANNEL_12
6464 * @arg @ref LL_DMA_CHANNEL_13
6465 * @arg @ref LL_DMA_CHANNEL_14
6466 * @arg @ref LL_DMA_CHANNEL_15
6467 * @retval None.
6468 */
LL_DMA_EnableIT_HT(const DMA_TypeDef * DMAx,uint32_t Channel)6469 __STATIC_INLINE void LL_DMA_EnableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
6470 {
6471 uint32_t dma_base_addr = (uint32_t)DMAx;
6472 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE);
6473 }
6474
6475 /**
6476 * @brief Enable transfer complete interrupt.
6477 * @note This API is used for all available DMA channels.
6478 * @rmtoll CCR TCIE LL_DMA_EnableIT_TC
6479 * @param DMAx DMAx Instance
6480 * @param Channel This parameter can be one of the following values:
6481 * @arg @ref LL_DMA_CHANNEL_0
6482 * @arg @ref LL_DMA_CHANNEL_1
6483 * @arg @ref LL_DMA_CHANNEL_2
6484 * @arg @ref LL_DMA_CHANNEL_3
6485 * @arg @ref LL_DMA_CHANNEL_4
6486 * @arg @ref LL_DMA_CHANNEL_5
6487 * @arg @ref LL_DMA_CHANNEL_6
6488 * @arg @ref LL_DMA_CHANNEL_7
6489 * @arg @ref LL_DMA_CHANNEL_8
6490 * @arg @ref LL_DMA_CHANNEL_9
6491 * @arg @ref LL_DMA_CHANNEL_10
6492 * @arg @ref LL_DMA_CHANNEL_11
6493 * @arg @ref LL_DMA_CHANNEL_12
6494 * @arg @ref LL_DMA_CHANNEL_13
6495 * @arg @ref LL_DMA_CHANNEL_14
6496 * @arg @ref LL_DMA_CHANNEL_15
6497 * @retval None.
6498 */
LL_DMA_EnableIT_TC(const DMA_TypeDef * DMAx,uint32_t Channel)6499 __STATIC_INLINE void LL_DMA_EnableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
6500 {
6501 uint32_t dma_base_addr = (uint32_t)DMAx;
6502 SET_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE);
6503 }
6504
6505 /**
6506 * @brief Disable trigger overrun interrupt.
6507 * @note This API is used for all available DMA channels.
6508 * @rmtoll CCR TOIE LL_DMA_DisableIT_TO
6509 * @param DMAx DMAx Instance
6510 * @param Channel This parameter can be one of the following values:
6511 * @arg @ref LL_DMA_CHANNEL_0
6512 * @arg @ref LL_DMA_CHANNEL_1
6513 * @arg @ref LL_DMA_CHANNEL_2
6514 * @arg @ref LL_DMA_CHANNEL_3
6515 * @arg @ref LL_DMA_CHANNEL_4
6516 * @arg @ref LL_DMA_CHANNEL_5
6517 * @arg @ref LL_DMA_CHANNEL_6
6518 * @arg @ref LL_DMA_CHANNEL_7
6519 * @arg @ref LL_DMA_CHANNEL_8
6520 * @arg @ref LL_DMA_CHANNEL_9
6521 * @arg @ref LL_DMA_CHANNEL_10
6522 * @arg @ref LL_DMA_CHANNEL_11
6523 * @arg @ref LL_DMA_CHANNEL_12
6524 * @arg @ref LL_DMA_CHANNEL_13
6525 * @arg @ref LL_DMA_CHANNEL_14
6526 * @arg @ref LL_DMA_CHANNEL_15
6527 * @retval None.
6528 */
LL_DMA_DisableIT_TO(const DMA_TypeDef * DMAx,uint32_t Channel)6529 __STATIC_INLINE void LL_DMA_DisableIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
6530 {
6531 uint32_t dma_base_addr = (uint32_t)DMAx;
6532 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE);
6533 }
6534
6535 /**
6536 * @brief Disable suspension interrupt.
6537 * @note This API is used for all available DMA channels.
6538 * @rmtoll CCR SUSPIE LL_DMA_DisableIT_SUSP
6539 * @param DMAx DMAx Instance
6540 * @param Channel This parameter can be one of the following values:
6541 * @arg @ref LL_DMA_CHANNEL_0
6542 * @arg @ref LL_DMA_CHANNEL_1
6543 * @arg @ref LL_DMA_CHANNEL_2
6544 * @arg @ref LL_DMA_CHANNEL_3
6545 * @arg @ref LL_DMA_CHANNEL_4
6546 * @arg @ref LL_DMA_CHANNEL_5
6547 * @arg @ref LL_DMA_CHANNEL_6
6548 * @arg @ref LL_DMA_CHANNEL_7
6549 * @arg @ref LL_DMA_CHANNEL_8
6550 * @arg @ref LL_DMA_CHANNEL_9
6551 * @arg @ref LL_DMA_CHANNEL_10
6552 * @arg @ref LL_DMA_CHANNEL_11
6553 * @arg @ref LL_DMA_CHANNEL_12
6554 * @arg @ref LL_DMA_CHANNEL_13
6555 * @arg @ref LL_DMA_CHANNEL_14
6556 * @arg @ref LL_DMA_CHANNEL_15
6557 * @retval None.
6558 */
LL_DMA_DisableIT_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)6559 __STATIC_INLINE void LL_DMA_DisableIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
6560 {
6561 uint32_t dma_base_addr = (uint32_t)DMAx;
6562 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE);
6563 }
6564
6565 /**
6566 * @brief Disable user setting error interrupt.
6567 * @note This API is used for all available DMA channels.
6568 * @rmtoll CCR USEIE LL_DMA_DisableIT_USE
6569 * @param DMAx DMAx Instance
6570 * @param Channel This parameter can be one of the following values:
6571 * @arg @ref LL_DMA_CHANNEL_0
6572 * @arg @ref LL_DMA_CHANNEL_1
6573 * @arg @ref LL_DMA_CHANNEL_2
6574 * @arg @ref LL_DMA_CHANNEL_3
6575 * @arg @ref LL_DMA_CHANNEL_4
6576 * @arg @ref LL_DMA_CHANNEL_5
6577 * @arg @ref LL_DMA_CHANNEL_6
6578 * @arg @ref LL_DMA_CHANNEL_7
6579 * @arg @ref LL_DMA_CHANNEL_8
6580 * @arg @ref LL_DMA_CHANNEL_9
6581 * @arg @ref LL_DMA_CHANNEL_10
6582 * @arg @ref LL_DMA_CHANNEL_11
6583 * @arg @ref LL_DMA_CHANNEL_12
6584 * @arg @ref LL_DMA_CHANNEL_13
6585 * @arg @ref LL_DMA_CHANNEL_14
6586 * @arg @ref LL_DMA_CHANNEL_15
6587 * @retval None.
6588 */
LL_DMA_DisableIT_USE(const DMA_TypeDef * DMAx,uint32_t Channel)6589 __STATIC_INLINE void LL_DMA_DisableIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
6590 {
6591 uint32_t dma_base_addr = (uint32_t)DMAx;
6592 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE);
6593 }
6594
6595 /**
6596 * @brief Disable update link transfer error interrupt.
6597 * @note This API is used for all available DMA channels.
6598 * @rmtoll CCR ULEIE LL_DMA_DisableIT_ULE
6599 * @param DMAx DMAx Instance
6600 * @param Channel This parameter can be one of the following values:
6601 * @arg @ref LL_DMA_CHANNEL_0
6602 * @arg @ref LL_DMA_CHANNEL_1
6603 * @arg @ref LL_DMA_CHANNEL_2
6604 * @arg @ref LL_DMA_CHANNEL_3
6605 * @arg @ref LL_DMA_CHANNEL_4
6606 * @arg @ref LL_DMA_CHANNEL_5
6607 * @arg @ref LL_DMA_CHANNEL_6
6608 * @arg @ref LL_DMA_CHANNEL_7
6609 * @arg @ref LL_DMA_CHANNEL_8
6610 * @arg @ref LL_DMA_CHANNEL_9
6611 * @arg @ref LL_DMA_CHANNEL_10
6612 * @arg @ref LL_DMA_CHANNEL_11
6613 * @arg @ref LL_DMA_CHANNEL_12
6614 * @arg @ref LL_DMA_CHANNEL_13
6615 * @arg @ref LL_DMA_CHANNEL_14
6616 * @arg @ref LL_DMA_CHANNEL_15
6617 * @retval None.
6618 */
LL_DMA_DisableIT_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)6619 __STATIC_INLINE void LL_DMA_DisableIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
6620 {
6621 uint32_t dma_base_addr = (uint32_t)DMAx;
6622 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE);
6623 }
6624
6625 /**
6626 * @brief Disable data transfer error interrupt.
6627 * @note This API is used for all available DMA channels.
6628 * @rmtoll CCR DTEIE LL_DMA_DisableIT_DTE
6629 * @param DMAx DMAx Instance
6630 * @param Channel This parameter can be one of the following values:
6631 * @arg @ref LL_DMA_CHANNEL_0
6632 * @arg @ref LL_DMA_CHANNEL_1
6633 * @arg @ref LL_DMA_CHANNEL_2
6634 * @arg @ref LL_DMA_CHANNEL_3
6635 * @arg @ref LL_DMA_CHANNEL_4
6636 * @arg @ref LL_DMA_CHANNEL_5
6637 * @arg @ref LL_DMA_CHANNEL_6
6638 * @arg @ref LL_DMA_CHANNEL_7
6639 * @arg @ref LL_DMA_CHANNEL_8
6640 * @arg @ref LL_DMA_CHANNEL_9
6641 * @arg @ref LL_DMA_CHANNEL_10
6642 * @arg @ref LL_DMA_CHANNEL_11
6643 * @arg @ref LL_DMA_CHANNEL_12
6644 * @arg @ref LL_DMA_CHANNEL_13
6645 * @arg @ref LL_DMA_CHANNEL_14
6646 * @arg @ref LL_DMA_CHANNEL_15
6647 * @retval None.
6648 */
LL_DMA_DisableIT_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)6649 __STATIC_INLINE void LL_DMA_DisableIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
6650 {
6651 uint32_t dma_base_addr = (uint32_t)DMAx;
6652 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE);
6653 }
6654
6655 /**
6656 * @brief Disable half transfer complete interrupt.
6657 * @note This API is used for all available DMA channels.
6658 * @rmtoll CCR HTIE LL_DMA_DisableIT_HT
6659 * @param DMAx DMAx Instance
6660 * @param Channel This parameter can be one of the following values:
6661 * @arg @ref LL_DMA_CHANNEL_0
6662 * @arg @ref LL_DMA_CHANNEL_1
6663 * @arg @ref LL_DMA_CHANNEL_2
6664 * @arg @ref LL_DMA_CHANNEL_3
6665 * @arg @ref LL_DMA_CHANNEL_4
6666 * @arg @ref LL_DMA_CHANNEL_5
6667 * @arg @ref LL_DMA_CHANNEL_6
6668 * @arg @ref LL_DMA_CHANNEL_7
6669 * @arg @ref LL_DMA_CHANNEL_8
6670 * @arg @ref LL_DMA_CHANNEL_9
6671 * @arg @ref LL_DMA_CHANNEL_10
6672 * @arg @ref LL_DMA_CHANNEL_11
6673 * @arg @ref LL_DMA_CHANNEL_12
6674 * @arg @ref LL_DMA_CHANNEL_13
6675 * @arg @ref LL_DMA_CHANNEL_14
6676 * @arg @ref LL_DMA_CHANNEL_15
6677 * @retval None.
6678 */
LL_DMA_DisableIT_HT(const DMA_TypeDef * DMAx,uint32_t Channel)6679 __STATIC_INLINE void LL_DMA_DisableIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
6680 {
6681 uint32_t dma_base_addr = (uint32_t)DMAx;
6682 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE);
6683 }
6684
6685 /**
6686 * @brief Disable transfer complete interrupt.
6687 * @note This API is used for all available DMA channels.
6688 * @rmtoll CCR TCIE LL_DMA_DisableIT_TC
6689 * @param DMAx DMAx Instance
6690 * @param Channel This parameter can be one of the following values:
6691 * @arg @ref LL_DMA_CHANNEL_0
6692 * @arg @ref LL_DMA_CHANNEL_1
6693 * @arg @ref LL_DMA_CHANNEL_2
6694 * @arg @ref LL_DMA_CHANNEL_3
6695 * @arg @ref LL_DMA_CHANNEL_4
6696 * @arg @ref LL_DMA_CHANNEL_5
6697 * @arg @ref LL_DMA_CHANNEL_6
6698 * @arg @ref LL_DMA_CHANNEL_7
6699 * @arg @ref LL_DMA_CHANNEL_8
6700 * @arg @ref LL_DMA_CHANNEL_9
6701 * @arg @ref LL_DMA_CHANNEL_10
6702 * @arg @ref LL_DMA_CHANNEL_11
6703 * @arg @ref LL_DMA_CHANNEL_12
6704 * @arg @ref LL_DMA_CHANNEL_13
6705 * @arg @ref LL_DMA_CHANNEL_14
6706 * @arg @ref LL_DMA_CHANNEL_15
6707 * @retval None.
6708 */
LL_DMA_DisableIT_TC(const DMA_TypeDef * DMAx,uint32_t Channel)6709 __STATIC_INLINE void LL_DMA_DisableIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
6710 {
6711 uint32_t dma_base_addr = (uint32_t)DMAx;
6712 CLEAR_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE);
6713 }
6714
6715 /**
6716 * @brief Check if trigger overrun interrupt is enabled.
6717 * @note This API is used for all available DMA channels.
6718 * @rmtoll CCR TOIE LL_DMA_IsEnabledIT_TO
6719 * @param DMAx DMAx Instance
6720 * @param Channel This parameter can be one of the following values:
6721 * @arg @ref LL_DMA_CHANNEL_0
6722 * @arg @ref LL_DMA_CHANNEL_1
6723 * @arg @ref LL_DMA_CHANNEL_2
6724 * @arg @ref LL_DMA_CHANNEL_3
6725 * @arg @ref LL_DMA_CHANNEL_4
6726 * @arg @ref LL_DMA_CHANNEL_5
6727 * @arg @ref LL_DMA_CHANNEL_6
6728 * @arg @ref LL_DMA_CHANNEL_7
6729 * @arg @ref LL_DMA_CHANNEL_8
6730 * @arg @ref LL_DMA_CHANNEL_9
6731 * @arg @ref LL_DMA_CHANNEL_10
6732 * @arg @ref LL_DMA_CHANNEL_11
6733 * @arg @ref LL_DMA_CHANNEL_12
6734 * @arg @ref LL_DMA_CHANNEL_13
6735 * @arg @ref LL_DMA_CHANNEL_14
6736 * @arg @ref LL_DMA_CHANNEL_15
6737 * @retval State of bit (1 or 0).
6738 */
LL_DMA_IsEnabledIT_TO(const DMA_TypeDef * DMAx,uint32_t Channel)6739 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TO(const DMA_TypeDef *DMAx, uint32_t Channel)
6740 {
6741 uint32_t dma_base_addr = (uint32_t)DMAx;
6742 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TOIE)
6743 == DMA_CCR_TOIE) ? 1UL : 0UL);
6744 }
6745
6746 /**
6747 * @brief Check if suspension interrupt is enabled.
6748 * @note This API is used for all available DMA channels.
6749 * @rmtoll CCR SUSPIE LL_DMA_IsEnabledIT_SUSP
6750 * @param DMAx DMAx Instance
6751 * @param Channel This parameter can be one of the following values:
6752 * @arg @ref LL_DMA_CHANNEL_0
6753 * @arg @ref LL_DMA_CHANNEL_1
6754 * @arg @ref LL_DMA_CHANNEL_2
6755 * @arg @ref LL_DMA_CHANNEL_3
6756 * @arg @ref LL_DMA_CHANNEL_4
6757 * @arg @ref LL_DMA_CHANNEL_5
6758 * @arg @ref LL_DMA_CHANNEL_6
6759 * @arg @ref LL_DMA_CHANNEL_7
6760 * @arg @ref LL_DMA_CHANNEL_8
6761 * @arg @ref LL_DMA_CHANNEL_9
6762 * @arg @ref LL_DMA_CHANNEL_10
6763 * @arg @ref LL_DMA_CHANNEL_11
6764 * @arg @ref LL_DMA_CHANNEL_12
6765 * @arg @ref LL_DMA_CHANNEL_13
6766 * @arg @ref LL_DMA_CHANNEL_14
6767 * @arg @ref LL_DMA_CHANNEL_15
6768 * @retval State of bit (1 or 0).
6769 */
LL_DMA_IsEnabledIT_SUSP(const DMA_TypeDef * DMAx,uint32_t Channel)6770 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_SUSP(const DMA_TypeDef *DMAx, uint32_t Channel)
6771 {
6772 uint32_t dma_base_addr = (uint32_t)DMAx;
6773 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_SUSPIE)
6774 == DMA_CCR_SUSPIE) ? 1UL : 0UL);
6775 }
6776
6777 /**
6778 * @brief Check if user setting error interrupt is enabled.
6779 * @note This API is used for all available DMA channels.
6780 * @rmtoll CCR USEIE LL_DMA_IsEnabledIT_USE
6781 * @param DMAx DMAx Instance
6782 * @param Channel This parameter can be one of the following values:
6783 * @arg @ref LL_DMA_CHANNEL_0
6784 * @arg @ref LL_DMA_CHANNEL_1
6785 * @arg @ref LL_DMA_CHANNEL_2
6786 * @arg @ref LL_DMA_CHANNEL_3
6787 * @arg @ref LL_DMA_CHANNEL_4
6788 * @arg @ref LL_DMA_CHANNEL_5
6789 * @arg @ref LL_DMA_CHANNEL_6
6790 * @arg @ref LL_DMA_CHANNEL_7
6791 * @arg @ref LL_DMA_CHANNEL_8
6792 * @arg @ref LL_DMA_CHANNEL_9
6793 * @arg @ref LL_DMA_CHANNEL_10
6794 * @arg @ref LL_DMA_CHANNEL_11
6795 * @arg @ref LL_DMA_CHANNEL_12
6796 * @arg @ref LL_DMA_CHANNEL_13
6797 * @arg @ref LL_DMA_CHANNEL_14
6798 * @arg @ref LL_DMA_CHANNEL_15
6799 * @retval State of bit (1 or 0).
6800 */
LL_DMA_IsEnabledIT_USE(const DMA_TypeDef * DMAx,uint32_t Channel)6801 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_USE(const DMA_TypeDef *DMAx, uint32_t Channel)
6802 {
6803 uint32_t dma_base_addr = (uint32_t)DMAx;
6804 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_USEIE)
6805 == DMA_CCR_USEIE) ? 1UL : 0UL);
6806 }
6807
6808 /**
6809 * @brief Check if update link transfer error interrupt is enabled.
6810 * @note This API is used for all available DMA channels.
6811 * @rmtoll CCR ULEIE LL_DMA_IsEnabledIT_ULE
6812 * @param DMAx DMAx Instance
6813 * @param Channel This parameter can be one of the following values:
6814 * @arg @ref LL_DMA_CHANNEL_0
6815 * @arg @ref LL_DMA_CHANNEL_1
6816 * @arg @ref LL_DMA_CHANNEL_2
6817 * @arg @ref LL_DMA_CHANNEL_3
6818 * @arg @ref LL_DMA_CHANNEL_4
6819 * @arg @ref LL_DMA_CHANNEL_5
6820 * @arg @ref LL_DMA_CHANNEL_6
6821 * @arg @ref LL_DMA_CHANNEL_7
6822 * @arg @ref LL_DMA_CHANNEL_8
6823 * @arg @ref LL_DMA_CHANNEL_9
6824 * @arg @ref LL_DMA_CHANNEL_10
6825 * @arg @ref LL_DMA_CHANNEL_11
6826 * @arg @ref LL_DMA_CHANNEL_12
6827 * @arg @ref LL_DMA_CHANNEL_13
6828 * @arg @ref LL_DMA_CHANNEL_14
6829 * @arg @ref LL_DMA_CHANNEL_15
6830 * @retval State of bit (1 or 0).
6831 */
LL_DMA_IsEnabledIT_ULE(const DMA_TypeDef * DMAx,uint32_t Channel)6832 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_ULE(const DMA_TypeDef *DMAx, uint32_t Channel)
6833 {
6834 uint32_t dma_base_addr = (uint32_t)DMAx;
6835 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_ULEIE)
6836 == DMA_CCR_ULEIE) ? 1UL : 0UL);
6837 }
6838
6839 /**
6840 * @brief Check if data transfer error interrupt is enabled.
6841 * @note This API is used for all available DMA channels.
6842 * @rmtoll CCR DTEIE LL_DMA_IsEnabledIT_DTE
6843 * @param DMAx DMAx Instance
6844 * @param Channel This parameter can be one of the following values:
6845 * @arg @ref LL_DMA_CHANNEL_0
6846 * @arg @ref LL_DMA_CHANNEL_1
6847 * @arg @ref LL_DMA_CHANNEL_2
6848 * @arg @ref LL_DMA_CHANNEL_3
6849 * @arg @ref LL_DMA_CHANNEL_4
6850 * @arg @ref LL_DMA_CHANNEL_5
6851 * @arg @ref LL_DMA_CHANNEL_6
6852 * @arg @ref LL_DMA_CHANNEL_7
6853 * @arg @ref LL_DMA_CHANNEL_8
6854 * @arg @ref LL_DMA_CHANNEL_9
6855 * @arg @ref LL_DMA_CHANNEL_10
6856 * @arg @ref LL_DMA_CHANNEL_11
6857 * @arg @ref LL_DMA_CHANNEL_12
6858 * @arg @ref LL_DMA_CHANNEL_13
6859 * @arg @ref LL_DMA_CHANNEL_14
6860 * @arg @ref LL_DMA_CHANNEL_15
6861 * @retval State of bit (1 or 0).
6862 */
LL_DMA_IsEnabledIT_DTE(const DMA_TypeDef * DMAx,uint32_t Channel)6863 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DTE(const DMA_TypeDef *DMAx, uint32_t Channel)
6864 {
6865 uint32_t dma_base_addr = (uint32_t)DMAx;
6866 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_DTEIE)
6867 == DMA_CCR_DTEIE) ? 1UL : 0UL);
6868 }
6869
6870 /**
6871 * @brief Check if half transfer complete interrupt is enabled.
6872 * @note This API is used for all available DMA channels.
6873 * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT
6874 * @param DMAx DMAx Instance
6875 * @param Channel This parameter can be one of the following values:
6876 * @arg @ref LL_DMA_CHANNEL_0
6877 * @arg @ref LL_DMA_CHANNEL_1
6878 * @arg @ref LL_DMA_CHANNEL_2
6879 * @arg @ref LL_DMA_CHANNEL_3
6880 * @arg @ref LL_DMA_CHANNEL_4
6881 * @arg @ref LL_DMA_CHANNEL_5
6882 * @arg @ref LL_DMA_CHANNEL_6
6883 * @arg @ref LL_DMA_CHANNEL_7
6884 * @arg @ref LL_DMA_CHANNEL_8
6885 * @arg @ref LL_DMA_CHANNEL_9
6886 * @arg @ref LL_DMA_CHANNEL_10
6887 * @arg @ref LL_DMA_CHANNEL_11
6888 * @arg @ref LL_DMA_CHANNEL_12
6889 * @arg @ref LL_DMA_CHANNEL_13
6890 * @arg @ref LL_DMA_CHANNEL_14
6891 * @arg @ref LL_DMA_CHANNEL_15
6892 * @retval State of bit (1 or 0).
6893 */
LL_DMA_IsEnabledIT_HT(const DMA_TypeDef * DMAx,uint32_t Channel)6894 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(const DMA_TypeDef *DMAx, uint32_t Channel)
6895 {
6896 uint32_t dma_base_addr = (uint32_t)DMAx;
6897 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_HTIE)
6898 == DMA_CCR_HTIE) ? 1UL : 0UL);
6899 }
6900
6901 /**
6902 * @brief Check if transfer complete interrupt is enabled.
6903 * @note This API is used for all available DMA channels.
6904 * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC
6905 * @param DMAx DMAx Instance
6906 * @param Channel This parameter can be one of the following values:
6907 * @arg @ref LL_DMA_CHANNEL_0
6908 * @arg @ref LL_DMA_CHANNEL_1
6909 * @arg @ref LL_DMA_CHANNEL_2
6910 * @arg @ref LL_DMA_CHANNEL_3
6911 * @arg @ref LL_DMA_CHANNEL_4
6912 * @arg @ref LL_DMA_CHANNEL_5
6913 * @arg @ref LL_DMA_CHANNEL_6
6914 * @arg @ref LL_DMA_CHANNEL_7
6915 * @arg @ref LL_DMA_CHANNEL_8
6916 * @arg @ref LL_DMA_CHANNEL_9
6917 * @arg @ref LL_DMA_CHANNEL_10
6918 * @arg @ref LL_DMA_CHANNEL_11
6919 * @arg @ref LL_DMA_CHANNEL_12
6920 * @arg @ref LL_DMA_CHANNEL_13
6921 * @arg @ref LL_DMA_CHANNEL_14
6922 * @arg @ref LL_DMA_CHANNEL_15
6923 * @retval State of bit (1 or 0).
6924 */
LL_DMA_IsEnabledIT_TC(const DMA_TypeDef * DMAx,uint32_t Channel)6925 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(const DMA_TypeDef *DMAx, uint32_t Channel)
6926 {
6927 uint32_t dma_base_addr = (uint32_t)DMAx;
6928 return ((READ_BIT(((DMA_Channel_TypeDef *)(dma_base_addr + LL_DMA_CH_OFFSET_TAB[Channel]))->CCR, DMA_CCR_TCIE)
6929 == DMA_CCR_TCIE) ? 1UL : 0UL);
6930 }
6931 /**
6932 * @}
6933 */
6934
6935 #if defined (USE_FULL_LL_DRIVER)
6936 /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
6937 * @{
6938 */
6939 uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct);
6940 uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
6941
6942 void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
6943 void LL_DMA_ListStructInit(LL_DMA_InitLinkedListTypeDef *DMA_InitLinkedListStruct);
6944 void LL_DMA_NodeStructInit(LL_DMA_InitNodeTypeDef *DMA_InitNodeStruct);
6945
6946 uint32_t LL_DMA_List_Init(DMA_TypeDef *DMAx, uint32_t Channel,
6947 LL_DMA_InitLinkedListTypeDef *DMA_InitLinkedListStruct);
6948 uint32_t LL_DMA_List_DeInit(DMA_TypeDef *DMAx, uint32_t Channel);
6949
6950 uint32_t LL_DMA_CreateLinkNode(LL_DMA_InitNodeTypeDef *DMA_InitNodeStruct, LL_DMA_LinkNodeTypeDef *pNode);
6951 void LL_DMA_ConnectLinkNode(LL_DMA_LinkNodeTypeDef *pPrevLinkNode, uint32_t PrevNodeCLLRIdx,
6952 LL_DMA_LinkNodeTypeDef *pNewLinkNode, uint32_t NewNodeCLLRIdx);
6953 void LL_DMA_DisconnectNextLinkNode(LL_DMA_LinkNodeTypeDef *pLinkNode, uint32_t LinkNodeCLLRIdx);
6954 /**
6955 * @}
6956 */
6957 #endif /* USE_FULL_LL_DRIVER */
6958
6959 /**
6960 * @}
6961 */
6962
6963 /**
6964 * @}
6965 */
6966
6967 #endif /* GPDMA1 || LPDMA1 */
6968
6969 /**
6970 * @}
6971 */
6972
6973 #ifdef __cplusplus
6974 }
6975 #endif /* __cplusplus */
6976
6977 #endif /* STM32U5xx_LL_DMA_H */
6978
6979