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