STM32H735xx HAL User Manual
stm32h7xx_ll_dma.h
Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32h7xx_ll_dma.h
00004   * @author  MCD Application Team
00005   * @brief   Header file of DMA LL module.
00006   ******************************************************************************
00007   * @attention
00008   *
00009   * Copyright (c) 2017 STMicroelectronics.
00010   * All rights reserved.
00011   *
00012   * This software is licensed under terms that can be found in the LICENSE file
00013   * in the root directory of this software component.
00014   * If no LICENSE file comes with this software, it is provided AS-IS.
00015   *
00016   ******************************************************************************
00017   */
00018 
00019 /* Define to prevent recursive inclusion -------------------------------------*/
00020 #ifndef STM32H7xx_LL_DMA_H
00021 #define STM32H7xx_LL_DMA_H
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 /* Includes ------------------------------------------------------------------*/
00028 #include "stm32h7xx.h"
00029 #include "stm32h7xx_ll_dmamux.h"
00030 
00031 /** @addtogroup STM32H7xx_LL_Driver
00032   * @{
00033   */
00034 
00035 #if defined (DMA1) || defined (DMA2)
00036 
00037 /** @defgroup DMA_LL DMA
00038   * @{
00039   */
00040 
00041 /* Private types -------------------------------------------------------------*/
00042 /* Private variables ---------------------------------------------------------*/
00043 /** @defgroup DMA_LL_Private_Variables DMA Private Variables
00044   * @{
00045   */
00046 /* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */
00047 static const uint8_t LL_DMA_STR_OFFSET_TAB[] =
00048 {
00049   (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE),
00050   (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE),
00051   (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE),
00052   (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE),
00053   (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE),
00054   (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE),
00055   (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE),
00056   (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE)
00057 };
00058 
00059 
00060 /**
00061   * @}
00062   */
00063 
00064 /* Private macros ------------------------------------------------------------*/
00065 
00066 /**
00067   * @brief  Helper macro to convert DMA Instance DMAx into DMAMUX channel
00068   * @note   DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
00069   *         DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
00070   * @param  __DMA_INSTANCE__ DMAx
00071   * @retval Channel_Offset (LL_DMAMUX_CHANNEL_8 or 0).
00072   */
00073 #define LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(__DMA_INSTANCE__)   \
00074 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) ? 0UL : 8UL)
00075 
00076 /* Exported types ------------------------------------------------------------*/
00077 #if defined(USE_FULL_LL_DRIVER)
00078 /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
00079   * @{
00080   */
00081 typedef struct
00082 {
00083   uint32_t PeriphOrM2MSrcAddress;  /*!< Specifies the peripheral base address for DMA transfer
00084                                         or as Source base address in case of memory to memory transfer direction.
00085 
00086                                         This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
00087 
00088   uint32_t MemoryOrM2MDstAddress;  /*!< Specifies the memory base address for DMA transfer
00089                                         or as Destination base address in case of memory to memory transfer direction.
00090 
00091                                         This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
00092 
00093   uint32_t Direction;              /*!< Specifies if the data will be transferred from memory to peripheral,
00094                                         from memory to memory or from peripheral to memory.
00095                                         This parameter can be a value of @ref DMA_LL_EC_DIRECTION
00096 
00097                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */
00098 
00099   uint32_t Mode;                   /*!< Specifies the normal or circular operation mode.
00100                                         This parameter can be a value of @ref DMA_LL_EC_MODE
00101                                         @note The circular buffer mode cannot be used if the memory to memory
00102                                               data transfer direction is configured on the selected Stream
00103 
00104                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */
00105 
00106   uint32_t PeriphOrM2MSrcIncMode;  /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction
00107                                         is incremented or not.
00108                                         This parameter can be a value of @ref DMA_LL_EC_PERIPH
00109 
00110                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */
00111 
00112   uint32_t MemoryOrM2MDstIncMode;  /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction
00113                                         is incremented or not.
00114                                         This parameter can be a value of @ref DMA_LL_EC_MEMORY
00115 
00116                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */
00117 
00118   uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word)
00119                                         in case of memory to memory transfer direction.
00120                                         This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN
00121 
00122                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */
00123 
00124   uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word)
00125                                         in case of memory to memory transfer direction.
00126                                         This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN
00127 
00128                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */
00129 
00130   uint32_t NbData;                 /*!< Specifies the number of data to transfer, in data unit.
00131                                         The data unit is equal to the source buffer configuration set in PeripheralSize
00132                                         or MemorySize parameters depending in the transfer direction.
00133                                         This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF
00134 
00135                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */
00136 
00137   uint32_t PeriphRequest;          /*!< Specifies the peripheral request.
00138                                         This parameter can be a value of @ref DMAMUX1_Request_selection
00139 
00140                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */
00141 
00142   uint32_t Priority;               /*!< Specifies the channel priority level.
00143                                         This parameter can be a value of @ref DMA_LL_EC_PRIORITY
00144 
00145                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetStreamPriorityLevel(). */
00146 
00147   uint32_t FIFOMode;               /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.
00148                                         This parameter can be a value of @ref DMA_LL_FIFOMODE
00149                                         @note The Direct mode (FIFO mode disabled) cannot be used if the
00150                                         memory-to-memory data transfer is configured on the selected stream
00151 
00152                                         This feature can be modified afterwards using unitary functions @ref LL_DMA_EnableFifoMode() or @ref LL_DMA_EnableFifoMode() . */
00153 
00154   uint32_t FIFOThreshold;          /*!< Specifies the FIFO threshold level.
00155                                         This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHOLD
00156 
00157                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetFIFOThreshold(). */
00158 
00159   uint32_t MemBurst;               /*!< Specifies the Burst transfer configuration for the memory transfers.
00160                                         It specifies the amount of data to be transferred in a single non interruptible
00161                                         transaction.
00162                                         This parameter can be a value of @ref DMA_LL_EC_MBURST
00163                                         @note The burst mode is possible only if the address Increment mode is enabled.
00164 
00165                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryBurstxfer(). */
00166 
00167   uint32_t PeriphBurst;            /*!< Specifies the Burst transfer configuration for the peripheral transfers.
00168                                         It specifies the amount of data to be transferred in a single non interruptible
00169                                         transaction.
00170                                         This parameter can be a value of @ref DMA_LL_EC_PBURST
00171                                         @note The burst mode is possible only if the address Increment mode is enabled.
00172 
00173                                         This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphBurstxfer(). */
00174 
00175 } LL_DMA_InitTypeDef;
00176 /**
00177   * @}
00178   */
00179 #endif /*USE_FULL_LL_DRIVER*/
00180 /* Exported constants --------------------------------------------------------*/
00181 /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
00182   * @{
00183   */
00184 
00185 /** @defgroup DMA_LL_EC_STREAM STREAM
00186   * @{
00187   */
00188 #define LL_DMA_STREAM_0                   0x00000000U
00189 #define LL_DMA_STREAM_1                   0x00000001U
00190 #define LL_DMA_STREAM_2                   0x00000002U
00191 #define LL_DMA_STREAM_3                   0x00000003U
00192 #define LL_DMA_STREAM_4                   0x00000004U
00193 #define LL_DMA_STREAM_5                   0x00000005U
00194 #define LL_DMA_STREAM_6                   0x00000006U
00195 #define LL_DMA_STREAM_7                   0x00000007U
00196 #define LL_DMA_STREAM_ALL                 0xFFFF0000U
00197 /**
00198   * @}
00199   */
00200 
00201 
00202 /** @defgroup DMA_LL_EC_DIRECTION DIRECTION
00203   * @{
00204   */
00205 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U               /*!< Peripheral to memory direction */
00206 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0            /*!< Memory to peripheral direction */
00207 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1            /*!< Memory to memory direction     */
00208 /**
00209   * @}
00210   */
00211 
00212 /** @defgroup DMA_LL_EC_MODE MODE
00213   * @{
00214   */
00215 #define LL_DMA_MODE_NORMAL                0x00000000U               /*!< Normal Mode                  */
00216 #define LL_DMA_MODE_CIRCULAR              DMA_SxCR_CIRC             /*!< Circular Mode                */
00217 #define LL_DMA_MODE_PFCTRL                DMA_SxCR_PFCTRL           /*!< Peripheral flow control mode */
00218 /**
00219   * @}
00220   */
00221 
00222 /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE
00223   * @{
00224   */
00225 #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE  0x00000000U               /*!< Disable double buffering mode */
00226 #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE   DMA_SxCR_DBM              /*!< Enable double buffering mode  */
00227 /**
00228   * @}
00229   */
00230 
00231 /** @defgroup DMA_LL_EC_PERIPH PERIPH
00232   * @{
00233   */
00234 #define LL_DMA_PERIPH_NOINCREMENT         0x00000000U               /*!< Peripheral increment mode Disable */
00235 #define LL_DMA_PERIPH_INCREMENT           DMA_SxCR_PINC             /*!< Peripheral increment mode Enable  */
00236 /**
00237   * @}
00238   */
00239 
00240 /** @defgroup DMA_LL_EC_MEMORY MEMORY
00241   * @{
00242   */
00243 #define LL_DMA_MEMORY_NOINCREMENT         0x00000000U               /*!< Memory increment mode Disable */
00244 #define LL_DMA_MEMORY_INCREMENT           DMA_SxCR_MINC             /*!< Memory increment mode Enable  */
00245 /**
00246   * @}
00247   */
00248 
00249 /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN
00250   * @{
00251   */
00252 #define LL_DMA_PDATAALIGN_BYTE            0x00000000U               /*!< Peripheral data alignment : Byte     */
00253 #define LL_DMA_PDATAALIGN_HALFWORD        DMA_SxCR_PSIZE_0          /*!< Peripheral data alignment : HalfWord */
00254 #define LL_DMA_PDATAALIGN_WORD            DMA_SxCR_PSIZE_1          /*!< Peripheral data alignment : Word     */
00255 /**
00256   * @}
00257   */
00258 
00259 /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN
00260   * @{
00261   */
00262 #define LL_DMA_MDATAALIGN_BYTE            0x00000000U               /*!< Memory data alignment : Byte     */
00263 #define LL_DMA_MDATAALIGN_HALFWORD        DMA_SxCR_MSIZE_0          /*!< Memory data alignment : HalfWord */
00264 #define LL_DMA_MDATAALIGN_WORD            DMA_SxCR_MSIZE_1          /*!< Memory data alignment : Word     */
00265 /**
00266   * @}
00267   */
00268 
00269 /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE
00270   * @{
00271   */
00272 #define LL_DMA_OFFSETSIZE_PSIZE           0x00000000U               /*!< Peripheral increment offset size is linked to the PSIZE           */
00273 #define LL_DMA_OFFSETSIZE_FIXEDTO4        DMA_SxCR_PINCOS           /*!< Peripheral increment offset size is fixed to 4 (32-bit alignment) */
00274 /**
00275   * @}
00276   */
00277 
00278 /** @defgroup DMA_LL_EC_PRIORITY PRIORITY
00279   * @{
00280   */
00281 #define LL_DMA_PRIORITY_LOW               0x00000000U               /*!< Priority level : Low       */
00282 #define LL_DMA_PRIORITY_MEDIUM            DMA_SxCR_PL_0             /*!< Priority level : Medium    */
00283 #define LL_DMA_PRIORITY_HIGH              DMA_SxCR_PL_1             /*!< Priority level : High      */
00284 #define LL_DMA_PRIORITY_VERYHIGH          DMA_SxCR_PL               /*!< Priority level : Very_High */
00285 /**
00286   * @}
00287   */
00288 
00289 
00290 /** @defgroup DMA_LL_EC_MBURST MBURST
00291   * @{
00292   */
00293 #define LL_DMA_MBURST_SINGLE              0x00000000U                             /*!< Memory burst single transfer configuration      */
00294 #define LL_DMA_MBURST_INC4                DMA_SxCR_MBURST_0                       /*!< Memory burst of 4 beats transfer configuration  */
00295 #define LL_DMA_MBURST_INC8                DMA_SxCR_MBURST_1                       /*!< Memory burst of 8 beats transfer configuration  */
00296 #define LL_DMA_MBURST_INC16               (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst of 16 beats transfer configuration */
00297 /**
00298   * @}
00299   */
00300 
00301 /** @defgroup DMA_LL_EC_PBURST PBURST
00302   * @{
00303   */
00304 #define LL_DMA_PBURST_SINGLE              0x00000000U                             /*!< Peripheral burst single transfer configuration      */
00305 #define LL_DMA_PBURST_INC4                DMA_SxCR_PBURST_0                       /*!< Peripheral burst of 4 beats transfer configuration  */
00306 #define LL_DMA_PBURST_INC8                DMA_SxCR_PBURST_1                       /*!< Peripheral burst of 8 beats transfer configuration  */
00307 #define LL_DMA_PBURST_INC16               (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral burst of 16 beats transfer configuration */
00308 /**
00309   * @}
00310   */
00311 
00312 /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE
00313   * @{
00314   */
00315 #define LL_DMA_FIFOMODE_DISABLE           0x00000000U                             /*!< FIFO mode disable (direct mode is enabled) */
00316 #define LL_DMA_FIFOMODE_ENABLE            DMA_SxFCR_DMDIS                         /*!< FIFO mode enable                           */
00317 /**
00318   * @}
00319   */
00320 
00321 /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0
00322   * @{
00323   */
00324 #define LL_DMA_FIFOSTATUS_0_25            0x00000000U                             /*!< 0 < fifo_level < 1/4    */
00325 #define LL_DMA_FIFOSTATUS_25_50           DMA_SxFCR_FS_0                          /*!< 1/4 < fifo_level < 1/2  */
00326 #define LL_DMA_FIFOSTATUS_50_75           DMA_SxFCR_FS_1                          /*!< 1/2 < fifo_level < 3/4  */
00327 #define LL_DMA_FIFOSTATUS_75_100          (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0)       /*!< 3/4 < fifo_level < full */
00328 #define LL_DMA_FIFOSTATUS_EMPTY           DMA_SxFCR_FS_2                          /*!< FIFO is empty           */
00329 #define LL_DMA_FIFOSTATUS_FULL            (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0)       /*!< FIFO is full            */
00330 /**
00331   * @}
00332   */
00333 
00334 /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD
00335   * @{
00336   */
00337 #define LL_DMA_FIFOTHRESHOLD_1_4          0x00000000U                             /*!< FIFO threshold 1 quart full configuration  */
00338 #define LL_DMA_FIFOTHRESHOLD_1_2          DMA_SxFCR_FTH_0                         /*!< FIFO threshold half full configuration     */
00339 #define LL_DMA_FIFOTHRESHOLD_3_4          DMA_SxFCR_FTH_1                         /*!< FIFO threshold 3 quarts full configuration */
00340 #define LL_DMA_FIFOTHRESHOLD_FULL         DMA_SxFCR_FTH                           /*!< FIFO threshold full configuration          */
00341 /**
00342   * @}
00343   */
00344 
00345 /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM
00346   * @{
00347   */
00348 #define LL_DMA_CURRENTTARGETMEM0          0x00000000U                             /*!< Set CurrentTarget Memory to Memory 0  */
00349 #define LL_DMA_CURRENTTARGETMEM1          DMA_SxCR_CT                             /*!< Set CurrentTarget Memory to Memory 1  */
00350 /**
00351   * @}
00352   */
00353 
00354 /**
00355   * @}
00356   */
00357 
00358 /* Exported macro ------------------------------------------------------------*/
00359 /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
00360   * @{
00361   */
00362 
00363 /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros
00364   * @{
00365   */
00366 /**
00367   * @brief  Write a value in DMA register
00368   * @param  __INSTANCE__ DMA Instance
00369   * @param  __REG__ Register to be written
00370   * @param  __VALUE__ Value to be written in the register
00371   * @retval None
00372   */
00373 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
00374 
00375 /**
00376   * @brief  Read a value in DMA register
00377   * @param  __INSTANCE__ DMA Instance
00378   * @param  __REG__ Register to be read
00379   * @retval Register value
00380   */
00381 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
00382 /**
00383   * @}
00384   */
00385 
00386 /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy
00387   * @{
00388   */
00389 /**
00390   * @brief  Convert DMAx_Streamy into DMAx
00391   * @param  __STREAM_INSTANCE__ DMAx_Streamy
00392   * @retval DMAx
00393   */
00394 #define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__)   \
00395 (((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ?  DMA2 : DMA1)
00396 
00397 /**
00398   * @brief  Convert DMAx_Streamy into LL_DMA_STREAM_y
00399   * @param  __STREAM_INSTANCE__ DMAx_Streamy
00400   * @retval LL_DMA_STREAM_y
00401   */
00402 #define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__)   \
00403 (((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \
00404  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \
00405  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \
00406  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \
00407  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \
00408  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \
00409  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \
00410  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \
00411  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \
00412  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \
00413  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \
00414  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \
00415  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \
00416  ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \
00417  LL_DMA_STREAM_7)
00418 
00419 /**
00420   * @brief  Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy
00421   * @param  __DMA_INSTANCE__ DMAx
00422   * @param  __STREAM__ LL_DMA_STREAM_y
00423   * @retval DMAx_Streamy
00424   */
00425 #define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__)   \
00426 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA1_Stream0 : \
00427  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA2_Stream0 : \
00428  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA1_Stream1 : \
00429  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA2_Stream1 : \
00430  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA1_Stream2 : \
00431  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA2_Stream2 : \
00432  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA1_Stream3 : \
00433  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA2_Stream3 : \
00434  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA1_Stream4 : \
00435  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA2_Stream4 : \
00436  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA1_Stream5 : \
00437  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA2_Stream5 : \
00438  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA1_Stream6 : \
00439  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA2_Stream6 : \
00440  (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_7))) ? DMA1_Stream7 : \
00441  DMA2_Stream7)
00442 
00443 /**
00444   * @}
00445   */
00446 
00447 /**
00448   * @}
00449   */
00450 
00451 
00452 /* Exported functions --------------------------------------------------------*/
00453 /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
00454  * @{
00455  */
00456 
00457 /** @defgroup DMA_LL_EF_Configuration Configuration
00458   * @{
00459   */
00460 /**
00461   * @brief Enable DMA stream.
00462   * @rmtoll CR          EN            LL_DMA_EnableStream
00463   * @param  DMAx DMAx Instance
00464   * @param  Stream This parameter can be one of the following values:
00465   *         @arg @ref LL_DMA_STREAM_0
00466   *         @arg @ref LL_DMA_STREAM_1
00467   *         @arg @ref LL_DMA_STREAM_2
00468   *         @arg @ref LL_DMA_STREAM_3
00469   *         @arg @ref LL_DMA_STREAM_4
00470   *         @arg @ref LL_DMA_STREAM_5
00471   *         @arg @ref LL_DMA_STREAM_6
00472   *         @arg @ref LL_DMA_STREAM_7
00473   * @retval None
00474   */
00475 __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream)
00476 {
00477   uint32_t dma_base_addr = (uint32_t)DMAx;
00478 
00479   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN);
00480 }
00481 
00482 /**
00483   * @brief Disable DMA stream.
00484   * @rmtoll CR          EN            LL_DMA_DisableStream
00485   * @param  DMAx DMAx Instance
00486   * @param  Stream This parameter can be one of the following values:
00487   *         @arg @ref LL_DMA_STREAM_0
00488   *         @arg @ref LL_DMA_STREAM_1
00489   *         @arg @ref LL_DMA_STREAM_2
00490   *         @arg @ref LL_DMA_STREAM_3
00491   *         @arg @ref LL_DMA_STREAM_4
00492   *         @arg @ref LL_DMA_STREAM_5
00493   *         @arg @ref LL_DMA_STREAM_6
00494   *         @arg @ref LL_DMA_STREAM_7
00495   * @retval None
00496   */
00497 __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream)
00498 {
00499   uint32_t dma_base_addr = (uint32_t)DMAx;
00500 
00501   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN);
00502 }
00503 
00504 /**
00505   * @brief Check if DMA stream is enabled or disabled.
00506   * @rmtoll CR          EN            LL_DMA_IsEnabledStream
00507   * @param  DMAx DMAx Instance
00508   * @param  Stream This parameter can be one of the following values:
00509   *         @arg @ref LL_DMA_STREAM_0
00510   *         @arg @ref LL_DMA_STREAM_1
00511   *         @arg @ref LL_DMA_STREAM_2
00512   *         @arg @ref LL_DMA_STREAM_3
00513   *         @arg @ref LL_DMA_STREAM_4
00514   *         @arg @ref LL_DMA_STREAM_5
00515   *         @arg @ref LL_DMA_STREAM_6
00516   *         @arg @ref LL_DMA_STREAM_7
00517   * @retval State of bit (1 or 0).
00518   */
00519 __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream)
00520 {
00521   uint32_t dma_base_addr = (uint32_t)DMAx;
00522 
00523   return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN) == (DMA_SxCR_EN)) ? 1UL : 0UL);
00524 }
00525 
00526 /**
00527   * @brief  Configure all parameters linked to DMA transfer.
00528   * @rmtoll CR          DIR           LL_DMA_ConfigTransfer\n
00529   *         CR          CIRC          LL_DMA_ConfigTransfer\n
00530   *         CR          PINC          LL_DMA_ConfigTransfer\n
00531   *         CR          MINC          LL_DMA_ConfigTransfer\n
00532   *         CR          PSIZE         LL_DMA_ConfigTransfer\n
00533   *         CR          MSIZE         LL_DMA_ConfigTransfer\n
00534   *         CR          PL            LL_DMA_ConfigTransfer\n
00535   *         CR          PFCTRL        LL_DMA_ConfigTransfer
00536   * @param  DMAx DMAx Instance
00537   * @param  Stream This parameter can be one of the following values:
00538   *         @arg @ref LL_DMA_STREAM_0
00539   *         @arg @ref LL_DMA_STREAM_1
00540   *         @arg @ref LL_DMA_STREAM_2
00541   *         @arg @ref LL_DMA_STREAM_3
00542   *         @arg @ref LL_DMA_STREAM_4
00543   *         @arg @ref LL_DMA_STREAM_5
00544   *         @arg @ref LL_DMA_STREAM_6
00545   *         @arg @ref LL_DMA_STREAM_7
00546   * @param  Configuration This parameter must be a combination of all the following values:
00547   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00548   *         @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR  or @ref LL_DMA_MODE_PFCTRL
00549   *         @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT
00550   *         @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT
00551   *         @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD
00552   *         @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD
00553   *         @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH
00554   *@retval None
00555   */
00556 __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configuration)
00557 {
00558   uint32_t dma_base_addr = (uint32_t)DMAx;
00559 
00560   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR,
00561              DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_SxCR_MSIZE | DMA_SxCR_PL | DMA_SxCR_PFCTRL,
00562              Configuration);
00563 }
00564 
00565 /**
00566   * @brief Set Data transfer direction (read from peripheral or from memory).
00567   * @rmtoll CR          DIR           LL_DMA_SetDataTransferDirection
00568   * @param  DMAx DMAx Instance
00569   * @param  Stream This parameter can be one of the following values:
00570   *         @arg @ref LL_DMA_STREAM_0
00571   *         @arg @ref LL_DMA_STREAM_1
00572   *         @arg @ref LL_DMA_STREAM_2
00573   *         @arg @ref LL_DMA_STREAM_3
00574   *         @arg @ref LL_DMA_STREAM_4
00575   *         @arg @ref LL_DMA_STREAM_5
00576   *         @arg @ref LL_DMA_STREAM_6
00577   *         @arg @ref LL_DMA_STREAM_7
00578   * @param  Direction This parameter can be one of the following values:
00579   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
00580   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
00581   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00582   * @retval None
00583   */
00584 __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t  Direction)
00585 {
00586   uint32_t dma_base_addr = (uint32_t)DMAx;
00587 
00588   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DIR, Direction);
00589 }
00590 
00591 /**
00592   * @brief Get Data transfer direction (read from peripheral or from memory).
00593   * @rmtoll CR          DIR           LL_DMA_GetDataTransferDirection
00594   * @param  DMAx DMAx Instance
00595   * @param  Stream This parameter can be one of the following values:
00596   *         @arg @ref LL_DMA_STREAM_0
00597   *         @arg @ref LL_DMA_STREAM_1
00598   *         @arg @ref LL_DMA_STREAM_2
00599   *         @arg @ref LL_DMA_STREAM_3
00600   *         @arg @ref LL_DMA_STREAM_4
00601   *         @arg @ref LL_DMA_STREAM_5
00602   *         @arg @ref LL_DMA_STREAM_6
00603   *         @arg @ref LL_DMA_STREAM_7
00604   * @retval Returned value can be one of the following values:
00605   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
00606   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
00607   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00608   */
00609 __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream)
00610 {
00611   uint32_t dma_base_addr = (uint32_t)DMAx;
00612 
00613   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DIR));
00614 }
00615 
00616 /**
00617   * @brief Set DMA mode normal, circular or peripheral flow control.
00618   * @rmtoll CR          CIRC           LL_DMA_SetMode\n
00619   *         CR          PFCTRL         LL_DMA_SetMode
00620   * @param  DMAx DMAx Instance
00621   * @param  Stream This parameter can be one of the following values:
00622   *         @arg @ref LL_DMA_STREAM_0
00623   *         @arg @ref LL_DMA_STREAM_1
00624   *         @arg @ref LL_DMA_STREAM_2
00625   *         @arg @ref LL_DMA_STREAM_3
00626   *         @arg @ref LL_DMA_STREAM_4
00627   *         @arg @ref LL_DMA_STREAM_5
00628   *         @arg @ref LL_DMA_STREAM_6
00629   *         @arg @ref LL_DMA_STREAM_7
00630   * @param  Mode This parameter can be one of the following values:
00631   *         @arg @ref LL_DMA_MODE_NORMAL
00632   *         @arg @ref LL_DMA_MODE_CIRCULAR
00633   *         @arg @ref LL_DMA_MODE_PFCTRL
00634   * @retval None
00635   */
00636 __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode)
00637 {
00638   uint32_t dma_base_addr = (uint32_t)DMAx;
00639 
00640   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL, Mode);
00641 }
00642 
00643 /**
00644   * @brief Get DMA mode normal, circular or peripheral flow control.
00645   * @rmtoll CR          CIRC           LL_DMA_GetMode\n
00646   *         CR          PFCTRL         LL_DMA_GetMode
00647   * @param  DMAx DMAx Instance
00648   * @param  Stream This parameter can be one of the following values:
00649   *         @arg @ref LL_DMA_STREAM_0
00650   *         @arg @ref LL_DMA_STREAM_1
00651   *         @arg @ref LL_DMA_STREAM_2
00652   *         @arg @ref LL_DMA_STREAM_3
00653   *         @arg @ref LL_DMA_STREAM_4
00654   *         @arg @ref LL_DMA_STREAM_5
00655   *         @arg @ref LL_DMA_STREAM_6
00656   *         @arg @ref LL_DMA_STREAM_7
00657   * @retval Returned value can be one of the following values:
00658   *         @arg @ref LL_DMA_MODE_NORMAL
00659   *         @arg @ref LL_DMA_MODE_CIRCULAR
00660   *         @arg @ref LL_DMA_MODE_PFCTRL
00661   */
00662 __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream)
00663 {
00664   uint32_t dma_base_addr = (uint32_t)DMAx;
00665 
00666   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL));
00667 }
00668 
00669 /**
00670   * @brief Set Peripheral increment mode.
00671   * @rmtoll CR          PINC           LL_DMA_SetPeriphIncMode
00672   * @param  DMAx DMAx Instance
00673   * @param  Stream This parameter can be one of the following values:
00674   *         @arg @ref LL_DMA_STREAM_0
00675   *         @arg @ref LL_DMA_STREAM_1
00676   *         @arg @ref LL_DMA_STREAM_2
00677   *         @arg @ref LL_DMA_STREAM_3
00678   *         @arg @ref LL_DMA_STREAM_4
00679   *         @arg @ref LL_DMA_STREAM_5
00680   *         @arg @ref LL_DMA_STREAM_6
00681   *         @arg @ref LL_DMA_STREAM_7
00682   * @param  IncrementMode This parameter can be one of the following values:
00683   *         @arg @ref LL_DMA_PERIPH_NOINCREMENT
00684   *         @arg @ref LL_DMA_PERIPH_INCREMENT
00685   * @retval None
00686   */
00687 __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode)
00688 {
00689   uint32_t dma_base_addr = (uint32_t)DMAx;
00690 
00691   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINC, IncrementMode);
00692 }
00693 
00694 /**
00695   * @brief Get Peripheral increment mode.
00696   * @rmtoll CR          PINC           LL_DMA_GetPeriphIncMode
00697   * @param  DMAx DMAx Instance
00698   * @param  Stream This parameter can be one of the following values:
00699   *         @arg @ref LL_DMA_STREAM_0
00700   *         @arg @ref LL_DMA_STREAM_1
00701   *         @arg @ref LL_DMA_STREAM_2
00702   *         @arg @ref LL_DMA_STREAM_3
00703   *         @arg @ref LL_DMA_STREAM_4
00704   *         @arg @ref LL_DMA_STREAM_5
00705   *         @arg @ref LL_DMA_STREAM_6
00706   *         @arg @ref LL_DMA_STREAM_7
00707   * @retval Returned value can be one of the following values:
00708   *         @arg @ref LL_DMA_PERIPH_NOINCREMENT
00709   *         @arg @ref LL_DMA_PERIPH_INCREMENT
00710   */
00711 __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream)
00712 {
00713   uint32_t dma_base_addr = (uint32_t)DMAx;
00714 
00715   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINC));
00716 }
00717 
00718 /**
00719   * @brief Set Memory increment mode.
00720   * @rmtoll CR          MINC           LL_DMA_SetMemoryIncMode
00721   * @param  DMAx DMAx Instance
00722   * @param  Stream This parameter can be one of the following values:
00723   *         @arg @ref LL_DMA_STREAM_0
00724   *         @arg @ref LL_DMA_STREAM_1
00725   *         @arg @ref LL_DMA_STREAM_2
00726   *         @arg @ref LL_DMA_STREAM_3
00727   *         @arg @ref LL_DMA_STREAM_4
00728   *         @arg @ref LL_DMA_STREAM_5
00729   *         @arg @ref LL_DMA_STREAM_6
00730   *         @arg @ref LL_DMA_STREAM_7
00731   * @param  IncrementMode This parameter can be one of the following values:
00732   *         @arg @ref LL_DMA_MEMORY_NOINCREMENT
00733   *         @arg @ref LL_DMA_MEMORY_INCREMENT
00734   * @retval None
00735   */
00736 __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode)
00737 {
00738   uint32_t dma_base_addr = (uint32_t)DMAx;
00739 
00740   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MINC, IncrementMode);
00741 }
00742 
00743 /**
00744   * @brief Get Memory increment mode.
00745   * @rmtoll CR          MINC           LL_DMA_GetMemoryIncMode
00746   * @param  DMAx DMAx Instance
00747   * @param  Stream This parameter can be one of the following values:
00748   *         @arg @ref LL_DMA_STREAM_0
00749   *         @arg @ref LL_DMA_STREAM_1
00750   *         @arg @ref LL_DMA_STREAM_2
00751   *         @arg @ref LL_DMA_STREAM_3
00752   *         @arg @ref LL_DMA_STREAM_4
00753   *         @arg @ref LL_DMA_STREAM_5
00754   *         @arg @ref LL_DMA_STREAM_6
00755   *         @arg @ref LL_DMA_STREAM_7
00756   * @retval Returned value can be one of the following values:
00757   *         @arg @ref LL_DMA_MEMORY_NOINCREMENT
00758   *         @arg @ref LL_DMA_MEMORY_INCREMENT
00759   */
00760 __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream)
00761 {
00762   uint32_t dma_base_addr = (uint32_t)DMAx;
00763 
00764   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MINC));
00765 }
00766 
00767 /**
00768   * @brief Set Peripheral size.
00769   * @rmtoll CR          PSIZE           LL_DMA_SetPeriphSize
00770   * @param  DMAx DMAx Instance
00771   * @param  Stream This parameter can be one of the following values:
00772   *         @arg @ref LL_DMA_STREAM_0
00773   *         @arg @ref LL_DMA_STREAM_1
00774   *         @arg @ref LL_DMA_STREAM_2
00775   *         @arg @ref LL_DMA_STREAM_3
00776   *         @arg @ref LL_DMA_STREAM_4
00777   *         @arg @ref LL_DMA_STREAM_5
00778   *         @arg @ref LL_DMA_STREAM_6
00779   *         @arg @ref LL_DMA_STREAM_7
00780   * @param  Size This parameter can be one of the following values:
00781   *         @arg @ref LL_DMA_PDATAALIGN_BYTE
00782   *         @arg @ref LL_DMA_PDATAALIGN_HALFWORD
00783   *         @arg @ref LL_DMA_PDATAALIGN_WORD
00784   * @retval None
00785   */
00786 __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t  Size)
00787 {
00788   uint32_t dma_base_addr = (uint32_t)DMAx;
00789 
00790   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PSIZE, Size);
00791 }
00792 
00793 /**
00794   * @brief Get Peripheral size.
00795   * @rmtoll CR          PSIZE           LL_DMA_GetPeriphSize
00796   * @param  DMAx DMAx Instance
00797   * @param  Stream This parameter can be one of the following values:
00798   *         @arg @ref LL_DMA_STREAM_0
00799   *         @arg @ref LL_DMA_STREAM_1
00800   *         @arg @ref LL_DMA_STREAM_2
00801   *         @arg @ref LL_DMA_STREAM_3
00802   *         @arg @ref LL_DMA_STREAM_4
00803   *         @arg @ref LL_DMA_STREAM_5
00804   *         @arg @ref LL_DMA_STREAM_6
00805   *         @arg @ref LL_DMA_STREAM_7
00806   * @retval Returned value can be one of the following values:
00807   *         @arg @ref LL_DMA_PDATAALIGN_BYTE
00808   *         @arg @ref LL_DMA_PDATAALIGN_HALFWORD
00809   *         @arg @ref LL_DMA_PDATAALIGN_WORD
00810   */
00811 __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream)
00812 {
00813   uint32_t dma_base_addr = (uint32_t)DMAx;
00814 
00815   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PSIZE));
00816 }
00817 
00818 /**
00819   * @brief Set Memory size.
00820   * @rmtoll CR          MSIZE           LL_DMA_SetMemorySize
00821   * @param  DMAx DMAx Instance
00822   * @param  Stream This parameter can be one of the following values:
00823   *         @arg @ref LL_DMA_STREAM_0
00824   *         @arg @ref LL_DMA_STREAM_1
00825   *         @arg @ref LL_DMA_STREAM_2
00826   *         @arg @ref LL_DMA_STREAM_3
00827   *         @arg @ref LL_DMA_STREAM_4
00828   *         @arg @ref LL_DMA_STREAM_5
00829   *         @arg @ref LL_DMA_STREAM_6
00830   *         @arg @ref LL_DMA_STREAM_7
00831   * @param  Size This parameter can be one of the following values:
00832   *         @arg @ref LL_DMA_MDATAALIGN_BYTE
00833   *         @arg @ref LL_DMA_MDATAALIGN_HALFWORD
00834   *         @arg @ref LL_DMA_MDATAALIGN_WORD
00835   * @retval None
00836   */
00837 __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t  Size)
00838 {
00839   uint32_t dma_base_addr = (uint32_t)DMAx;
00840 
00841   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MSIZE, Size);
00842 }
00843 
00844 /**
00845   * @brief Get Memory size.
00846   * @rmtoll CR          MSIZE           LL_DMA_GetMemorySize
00847   * @param  DMAx DMAx Instance
00848   * @param  Stream This parameter can be one of the following values:
00849   *         @arg @ref LL_DMA_STREAM_0
00850   *         @arg @ref LL_DMA_STREAM_1
00851   *         @arg @ref LL_DMA_STREAM_2
00852   *         @arg @ref LL_DMA_STREAM_3
00853   *         @arg @ref LL_DMA_STREAM_4
00854   *         @arg @ref LL_DMA_STREAM_5
00855   *         @arg @ref LL_DMA_STREAM_6
00856   *         @arg @ref LL_DMA_STREAM_7
00857   * @retval Returned value can be one of the following values:
00858   *         @arg @ref LL_DMA_MDATAALIGN_BYTE
00859   *         @arg @ref LL_DMA_MDATAALIGN_HALFWORD
00860   *         @arg @ref LL_DMA_MDATAALIGN_WORD
00861   */
00862 __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream)
00863 {
00864   uint32_t dma_base_addr = (uint32_t)DMAx;
00865 
00866   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MSIZE));
00867 }
00868 
00869 /**
00870   * @brief Set Peripheral increment offset size.
00871   * @rmtoll CR          PINCOS           LL_DMA_SetIncOffsetSize
00872   * @param  DMAx DMAx Instance
00873   * @param  Stream This parameter can be one of the following values:
00874   *         @arg @ref LL_DMA_STREAM_0
00875   *         @arg @ref LL_DMA_STREAM_1
00876   *         @arg @ref LL_DMA_STREAM_2
00877   *         @arg @ref LL_DMA_STREAM_3
00878   *         @arg @ref LL_DMA_STREAM_4
00879   *         @arg @ref LL_DMA_STREAM_5
00880   *         @arg @ref LL_DMA_STREAM_6
00881   *         @arg @ref LL_DMA_STREAM_7
00882   * @param  OffsetSize This parameter can be one of the following values:
00883   *         @arg @ref LL_DMA_OFFSETSIZE_PSIZE
00884   *         @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4
00885   * @retval None
00886   */
00887 __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSize)
00888 {
00889   uint32_t dma_base_addr = (uint32_t)DMAx;
00890 
00891   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINCOS, OffsetSize);
00892 }
00893 
00894 /**
00895   * @brief Get Peripheral increment offset size.
00896   * @rmtoll CR          PINCOS           LL_DMA_GetIncOffsetSize
00897   * @param  DMAx DMAx Instance
00898   * @param  Stream This parameter can be one of the following values:
00899   *         @arg @ref LL_DMA_STREAM_0
00900   *         @arg @ref LL_DMA_STREAM_1
00901   *         @arg @ref LL_DMA_STREAM_2
00902   *         @arg @ref LL_DMA_STREAM_3
00903   *         @arg @ref LL_DMA_STREAM_4
00904   *         @arg @ref LL_DMA_STREAM_5
00905   *         @arg @ref LL_DMA_STREAM_6
00906   *         @arg @ref LL_DMA_STREAM_7
00907   * @retval Returned value can be one of the following values:
00908   *         @arg @ref LL_DMA_OFFSETSIZE_PSIZE
00909   *         @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4
00910   */
00911 __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream)
00912 {
00913   uint32_t dma_base_addr = (uint32_t)DMAx;
00914 
00915   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINCOS));
00916 }
00917 
00918 /**
00919   * @brief Set Stream priority level.
00920   * @rmtoll CR          PL           LL_DMA_SetStreamPriorityLevel
00921   * @param  DMAx DMAx Instance
00922   * @param  Stream This parameter can be one of the following values:
00923   *         @arg @ref LL_DMA_STREAM_0
00924   *         @arg @ref LL_DMA_STREAM_1
00925   *         @arg @ref LL_DMA_STREAM_2
00926   *         @arg @ref LL_DMA_STREAM_3
00927   *         @arg @ref LL_DMA_STREAM_4
00928   *         @arg @ref LL_DMA_STREAM_5
00929   *         @arg @ref LL_DMA_STREAM_6
00930   *         @arg @ref LL_DMA_STREAM_7
00931   * @param  Priority This parameter can be one of the following values:
00932   *         @arg @ref LL_DMA_PRIORITY_LOW
00933   *         @arg @ref LL_DMA_PRIORITY_MEDIUM
00934   *         @arg @ref LL_DMA_PRIORITY_HIGH
00935   *         @arg @ref LL_DMA_PRIORITY_VERYHIGH
00936   * @retval None
00937   */
00938 __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t  Priority)
00939 {
00940   uint32_t dma_base_addr = (uint32_t)DMAx;
00941 
00942   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PL, Priority);
00943 }
00944 
00945 /**
00946   * @brief Get Stream priority level.
00947   * @rmtoll CR          PL           LL_DMA_GetStreamPriorityLevel
00948   * @param  DMAx DMAx Instance
00949   * @param  Stream This parameter can be one of the following values:
00950   *         @arg @ref LL_DMA_STREAM_0
00951   *         @arg @ref LL_DMA_STREAM_1
00952   *         @arg @ref LL_DMA_STREAM_2
00953   *         @arg @ref LL_DMA_STREAM_3
00954   *         @arg @ref LL_DMA_STREAM_4
00955   *         @arg @ref LL_DMA_STREAM_5
00956   *         @arg @ref LL_DMA_STREAM_6
00957   *         @arg @ref LL_DMA_STREAM_7
00958   * @retval Returned value can be one of the following values:
00959   *         @arg @ref LL_DMA_PRIORITY_LOW
00960   *         @arg @ref LL_DMA_PRIORITY_MEDIUM
00961   *         @arg @ref LL_DMA_PRIORITY_HIGH
00962   *         @arg @ref LL_DMA_PRIORITY_VERYHIGH
00963   */
00964 __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream)
00965 {
00966   uint32_t dma_base_addr = (uint32_t)DMAx;
00967 
00968   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PL));
00969 }
00970 
00971 /**
00972   * @brief Enable DMA stream bufferable transfer.
00973   * @rmtoll CR          TRBUFF            LL_DMA_EnableBufferableTransfer
00974   * @param  DMAx DMAx Instance
00975   * @param  Stream This parameter can be one of the following values:
00976   *         @arg @ref LL_DMA_STREAM_0
00977   *         @arg @ref LL_DMA_STREAM_1
00978   *         @arg @ref LL_DMA_STREAM_2
00979   *         @arg @ref LL_DMA_STREAM_3
00980   *         @arg @ref LL_DMA_STREAM_4
00981   *         @arg @ref LL_DMA_STREAM_5
00982   *         @arg @ref LL_DMA_STREAM_6
00983   *         @arg @ref LL_DMA_STREAM_7
00984   * @retval None
00985   */
00986 __STATIC_INLINE void LL_DMA_EnableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t Stream)
00987 {
00988   uint32_t dma_base_addr = (uint32_t)DMAx;
00989 
00990   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TRBUFF);
00991 }
00992 
00993 /**
00994   * @brief Disable DMA stream bufferable transfer.
00995   * @rmtoll CR          TRBUFF            LL_DMA_DisableBufferableTransfer
00996   * @param  DMAx DMAx Instance
00997   * @param  Stream This parameter can be one of the following values:
00998   *         @arg @ref LL_DMA_STREAM_0
00999   *         @arg @ref LL_DMA_STREAM_1
01000   *         @arg @ref LL_DMA_STREAM_2
01001   *         @arg @ref LL_DMA_STREAM_3
01002   *         @arg @ref LL_DMA_STREAM_4
01003   *         @arg @ref LL_DMA_STREAM_5
01004   *         @arg @ref LL_DMA_STREAM_6
01005   *         @arg @ref LL_DMA_STREAM_7
01006   * @retval None
01007   */
01008 __STATIC_INLINE void LL_DMA_DisableBufferableTransfer(DMA_TypeDef *DMAx, uint32_t Stream)
01009 {
01010   uint32_t dma_base_addr = (uint32_t)DMAx;
01011 
01012   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TRBUFF);
01013 }
01014 
01015 /**
01016   * @brief Set Number of data to transfer.
01017   * @rmtoll NDTR          NDT           LL_DMA_SetDataLength
01018   * @note   This action has no effect if
01019   *         stream is enabled.
01020   * @param  DMAx DMAx Instance
01021   * @param  Stream This parameter can be one of the following values:
01022   *         @arg @ref LL_DMA_STREAM_0
01023   *         @arg @ref LL_DMA_STREAM_1
01024   *         @arg @ref LL_DMA_STREAM_2
01025   *         @arg @ref LL_DMA_STREAM_3
01026   *         @arg @ref LL_DMA_STREAM_4
01027   *         @arg @ref LL_DMA_STREAM_5
01028   *         @arg @ref LL_DMA_STREAM_6
01029   *         @arg @ref LL_DMA_STREAM_7
01030   * @param  NbData Between 0 to 0xFFFFFFFF
01031   * @retval None
01032   */
01033 __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t NbData)
01034 {
01035   uint32_t dma_base_addr = (uint32_t)DMAx;
01036 
01037   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->NDTR, DMA_SxNDT, NbData);
01038 }
01039 
01040 /**
01041   * @brief Get Number of data to transfer.
01042   * @rmtoll NDTR          NDT           LL_DMA_GetDataLength
01043   * @note   Once the stream is enabled, the return value indicate the
01044   *         remaining bytes to be transmitted.
01045   * @param  DMAx DMAx Instance
01046   * @param  Stream This parameter can be one of the following values:
01047   *         @arg @ref LL_DMA_STREAM_0
01048   *         @arg @ref LL_DMA_STREAM_1
01049   *         @arg @ref LL_DMA_STREAM_2
01050   *         @arg @ref LL_DMA_STREAM_3
01051   *         @arg @ref LL_DMA_STREAM_4
01052   *         @arg @ref LL_DMA_STREAM_5
01053   *         @arg @ref LL_DMA_STREAM_6
01054   *         @arg @ref LL_DMA_STREAM_7
01055   * @retval Between 0 to 0xFFFFFFFF
01056   */
01057 __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Stream)
01058 {
01059   uint32_t dma_base_addr = (uint32_t)DMAx;
01060 
01061   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->NDTR, DMA_SxNDT));
01062 }
01063 /**
01064   * @brief  Set DMA request for DMA Streams on DMAMUX Channel x.
01065   * @note   DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
01066   *         DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
01067   * @rmtoll CxCR         DMAREQ_ID     LL_DMA_SetPeriphRequest
01068   * @param  DMAx DMAx Instance
01069   * @param  Stream This parameter can be one of the following values:
01070   *         @arg @ref LL_DMA_STREAM_0
01071   *         @arg @ref LL_DMA_STREAM_1
01072   *         @arg @ref LL_DMA_STREAM_2
01073   *         @arg @ref LL_DMA_STREAM_3
01074   *         @arg @ref LL_DMA_STREAM_4
01075   *         @arg @ref LL_DMA_STREAM_5
01076   *         @arg @ref LL_DMA_STREAM_6
01077   *         @arg @ref LL_DMA_STREAM_7
01078   * @param  Request This parameter can be one of the following values:
01079   *         @arg @ref LL_DMAMUX1_REQ_MEM2MEM
01080   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR0
01081   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR1
01082   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR2
01083   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR3
01084   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR4
01085   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR5
01086   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR6
01087   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR7
01088   *         @arg @ref LL_DMAMUX1_REQ_ADC1
01089   *         @arg @ref LL_DMAMUX1_REQ_ADC2
01090   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
01091   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
01092   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
01093   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
01094   *         @arg @ref LL_DMAMUX1_REQ_TIM1_UP
01095   *         @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
01096   *         @arg @ref LL_DMAMUX1_REQ_TIM1_COM
01097   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
01098   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
01099   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
01100   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
01101   *         @arg @ref LL_DMAMUX1_REQ_TIM2_UP
01102   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
01103   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
01104   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
01105   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
01106   *         @arg @ref LL_DMAMUX1_REQ_TIM3_UP
01107   *         @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
01108   *         @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
01109   *         @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
01110   *         @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
01111   *         @arg @ref LL_DMAMUX1_REQ_TIM4_UP
01112   *         @arg @ref LL_DMAMUX1_REQ_I2C1_RX
01113   *         @arg @ref LL_DMAMUX1_REQ_I2C1_TX
01114   *         @arg @ref LL_DMAMUX1_REQ_I2C2_RX
01115   *         @arg @ref LL_DMAMUX1_REQ_I2C2_TX
01116   *         @arg @ref LL_DMAMUX1_REQ_SPI1_RX
01117   *         @arg @ref LL_DMAMUX1_REQ_SPI1_TX
01118   *         @arg @ref LL_DMAMUX1_REQ_SPI2_RX
01119   *         @arg @ref LL_DMAMUX1_REQ_SPI2_TX
01120   *         @arg @ref LL_DMAMUX1_REQ_USART1_RX
01121   *         @arg @ref LL_DMAMUX1_REQ_USART1_TX
01122   *         @arg @ref LL_DMAMUX1_REQ_USART2_RX
01123   *         @arg @ref LL_DMAMUX1_REQ_USART2_TX
01124   *         @arg @ref LL_DMAMUX1_REQ_USART3_RX
01125   *         @arg @ref LL_DMAMUX1_REQ_USART3_TX
01126   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
01127   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
01128   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
01129   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
01130   *         @arg @ref LL_DMAMUX1_REQ_TIM8_UP
01131   *         @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
01132   *         @arg @ref LL_DMAMUX1_REQ_TIM8_COM
01133   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
01134   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
01135   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
01136   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
01137   *         @arg @ref LL_DMAMUX1_REQ_TIM5_UP
01138   *         @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
01139   *         @arg @ref LL_DMAMUX1_REQ_SPI3_RX
01140   *         @arg @ref LL_DMAMUX1_REQ_SPI3_TX
01141   *         @arg @ref LL_DMAMUX1_REQ_UART4_RX
01142   *         @arg @ref LL_DMAMUX1_REQ_UART4_TX
01143   *         @arg @ref LL_DMAMUX1_REQ_UART5_RX
01144   *         @arg @ref LL_DMAMUX1_REQ_UART5_TX
01145   *         @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
01146   *         @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
01147   *         @arg @ref LL_DMAMUX1_REQ_TIM6_UP
01148   *         @arg @ref LL_DMAMUX1_REQ_TIM7_UP
01149   *         @arg @ref LL_DMAMUX1_REQ_USART6_RX
01150   *         @arg @ref LL_DMAMUX1_REQ_USART6_TX
01151   *         @arg @ref LL_DMAMUX1_REQ_I2C3_RX
01152   *         @arg @ref LL_DMAMUX1_REQ_I2C3_TX
01153   *         @arg @ref LL_DMAMUX1_REQ_DCMI_PSSI (*)
01154   *         @arg @ref LL_DMAMUX1_REQ_CRYP_IN
01155   *         @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
01156   *         @arg @ref LL_DMAMUX1_REQ_HASH_IN
01157   *         @arg @ref LL_DMAMUX1_REQ_UART7_RX
01158   *         @arg @ref LL_DMAMUX1_REQ_UART7_TX
01159   *         @arg @ref LL_DMAMUX1_REQ_UART8_RX
01160   *         @arg @ref LL_DMAMUX1_REQ_UART8_TX
01161   *         @arg @ref LL_DMAMUX1_REQ_SPI4_RX
01162   *         @arg @ref LL_DMAMUX1_REQ_SPI4_TX
01163   *         @arg @ref LL_DMAMUX1_REQ_SPI5_RX
01164   *         @arg @ref LL_DMAMUX1_REQ_SPI5_TX
01165   *         @arg @ref LL_DMAMUX1_REQ_SAI1_A
01166   *         @arg @ref LL_DMAMUX1_REQ_SAI1_B
01167   *         @arg @ref LL_DMAMUX1_REQ_SAI2_A (*)
01168   *         @arg @ref LL_DMAMUX1_REQ_SAI2_B (*)
01169   *         @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
01170   *         @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
01171   *         @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
01172   *         @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
01173   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER (*)
01174   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A (*)
01175   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B (*)
01176   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C (*)
01177   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D (*)
01178   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E (*)
01179   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
01180   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
01181   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
01182   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
01183   *         @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
01184   *         @arg @ref LL_DMAMUX1_REQ_TIM15_UP
01185   *         @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
01186   *         @arg @ref LL_DMAMUX1_REQ_TIM15_COM
01187   *         @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
01188   *         @arg @ref LL_DMAMUX1_REQ_TIM16_UP
01189   *         @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
01190   *         @arg @ref LL_DMAMUX1_REQ_TIM17_UP
01191   *         @arg @ref LL_DMAMUX1_REQ_SAI3_A (*)
01192   *         @arg @ref LL_DMAMUX1_REQ_SAI3_B (*)
01193   *         @arg @ref LL_DMAMUX1_REQ_ADC3 (*)
01194   *         @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
01195   *         @arg @ref LL_DMAMUX1_REQ_UART9_TX (*)
01196   *         @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
01197   *         @arg @ref LL_DMAMUX1_REQ_USART10_TX (*)
01198   *         @arg @ref LL_DMAMUX1_REQ_FMAC_READ  (*)
01199   *         @arg @ref LL_DMAMUX1_REQ_FMAC_WRITE (*)
01200   *         @arg @ref LL_DMAMUX1_REQ_CORDIC_READ (*)
01201   *         @arg @ref LL_DMAMUX1_REQ_CORDIC_WRITE(*)
01202   *         @arg @ref LL_DMAMUX1_REQ_I2C5_RX     (*)
01203   *         @arg @ref LL_DMAMUX1_REQ_I2C5_TX     (*)
01204   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH1   (*)
01205   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH2   (*)
01206   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH3   (*)
01207   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH4   (*)
01208   *         @arg @ref LL_DMAMUX1_REQ_TIM23_UP    (*)
01209   *         @arg @ref LL_DMAMUX1_REQ_TIM23_TRIG  (*)
01210   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH1   (*)
01211   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH2   (*)
01212   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH3   (*)
01213   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH4   (*)
01214   *         @arg @ref LL_DMAMUX1_REQ_TIM24_UP    (*)
01215   *         @arg @ref LL_DMAMUX1_REQ_TIM24_TRIG  (*)
01216   *
01217   * @note   (*) Availability depends on devices.
01218   * @retval None
01219   */
01220 __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Request)
01221 {
01222   MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
01223 }
01224 
01225 /**
01226   * @brief  Get DMA request for DMA Channels on DMAMUX Channel x.
01227   * @note   DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
01228   *         DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
01229   * @rmtoll CxCR         DMAREQ_ID     LL_DMA_GetPeriphRequest
01230   * @param  DMAx DMAx Instance
01231   * @param  Stream This parameter can be one of the following values:
01232   *         @arg @ref LL_DMA_STREAM_0
01233   *         @arg @ref LL_DMA_STREAM_1
01234   *         @arg @ref LL_DMA_STREAM_2
01235   *         @arg @ref LL_DMA_STREAM_3
01236   *         @arg @ref LL_DMA_STREAM_4
01237   *         @arg @ref LL_DMA_STREAM_5
01238   *         @arg @ref LL_DMA_STREAM_6
01239   *         @arg @ref LL_DMA_STREAM_7
01240   * @retval Returned value can be one of the following values:
01241   *         @arg @ref LL_DMAMUX1_REQ_MEM2MEM
01242   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR0
01243   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR1
01244   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR2
01245   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR3
01246   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR4
01247   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR5
01248   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR6
01249   *         @arg @ref LL_DMAMUX1_REQ_GENERATOR7
01250   *         @arg @ref LL_DMAMUX1_REQ_ADC1
01251   *         @arg @ref LL_DMAMUX1_REQ_ADC2
01252   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
01253   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
01254   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
01255   *         @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
01256   *         @arg @ref LL_DMAMUX1_REQ_TIM1_UP
01257   *         @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
01258   *         @arg @ref LL_DMAMUX1_REQ_TIM1_COM
01259   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
01260   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
01261   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
01262   *         @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
01263   *         @arg @ref LL_DMAMUX1_REQ_TIM2_UP
01264   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
01265   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
01266   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
01267   *         @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
01268   *         @arg @ref LL_DMAMUX1_REQ_TIM3_UP
01269   *         @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
01270   *         @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
01271   *         @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
01272   *         @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
01273   *         @arg @ref LL_DMAMUX1_REQ_TIM4_UP
01274   *         @arg @ref LL_DMAMUX1_REQ_I2C1_RX
01275   *         @arg @ref LL_DMAMUX1_REQ_I2C1_TX
01276   *         @arg @ref LL_DMAMUX1_REQ_I2C2_RX
01277   *         @arg @ref LL_DMAMUX1_REQ_I2C2_TX
01278   *         @arg @ref LL_DMAMUX1_REQ_SPI1_RX
01279   *         @arg @ref LL_DMAMUX1_REQ_SPI1_TX
01280   *         @arg @ref LL_DMAMUX1_REQ_SPI2_RX
01281   *         @arg @ref LL_DMAMUX1_REQ_SPI2_TX
01282   *         @arg @ref LL_DMAMUX1_REQ_USART1_RX
01283   *         @arg @ref LL_DMAMUX1_REQ_USART1_TX
01284   *         @arg @ref LL_DMAMUX1_REQ_USART2_RX
01285   *         @arg @ref LL_DMAMUX1_REQ_USART2_TX
01286   *         @arg @ref LL_DMAMUX1_REQ_USART3_RX
01287   *         @arg @ref LL_DMAMUX1_REQ_USART3_TX
01288   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
01289   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
01290   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
01291   *         @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
01292   *         @arg @ref LL_DMAMUX1_REQ_TIM8_UP
01293   *         @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
01294   *         @arg @ref LL_DMAMUX1_REQ_TIM8_COM
01295   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
01296   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
01297   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
01298   *         @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
01299   *         @arg @ref LL_DMAMUX1_REQ_TIM5_UP
01300   *         @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
01301   *         @arg @ref LL_DMAMUX1_REQ_SPI3_RX
01302   *         @arg @ref LL_DMAMUX1_REQ_SPI3_TX
01303   *         @arg @ref LL_DMAMUX1_REQ_UART4_RX
01304   *         @arg @ref LL_DMAMUX1_REQ_UART4_TX
01305   *         @arg @ref LL_DMAMUX1_REQ_UART5_RX
01306   *         @arg @ref LL_DMAMUX1_REQ_UART5_TX
01307   *         @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
01308   *         @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
01309   *         @arg @ref LL_DMAMUX1_REQ_TIM6_UP
01310   *         @arg @ref LL_DMAMUX1_REQ_TIM7_UP
01311   *         @arg @ref LL_DMAMUX1_REQ_USART6_RX
01312   *         @arg @ref LL_DMAMUX1_REQ_USART6_TX
01313   *         @arg @ref LL_DMAMUX1_REQ_I2C3_RX
01314   *         @arg @ref LL_DMAMUX1_REQ_I2C3_TX
01315   *         @arg @ref LL_DMAMUX1_REQ_DCMI_PSSI (*)
01316   *         @arg @ref LL_DMAMUX1_REQ_CRYP_IN
01317   *         @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
01318   *         @arg @ref LL_DMAMUX1_REQ_HASH_IN
01319   *         @arg @ref LL_DMAMUX1_REQ_UART7_RX
01320   *         @arg @ref LL_DMAMUX1_REQ_UART7_TX
01321   *         @arg @ref LL_DMAMUX1_REQ_UART8_RX
01322   *         @arg @ref LL_DMAMUX1_REQ_UART8_TX
01323   *         @arg @ref LL_DMAMUX1_REQ_SPI4_RX
01324   *         @arg @ref LL_DMAMUX1_REQ_SPI4_TX
01325   *         @arg @ref LL_DMAMUX1_REQ_SPI5_RX
01326   *         @arg @ref LL_DMAMUX1_REQ_SPI5_TX
01327   *         @arg @ref LL_DMAMUX1_REQ_SAI1_A
01328   *         @arg @ref LL_DMAMUX1_REQ_SAI1_B
01329   *         @arg @ref LL_DMAMUX1_REQ_SAI2_A (*)
01330   *         @arg @ref LL_DMAMUX1_REQ_SAI2_B (*)
01331   *         @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
01332   *         @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
01333   *         @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
01334   *         @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
01335   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER (*)
01336   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A (*)
01337   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B (*)
01338   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C (*)
01339   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D (*)
01340   *         @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E (*)
01341   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
01342   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
01343   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
01344   *         @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
01345   *         @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
01346   *         @arg @ref LL_DMAMUX1_REQ_TIM15_UP
01347   *         @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
01348   *         @arg @ref LL_DMAMUX1_REQ_TIM15_COM
01349   *         @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
01350   *         @arg @ref LL_DMAMUX1_REQ_TIM16_UP
01351   *         @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
01352   *         @arg @ref LL_DMAMUX1_REQ_TIM17_UP
01353   *         @arg @ref LL_DMAMUX1_REQ_SAI3_A (*)
01354   *         @arg @ref LL_DMAMUX1_REQ_SAI3_B (*)
01355   *         @arg @ref LL_DMAMUX1_REQ_ADC3 (*)
01356   *         @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
01357   *         @arg @ref LL_DMAMUX1_REQ_UART9_TX (*)
01358   *         @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
01359   *         @arg @ref LL_DMAMUX1_REQ_USART10_TX (*)
01360   *         @arg @ref LL_DMAMUX1_REQ_FMAC_READ  (*)
01361   *         @arg @ref LL_DMAMUX1_REQ_FMAC_WRITE (*)
01362   *         @arg @ref LL_DMAMUX1_REQ_CORDIC_READ (*)
01363   *         @arg @ref LL_DMAMUX1_REQ_CORDIC_WRITE(*)
01364   *         @arg @ref LL_DMAMUX1_REQ_I2C5_RX     (*)
01365   *         @arg @ref LL_DMAMUX1_REQ_I2C5_TX     (*)
01366   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH1   (*)
01367   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH2   (*)
01368   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH3   (*)
01369   *         @arg @ref LL_DMAMUX1_REQ_TIM23_CH4   (*)
01370   *         @arg @ref LL_DMAMUX1_REQ_TIM23_UP    (*)
01371   *         @arg @ref LL_DMAMUX1_REQ_TIM23_TRIG  (*)
01372   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH1   (*)
01373   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH2   (*)
01374   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH3   (*)
01375   *         @arg @ref LL_DMAMUX1_REQ_TIM24_CH4   (*)
01376   *         @arg @ref LL_DMAMUX1_REQ_TIM24_UP    (*)
01377   *         @arg @ref LL_DMAMUX1_REQ_TIM24_TRIG  (*)
01378   *
01379   * @note   (*) Availability depends on devices.
01380   */
01381 __STATIC_INLINE  uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream)
01382 {
01383   return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx)))))->CCR, DMAMUX_CxCR_DMAREQ_ID));
01384 }
01385 
01386 /**
01387   * @brief Set Memory burst transfer configuration.
01388   * @rmtoll CR          MBURST           LL_DMA_SetMemoryBurstxfer
01389   * @param  DMAx DMAx Instance
01390   * @param  Stream This parameter can be one of the following values:
01391   *         @arg @ref LL_DMA_STREAM_0
01392   *         @arg @ref LL_DMA_STREAM_1
01393   *         @arg @ref LL_DMA_STREAM_2
01394   *         @arg @ref LL_DMA_STREAM_3
01395   *         @arg @ref LL_DMA_STREAM_4
01396   *         @arg @ref LL_DMA_STREAM_5
01397   *         @arg @ref LL_DMA_STREAM_6
01398   *         @arg @ref LL_DMA_STREAM_7
01399   * @param  Mburst This parameter can be one of the following values:
01400   *         @arg @ref LL_DMA_MBURST_SINGLE
01401   *         @arg @ref LL_DMA_MBURST_INC4
01402   *         @arg @ref LL_DMA_MBURST_INC8
01403   *         @arg @ref LL_DMA_MBURST_INC16
01404   * @retval None
01405   */
01406 __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst)
01407 {
01408   uint32_t dma_base_addr = (uint32_t)DMAx;
01409 
01410   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST, Mburst);
01411 }
01412 
01413 /**
01414   * @brief Get Memory burst transfer configuration.
01415   * @rmtoll CR          MBURST           LL_DMA_GetMemoryBurstxfer
01416   * @param  DMAx DMAx Instance
01417   * @param  Stream This parameter can be one of the following values:
01418   *         @arg @ref LL_DMA_STREAM_0
01419   *         @arg @ref LL_DMA_STREAM_1
01420   *         @arg @ref LL_DMA_STREAM_2
01421   *         @arg @ref LL_DMA_STREAM_3
01422   *         @arg @ref LL_DMA_STREAM_4
01423   *         @arg @ref LL_DMA_STREAM_5
01424   *         @arg @ref LL_DMA_STREAM_6
01425   *         @arg @ref LL_DMA_STREAM_7
01426   * @retval Returned value can be one of the following values:
01427   *         @arg @ref LL_DMA_MBURST_SINGLE
01428   *         @arg @ref LL_DMA_MBURST_INC4
01429   *         @arg @ref LL_DMA_MBURST_INC8
01430   *         @arg @ref LL_DMA_MBURST_INC16
01431   */
01432 __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
01433 {
01434   uint32_t dma_base_addr = (uint32_t)DMAx;
01435 
01436   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST));
01437 }
01438 
01439 /**
01440   * @brief Set  Peripheral burst transfer configuration.
01441   * @rmtoll CR          PBURST           LL_DMA_SetPeriphBurstxfer
01442   * @param  DMAx DMAx Instance
01443   * @param  Stream This parameter can be one of the following values:
01444   *         @arg @ref LL_DMA_STREAM_0
01445   *         @arg @ref LL_DMA_STREAM_1
01446   *         @arg @ref LL_DMA_STREAM_2
01447   *         @arg @ref LL_DMA_STREAM_3
01448   *         @arg @ref LL_DMA_STREAM_4
01449   *         @arg @ref LL_DMA_STREAM_5
01450   *         @arg @ref LL_DMA_STREAM_6
01451   *         @arg @ref LL_DMA_STREAM_7
01452   * @param  Pburst This parameter can be one of the following values:
01453   *         @arg @ref LL_DMA_PBURST_SINGLE
01454   *         @arg @ref LL_DMA_PBURST_INC4
01455   *         @arg @ref LL_DMA_PBURST_INC8
01456   *         @arg @ref LL_DMA_PBURST_INC16
01457   * @retval None
01458   */
01459 __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst)
01460 {
01461   uint32_t dma_base_addr = (uint32_t)DMAx;
01462 
01463   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST, Pburst);
01464 }
01465 
01466 /**
01467   * @brief Get Peripheral burst transfer configuration.
01468   * @rmtoll CR          PBURST           LL_DMA_GetPeriphBurstxfer
01469   * @param  DMAx DMAx Instance
01470   * @param  Stream This parameter can be one of the following values:
01471   *         @arg @ref LL_DMA_STREAM_0
01472   *         @arg @ref LL_DMA_STREAM_1
01473   *         @arg @ref LL_DMA_STREAM_2
01474   *         @arg @ref LL_DMA_STREAM_3
01475   *         @arg @ref LL_DMA_STREAM_4
01476   *         @arg @ref LL_DMA_STREAM_5
01477   *         @arg @ref LL_DMA_STREAM_6
01478   *         @arg @ref LL_DMA_STREAM_7
01479   * @retval Returned value can be one of the following values:
01480   *         @arg @ref LL_DMA_PBURST_SINGLE
01481   *         @arg @ref LL_DMA_PBURST_INC4
01482   *         @arg @ref LL_DMA_PBURST_INC8
01483   *         @arg @ref LL_DMA_PBURST_INC16
01484   */
01485 __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
01486 {
01487   uint32_t dma_base_addr = (uint32_t)DMAx;
01488 
01489   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST));
01490 }
01491 
01492 /**
01493   * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
01494   * @rmtoll CR          CT           LL_DMA_SetCurrentTargetMem
01495   * @param  DMAx DMAx Instance
01496   * @param  Stream This parameter can be one of the following values:
01497   *         @arg @ref LL_DMA_STREAM_0
01498   *         @arg @ref LL_DMA_STREAM_1
01499   *         @arg @ref LL_DMA_STREAM_2
01500   *         @arg @ref LL_DMA_STREAM_3
01501   *         @arg @ref LL_DMA_STREAM_4
01502   *         @arg @ref LL_DMA_STREAM_5
01503   *         @arg @ref LL_DMA_STREAM_6
01504   *         @arg @ref LL_DMA_STREAM_7
01505   * @param CurrentMemory This parameter can be one of the following values:
01506   *         @arg @ref LL_DMA_CURRENTTARGETMEM0
01507   *         @arg @ref LL_DMA_CURRENTTARGETMEM1
01508   * @retval None
01509   */
01510 __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory)
01511 {
01512   uint32_t dma_base_addr = (uint32_t)DMAx;
01513 
01514   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT, CurrentMemory);
01515 }
01516 
01517 /**
01518   * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
01519   * @rmtoll CR          CT           LL_DMA_GetCurrentTargetMem
01520   * @param  DMAx DMAx Instance
01521   * @param  Stream This parameter can be one of the following values:
01522   *         @arg @ref LL_DMA_STREAM_0
01523   *         @arg @ref LL_DMA_STREAM_1
01524   *         @arg @ref LL_DMA_STREAM_2
01525   *         @arg @ref LL_DMA_STREAM_3
01526   *         @arg @ref LL_DMA_STREAM_4
01527   *         @arg @ref LL_DMA_STREAM_5
01528   *         @arg @ref LL_DMA_STREAM_6
01529   *         @arg @ref LL_DMA_STREAM_7
01530   * @retval Returned value can be one of the following values:
01531   *         @arg @ref LL_DMA_CURRENTTARGETMEM0
01532   *         @arg @ref LL_DMA_CURRENTTARGETMEM1
01533   */
01534 __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream)
01535 {
01536   uint32_t dma_base_addr = (uint32_t)DMAx;
01537 
01538   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT));
01539 }
01540 
01541 /**
01542   * @brief Enable the double buffer mode.
01543   * @rmtoll CR          DBM           LL_DMA_EnableDoubleBufferMode
01544   * @param  DMAx DMAx Instance
01545   * @param  Stream This parameter can be one of the following values:
01546   *         @arg @ref LL_DMA_STREAM_0
01547   *         @arg @ref LL_DMA_STREAM_1
01548   *         @arg @ref LL_DMA_STREAM_2
01549   *         @arg @ref LL_DMA_STREAM_3
01550   *         @arg @ref LL_DMA_STREAM_4
01551   *         @arg @ref LL_DMA_STREAM_5
01552   *         @arg @ref LL_DMA_STREAM_6
01553   *         @arg @ref LL_DMA_STREAM_7
01554   * @retval None
01555   */
01556 __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
01557 {
01558   uint32_t dma_base_addr = (uint32_t)DMAx;
01559 
01560   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
01561 }
01562 
01563 /**
01564   * @brief Disable the double buffer mode.
01565   * @rmtoll CR          DBM           LL_DMA_DisableDoubleBufferMode
01566   * @param  DMAx DMAx Instance
01567   * @param  Stream This parameter can be one of the following values:
01568   *         @arg @ref LL_DMA_STREAM_0
01569   *         @arg @ref LL_DMA_STREAM_1
01570   *         @arg @ref LL_DMA_STREAM_2
01571   *         @arg @ref LL_DMA_STREAM_3
01572   *         @arg @ref LL_DMA_STREAM_4
01573   *         @arg @ref LL_DMA_STREAM_5
01574   *         @arg @ref LL_DMA_STREAM_6
01575   *         @arg @ref LL_DMA_STREAM_7
01576   * @retval None
01577   */
01578 __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
01579 {
01580   uint32_t dma_base_addr = (uint32_t)DMAx;
01581 
01582   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
01583 }
01584 
01585 /**
01586   * @brief Get FIFO status.
01587   * @rmtoll FCR          FS          LL_DMA_GetFIFOStatus
01588   * @param  DMAx DMAx Instance
01589   * @param  Stream This parameter can be one of the following values:
01590   *         @arg @ref LL_DMA_STREAM_0
01591   *         @arg @ref LL_DMA_STREAM_1
01592   *         @arg @ref LL_DMA_STREAM_2
01593   *         @arg @ref LL_DMA_STREAM_3
01594   *         @arg @ref LL_DMA_STREAM_4
01595   *         @arg @ref LL_DMA_STREAM_5
01596   *         @arg @ref LL_DMA_STREAM_6
01597   *         @arg @ref LL_DMA_STREAM_7
01598   * @retval Returned value can be one of the following values:
01599   *         @arg @ref LL_DMA_FIFOSTATUS_0_25
01600   *         @arg @ref LL_DMA_FIFOSTATUS_25_50
01601   *         @arg @ref LL_DMA_FIFOSTATUS_50_75
01602   *         @arg @ref LL_DMA_FIFOSTATUS_75_100
01603   *         @arg @ref LL_DMA_FIFOSTATUS_EMPTY
01604   *         @arg @ref LL_DMA_FIFOSTATUS_FULL
01605   */
01606 __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream)
01607 {
01608   uint32_t dma_base_addr = (uint32_t)DMAx;
01609 
01610   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FS));
01611 }
01612 
01613 /**
01614   * @brief Disable Fifo mode.
01615   * @rmtoll FCR          DMDIS          LL_DMA_DisableFifoMode
01616   * @param  DMAx DMAx Instance
01617   * @param  Stream This parameter can be one of the following values:
01618   *         @arg @ref LL_DMA_STREAM_0
01619   *         @arg @ref LL_DMA_STREAM_1
01620   *         @arg @ref LL_DMA_STREAM_2
01621   *         @arg @ref LL_DMA_STREAM_3
01622   *         @arg @ref LL_DMA_STREAM_4
01623   *         @arg @ref LL_DMA_STREAM_5
01624   *         @arg @ref LL_DMA_STREAM_6
01625   *         @arg @ref LL_DMA_STREAM_7
01626   * @retval None
01627   */
01628 __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
01629 {
01630   uint32_t dma_base_addr = (uint32_t)DMAx;
01631 
01632   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
01633 }
01634 
01635 /**
01636   * @brief Enable Fifo mode.
01637   * @rmtoll FCR          DMDIS          LL_DMA_EnableFifoMode
01638   * @param  DMAx DMAx Instance
01639   * @param  Stream This parameter can be one of the following values:
01640   *         @arg @ref LL_DMA_STREAM_0
01641   *         @arg @ref LL_DMA_STREAM_1
01642   *         @arg @ref LL_DMA_STREAM_2
01643   *         @arg @ref LL_DMA_STREAM_3
01644   *         @arg @ref LL_DMA_STREAM_4
01645   *         @arg @ref LL_DMA_STREAM_5
01646   *         @arg @ref LL_DMA_STREAM_6
01647   *         @arg @ref LL_DMA_STREAM_7
01648   * @retval None
01649   */
01650 __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
01651 {
01652   uint32_t dma_base_addr = (uint32_t)DMAx;
01653 
01654   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
01655 }
01656 
01657 /**
01658   * @brief Select FIFO threshold.
01659   * @rmtoll FCR         FTH          LL_DMA_SetFIFOThreshold
01660   * @param  DMAx DMAx Instance
01661   * @param  Stream This parameter can be one of the following values:
01662   *         @arg @ref LL_DMA_STREAM_0
01663   *         @arg @ref LL_DMA_STREAM_1
01664   *         @arg @ref LL_DMA_STREAM_2
01665   *         @arg @ref LL_DMA_STREAM_3
01666   *         @arg @ref LL_DMA_STREAM_4
01667   *         @arg @ref LL_DMA_STREAM_5
01668   *         @arg @ref LL_DMA_STREAM_6
01669   *         @arg @ref LL_DMA_STREAM_7
01670   * @param  Threshold This parameter can be one of the following values:
01671   *         @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
01672   *         @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
01673   *         @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
01674   *         @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
01675   * @retval None
01676   */
01677 __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold)
01678 {
01679   uint32_t dma_base_addr = (uint32_t)DMAx;
01680 
01681   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH, Threshold);
01682 }
01683 
01684 /**
01685   * @brief Get FIFO threshold.
01686   * @rmtoll FCR         FTH          LL_DMA_GetFIFOThreshold
01687   * @param  DMAx DMAx Instance
01688   * @param  Stream This parameter can be one of the following values:
01689   *         @arg @ref LL_DMA_STREAM_0
01690   *         @arg @ref LL_DMA_STREAM_1
01691   *         @arg @ref LL_DMA_STREAM_2
01692   *         @arg @ref LL_DMA_STREAM_3
01693   *         @arg @ref LL_DMA_STREAM_4
01694   *         @arg @ref LL_DMA_STREAM_5
01695   *         @arg @ref LL_DMA_STREAM_6
01696   *         @arg @ref LL_DMA_STREAM_7
01697   * @retval Returned value can be one of the following values:
01698   *         @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
01699   *         @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
01700   *         @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
01701   *         @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
01702   */
01703 __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream)
01704 {
01705   uint32_t dma_base_addr = (uint32_t)DMAx;
01706 
01707   return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH));
01708 }
01709 
01710 /**
01711   * @brief Configure the FIFO .
01712   * @rmtoll FCR         FTH          LL_DMA_ConfigFifo\n
01713   *         FCR         DMDIS        LL_DMA_ConfigFifo
01714   * @param  DMAx DMAx Instance
01715   * @param  Stream This parameter can be one of the following values:
01716   *         @arg @ref LL_DMA_STREAM_0
01717   *         @arg @ref LL_DMA_STREAM_1
01718   *         @arg @ref LL_DMA_STREAM_2
01719   *         @arg @ref LL_DMA_STREAM_3
01720   *         @arg @ref LL_DMA_STREAM_4
01721   *         @arg @ref LL_DMA_STREAM_5
01722   *         @arg @ref LL_DMA_STREAM_6
01723   *         @arg @ref LL_DMA_STREAM_7
01724   * @param  FifoMode This parameter can be one of the following values:
01725   *         @arg @ref LL_DMA_FIFOMODE_ENABLE
01726   *         @arg @ref LL_DMA_FIFOMODE_DISABLE
01727   * @param  FifoThreshold This parameter can be one of the following values:
01728   *         @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
01729   *         @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
01730   *         @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
01731   *         @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
01732   * @retval None
01733   */
01734 __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold)
01735 {
01736   uint32_t dma_base_addr = (uint32_t)DMAx;
01737 
01738   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH | DMA_SxFCR_DMDIS, FifoMode | FifoThreshold);
01739 }
01740 
01741 /**
01742   * @brief Configure the Source and Destination addresses.
01743   * @note   This API must not be called when the DMA stream is enabled.
01744   * @rmtoll M0AR        M0A         LL_DMA_ConfigAddresses\n
01745   *         PAR         PA          LL_DMA_ConfigAddresses
01746   * @param  DMAx DMAx Instance
01747   * @param  Stream This parameter can be one of the following values:
01748   *         @arg @ref LL_DMA_STREAM_0
01749   *         @arg @ref LL_DMA_STREAM_1
01750   *         @arg @ref LL_DMA_STREAM_2
01751   *         @arg @ref LL_DMA_STREAM_3
01752   *         @arg @ref LL_DMA_STREAM_4
01753   *         @arg @ref LL_DMA_STREAM_5
01754   *         @arg @ref LL_DMA_STREAM_6
01755   *         @arg @ref LL_DMA_STREAM_7
01756   * @param  SrcAddress Between 0 to 0xFFFFFFFF
01757   * @param  DstAddress Between 0 to 0xFFFFFFFF
01758   * @param  Direction This parameter can be one of the following values:
01759   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
01760   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
01761   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
01762   * @retval None
01763   */
01764 __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction)
01765 {
01766   uint32_t dma_base_addr = (uint32_t)DMAx;
01767 
01768   /* Direction Memory to Periph */
01769   if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
01770   {
01771     WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, SrcAddress);
01772     WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, DstAddress);
01773   }
01774   /* Direction Periph to Memory and Memory to Memory */
01775   else
01776   {
01777     WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, SrcAddress);
01778     WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, DstAddress);
01779   }
01780 }
01781 
01782 /**
01783   * @brief  Set the Memory address.
01784   * @rmtoll M0AR        M0A         LL_DMA_SetMemoryAddress
01785   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
01786   * @note   This API must not be called when the DMA stream is enabled.
01787   * @param  DMAx DMAx Instance
01788   * @param  Stream This parameter can be one of the following values:
01789   *         @arg @ref LL_DMA_STREAM_0
01790   *         @arg @ref LL_DMA_STREAM_1
01791   *         @arg @ref LL_DMA_STREAM_2
01792   *         @arg @ref LL_DMA_STREAM_3
01793   *         @arg @ref LL_DMA_STREAM_4
01794   *         @arg @ref LL_DMA_STREAM_5
01795   *         @arg @ref LL_DMA_STREAM_6
01796   *         @arg @ref LL_DMA_STREAM_7
01797   * @param  MemoryAddress Between 0 to 0xFFFFFFFF
01798   * @retval None
01799   */
01800 __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
01801 {
01802   uint32_t dma_base_addr = (uint32_t)DMAx;
01803 
01804   WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
01805 }
01806 
01807 /**
01808   * @brief  Set the Peripheral address.
01809   * @rmtoll PAR        PA         LL_DMA_SetPeriphAddress
01810   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
01811   * @note   This API must not be called when the DMA stream is enabled.
01812   * @param  DMAx DMAx Instance
01813   * @param  Stream This parameter can be one of the following values:
01814   *         @arg @ref LL_DMA_STREAM_0
01815   *         @arg @ref LL_DMA_STREAM_1
01816   *         @arg @ref LL_DMA_STREAM_2
01817   *         @arg @ref LL_DMA_STREAM_3
01818   *         @arg @ref LL_DMA_STREAM_4
01819   *         @arg @ref LL_DMA_STREAM_5
01820   *         @arg @ref LL_DMA_STREAM_6
01821   *         @arg @ref LL_DMA_STREAM_7
01822   * @param  PeriphAddress Between 0 to 0xFFFFFFFF
01823   * @retval None
01824   */
01825 __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t PeriphAddress)
01826 {
01827   uint32_t dma_base_addr = (uint32_t)DMAx;
01828 
01829   WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, PeriphAddress);
01830 }
01831 
01832 /**
01833   * @brief  Get the Memory address.
01834   * @rmtoll M0AR        M0A         LL_DMA_GetMemoryAddress
01835   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
01836   * @param  DMAx DMAx Instance
01837   * @param  Stream This parameter can be one of the following values:
01838   *         @arg @ref LL_DMA_STREAM_0
01839   *         @arg @ref LL_DMA_STREAM_1
01840   *         @arg @ref LL_DMA_STREAM_2
01841   *         @arg @ref LL_DMA_STREAM_3
01842   *         @arg @ref LL_DMA_STREAM_4
01843   *         @arg @ref LL_DMA_STREAM_5
01844   *         @arg @ref LL_DMA_STREAM_6
01845   *         @arg @ref LL_DMA_STREAM_7
01846   * @retval Between 0 to 0xFFFFFFFF
01847   */
01848 __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream)
01849 {
01850   uint32_t dma_base_addr = (uint32_t)DMAx;
01851 
01852   return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
01853 }
01854 
01855 /**
01856   * @brief  Get the Peripheral address.
01857   * @rmtoll PAR        PA         LL_DMA_GetPeriphAddress
01858   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
01859   * @param  DMAx DMAx Instance
01860   * @param  Stream This parameter can be one of the following values:
01861   *         @arg @ref LL_DMA_STREAM_0
01862   *         @arg @ref LL_DMA_STREAM_1
01863   *         @arg @ref LL_DMA_STREAM_2
01864   *         @arg @ref LL_DMA_STREAM_3
01865   *         @arg @ref LL_DMA_STREAM_4
01866   *         @arg @ref LL_DMA_STREAM_5
01867   *         @arg @ref LL_DMA_STREAM_6
01868   *         @arg @ref LL_DMA_STREAM_7
01869   * @retval Between 0 to 0xFFFFFFFF
01870   */
01871 __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream)
01872 {
01873   uint32_t dma_base_addr = (uint32_t)DMAx;
01874 
01875   return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
01876 }
01877 
01878 /**
01879   * @brief  Set the Memory to Memory Source address.
01880   * @rmtoll PAR        PA         LL_DMA_SetM2MSrcAddress
01881   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
01882   * @note   This API must not be called when the DMA stream is enabled.
01883   * @param  DMAx DMAx Instance
01884   * @param  Stream This parameter can be one of the following values:
01885   *         @arg @ref LL_DMA_STREAM_0
01886   *         @arg @ref LL_DMA_STREAM_1
01887   *         @arg @ref LL_DMA_STREAM_2
01888   *         @arg @ref LL_DMA_STREAM_3
01889   *         @arg @ref LL_DMA_STREAM_4
01890   *         @arg @ref LL_DMA_STREAM_5
01891   *         @arg @ref LL_DMA_STREAM_6
01892   *         @arg @ref LL_DMA_STREAM_7
01893   * @param  MemoryAddress Between 0 to 0xFFFFFFFF
01894   * @retval None
01895   */
01896 __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
01897 {
01898   uint32_t dma_base_addr = (uint32_t)DMAx;
01899 
01900   WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, MemoryAddress);
01901 }
01902 
01903 /**
01904   * @brief  Set the Memory to Memory Destination address.
01905   * @rmtoll M0AR        M0A         LL_DMA_SetM2MDstAddress
01906   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
01907   * @note   This API must not be called when the DMA stream is enabled.
01908   * @param  DMAx DMAx Instance
01909   * @param  Stream This parameter can be one of the following values:
01910   *         @arg @ref LL_DMA_STREAM_0
01911   *         @arg @ref LL_DMA_STREAM_1
01912   *         @arg @ref LL_DMA_STREAM_2
01913   *         @arg @ref LL_DMA_STREAM_3
01914   *         @arg @ref LL_DMA_STREAM_4
01915   *         @arg @ref LL_DMA_STREAM_5
01916   *         @arg @ref LL_DMA_STREAM_6
01917   *         @arg @ref LL_DMA_STREAM_7
01918   * @param  MemoryAddress Between 0 to 0xFFFFFFFF
01919   * @retval None
01920   */
01921 __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
01922 {
01923   uint32_t dma_base_addr = (uint32_t)DMAx;
01924 
01925   WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
01926 }
01927 
01928 /**
01929   * @brief  Get the Memory to Memory Source address.
01930   * @rmtoll PAR        PA         LL_DMA_GetM2MSrcAddress
01931   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
01932   * @param  DMAx DMAx Instance
01933   * @param  Stream This parameter can be one of the following values:
01934   *         @arg @ref LL_DMA_STREAM_0
01935   *         @arg @ref LL_DMA_STREAM_1
01936   *         @arg @ref LL_DMA_STREAM_2
01937   *         @arg @ref LL_DMA_STREAM_3
01938   *         @arg @ref LL_DMA_STREAM_4
01939   *         @arg @ref LL_DMA_STREAM_5
01940   *         @arg @ref LL_DMA_STREAM_6
01941   *         @arg @ref LL_DMA_STREAM_7
01942   * @retval Between 0 to 0xFFFFFFFF
01943   */
01944 __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream)
01945 {
01946   uint32_t dma_base_addr = (uint32_t)DMAx;
01947 
01948   return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
01949 }
01950 
01951 /**
01952   * @brief  Get the Memory to Memory Destination address.
01953   * @rmtoll M0AR        M0A         LL_DMA_GetM2MDstAddress
01954   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
01955   * @param  DMAx DMAx Instance
01956   * @param  Stream This parameter can be one of the following values:
01957   *         @arg @ref LL_DMA_STREAM_0
01958   *         @arg @ref LL_DMA_STREAM_1
01959   *         @arg @ref LL_DMA_STREAM_2
01960   *         @arg @ref LL_DMA_STREAM_3
01961   *         @arg @ref LL_DMA_STREAM_4
01962   *         @arg @ref LL_DMA_STREAM_5
01963   *         @arg @ref LL_DMA_STREAM_6
01964   *         @arg @ref LL_DMA_STREAM_7
01965   * @retval Between 0 to 0xFFFFFFFF
01966   */
01967 __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream)
01968 {
01969   uint32_t dma_base_addr = (uint32_t)DMAx;
01970 
01971   return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
01972 }
01973 
01974 /**
01975   * @brief Set Memory 1 address (used in case of Double buffer mode).
01976   * @rmtoll M1AR        M1A         LL_DMA_SetMemory1Address
01977   * @param  DMAx DMAx Instance
01978   * @param  Stream This parameter can be one of the following values:
01979   *         @arg @ref LL_DMA_STREAM_0
01980   *         @arg @ref LL_DMA_STREAM_1
01981   *         @arg @ref LL_DMA_STREAM_2
01982   *         @arg @ref LL_DMA_STREAM_3
01983   *         @arg @ref LL_DMA_STREAM_4
01984   *         @arg @ref LL_DMA_STREAM_5
01985   *         @arg @ref LL_DMA_STREAM_6
01986   *         @arg @ref LL_DMA_STREAM_7
01987   * @param  Address Between 0 to 0xFFFFFFFF
01988   * @retval None
01989   */
01990 __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address)
01991 {
01992   uint32_t dma_base_addr = (uint32_t)DMAx;
01993 
01994   MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR, DMA_SxM1AR_M1A, Address);
01995 }
01996 
01997 /**
01998   * @brief Get Memory 1 address (used in case of Double buffer mode).
01999   * @rmtoll M1AR        M1A         LL_DMA_GetMemory1Address
02000   * @param  DMAx DMAx Instance
02001   * @param  Stream This parameter can be one of the following values:
02002   *         @arg @ref LL_DMA_STREAM_0
02003   *         @arg @ref LL_DMA_STREAM_1
02004   *         @arg @ref LL_DMA_STREAM_2
02005   *         @arg @ref LL_DMA_STREAM_3
02006   *         @arg @ref LL_DMA_STREAM_4
02007   *         @arg @ref LL_DMA_STREAM_5
02008   *         @arg @ref LL_DMA_STREAM_6
02009   *         @arg @ref LL_DMA_STREAM_7
02010   * @retval Between 0 to 0xFFFFFFFF
02011   */
02012 __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream)
02013 {
02014   uint32_t dma_base_addr = (uint32_t)DMAx;
02015 
02016   return (((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR);
02017 }
02018 
02019 /**
02020   * @}
02021   */
02022 
02023 /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management
02024   * @{
02025   */
02026 
02027 /**
02028   * @brief Get Stream 0 half transfer flag.
02029   * @rmtoll LISR  HTIF0    LL_DMA_IsActiveFlag_HT0
02030   * @param  DMAx DMAx Instance
02031   * @retval State of bit (1 or 0).
02032   */
02033 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx)
02034 {
02035   return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF0) == (DMA_LISR_HTIF0)) ? 1UL : 0UL);
02036 }
02037 
02038 /**
02039   * @brief Get Stream 1 half transfer flag.
02040   * @rmtoll LISR  HTIF1    LL_DMA_IsActiveFlag_HT1
02041   * @param  DMAx DMAx Instance
02042   * @retval State of bit (1 or 0).
02043   */
02044 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx)
02045 {
02046   return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF1) == (DMA_LISR_HTIF1)) ? 1UL : 0UL);
02047 }
02048 
02049 /**
02050   * @brief Get Stream 2 half transfer flag.
02051   * @rmtoll LISR  HTIF2    LL_DMA_IsActiveFlag_HT2
02052   * @param  DMAx DMAx Instance
02053   * @retval State of bit (1 or 0).
02054   */
02055 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx)
02056 {
02057   return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF2) == (DMA_LISR_HTIF2)) ? 1UL : 0UL);
02058 }
02059 
02060 /**
02061   * @brief Get Stream 3 half transfer flag.
02062   * @rmtoll LISR  HTIF3    LL_DMA_IsActiveFlag_HT3
02063   * @param  DMAx DMAx Instance
02064   * @retval State of bit (1 or 0).
02065   */
02066 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx)
02067 {
02068   return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF3) == (DMA_LISR_HTIF3)) ? 1UL : 0UL);
02069 }
02070 
02071 /**
02072   * @brief Get Stream 4 half transfer flag.
02073   * @rmtoll HISR  HTIF4    LL_DMA_IsActiveFlag_HT4
02074   * @param  DMAx DMAx Instance
02075   * @retval State of bit (1 or 0).
02076   */
02077 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx)
02078 {
02079   return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF4) == (DMA_HISR_HTIF4)) ? 1UL : 0UL);
02080 }
02081 
02082 /**
02083   * @brief Get Stream 5 half transfer flag.
02084   * @rmtoll HISR  HTIF0    LL_DMA_IsActiveFlag_HT5
02085   * @param  DMAx DMAx Instance
02086   * @retval State of bit (1 or 0).
02087   */
02088 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx)
02089 {
02090   return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF5) == (DMA_HISR_HTIF5)) ? 1UL : 0UL);
02091 }
02092 
02093 /**
02094   * @brief Get Stream 6 half transfer flag.
02095   * @rmtoll HISR  HTIF6    LL_DMA_IsActiveFlag_HT6
02096   * @param  DMAx DMAx Instance
02097   * @retval State of bit (1 or 0).
02098   */
02099 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx)
02100 {
02101   return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF6) == (DMA_HISR_HTIF6)) ? 1UL : 0UL);
02102 }
02103 
02104 /**
02105   * @brief Get Stream 7 half transfer flag.
02106   * @rmtoll HISR  HTIF7    LL_DMA_IsActiveFlag_HT7
02107   * @param  DMAx DMAx Instance
02108   * @retval State of bit (1 or 0).
02109   */
02110 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx)
02111 {
02112   return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF7) == (DMA_HISR_HTIF7)) ? 1UL : 0UL);
02113 }
02114 
02115 /**
02116   * @brief Get Stream 0 transfer complete flag.
02117   * @rmtoll LISR  TCIF0    LL_DMA_IsActiveFlag_TC0
02118   * @param  DMAx DMAx Instance
02119   * @retval State of bit (1 or 0).
02120   */
02121 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx)
02122 {
02123   return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF0) == (DMA_LISR_TCIF0)) ? 1UL : 0UL);
02124 }
02125 
02126 /**
02127   * @brief Get Stream 1 transfer complete flag.
02128   * @rmtoll LISR  TCIF1    LL_DMA_IsActiveFlag_TC1
02129   * @param  DMAx DMAx Instance
02130   * @retval State of bit (1 or 0).
02131   */
02132 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx)
02133 {
02134   return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF1) == (DMA_LISR_TCIF1)) ? 1UL : 0UL);
02135 }
02136 
02137 /**
02138   * @brief Get Stream 2 transfer complete flag.
02139   * @rmtoll LISR  TCIF2    LL_DMA_IsActiveFlag_TC2
02140   * @param  DMAx DMAx Instance
02141   * @retval State of bit (1 or 0).
02142   */
02143 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx)
02144 {
02145   return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF2) == (DMA_LISR_TCIF2)) ? 1UL : 0UL);
02146 }
02147 
02148 /**
02149   * @brief Get Stream 3 transfer complete flag.
02150   * @rmtoll LISR  TCIF3    LL_DMA_IsActiveFlag_TC3
02151   * @param  DMAx DMAx Instance
02152   * @retval State of bit (1 or 0).
02153   */
02154 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx)
02155 {
02156   return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF3) == (DMA_LISR_TCIF3)) ? 1UL : 0UL);
02157 }
02158 
02159 /**
02160   * @brief Get Stream 4 transfer complete flag.
02161   * @rmtoll HISR  TCIF4    LL_DMA_IsActiveFlag_TC4
02162   * @param  DMAx DMAx Instance
02163   * @retval State of bit (1 or 0).
02164   */
02165 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx)
02166 {
02167   return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF4) == (DMA_HISR_TCIF4)) ? 1UL : 0UL);
02168 }
02169 
02170 /**
02171   * @brief Get Stream 5 transfer complete flag.
02172   * @rmtoll HISR  TCIF0    LL_DMA_IsActiveFlag_TC5
02173   * @param  DMAx DMAx Instance
02174   * @retval State of bit (1 or 0).
02175   */
02176 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx)
02177 {
02178   return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF5) == (DMA_HISR_TCIF5)) ? 1UL : 0UL);
02179 }
02180 
02181 /**
02182   * @brief Get Stream 6 transfer complete flag.
02183   * @rmtoll HISR  TCIF6    LL_DMA_IsActiveFlag_TC6
02184   * @param  DMAx DMAx Instance
02185   * @retval State of bit (1 or 0).
02186   */
02187 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx)
02188 {
02189   return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF6) == (DMA_HISR_TCIF6)) ? 1UL : 0UL);
02190 }
02191 
02192 /**
02193   * @brief Get Stream 7 transfer complete flag.
02194   * @rmtoll HISR  TCIF7    LL_DMA_IsActiveFlag_TC7
02195   * @param  DMAx DMAx Instance
02196   * @retval State of bit (1 or 0).
02197   */
02198 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx)
02199 {
02200   return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF7) == (DMA_HISR_TCIF7)) ? 1UL : 0UL);
02201 }
02202 
02203 /**
02204   * @brief Get Stream 0 transfer error flag.
02205   * @rmtoll LISR  TEIF0    LL_DMA_IsActiveFlag_TE0
02206   * @param  DMAx DMAx Instance
02207   * @retval State of bit (1 or 0).
02208   */
02209 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx)
02210 {
02211   return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF0) == (DMA_LISR_TEIF0)) ? 1UL : 0UL);
02212 }
02213 
02214 /**
02215   * @brief Get Stream 1 transfer error flag.
02216   * @rmtoll LISR  TEIF1    LL_DMA_IsActiveFlag_TE1
02217   * @param  DMAx DMAx Instance
02218   * @retval State of bit (1 or 0).
02219   */
02220 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx)
02221 {
02222   return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF1) == (DMA_LISR_TEIF1)) ? 1UL : 0UL);
02223 }
02224 
02225 /**
02226   * @brief Get Stream 2 transfer error flag.
02227   * @rmtoll LISR  TEIF2    LL_DMA_IsActiveFlag_TE2
02228   * @param  DMAx DMAx Instance
02229   * @retval State of bit (1 or 0).
02230   */
02231 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx)
02232 {
02233   return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF2) == (DMA_LISR_TEIF2)) ? 1UL : 0UL);
02234 }
02235 
02236 /**
02237   * @brief Get Stream 3 transfer error flag.
02238   * @rmtoll LISR  TEIF3    LL_DMA_IsActiveFlag_TE3
02239   * @param  DMAx DMAx Instance
02240   * @retval State of bit (1 or 0).
02241   */
02242 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx)
02243 {
02244   return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF3) == (DMA_LISR_TEIF3)) ? 1UL : 0UL);
02245 }
02246 
02247 /**
02248   * @brief Get Stream 4 transfer error flag.
02249   * @rmtoll HISR  TEIF4    LL_DMA_IsActiveFlag_TE4
02250   * @param  DMAx DMAx Instance
02251   * @retval State of bit (1 or 0).
02252   */
02253 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx)
02254 {
02255   return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF4) == (DMA_HISR_TEIF4)) ? 1UL : 0UL);
02256 }
02257 
02258 /**
02259   * @brief Get Stream 5 transfer error flag.
02260   * @rmtoll HISR  TEIF0    LL_DMA_IsActiveFlag_TE5
02261   * @param  DMAx DMAx Instance
02262   * @retval State of bit (1 or 0).
02263   */
02264 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx)
02265 {
02266   return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF5) == (DMA_HISR_TEIF5)) ? 1UL : 0UL);
02267 }
02268 
02269 /**
02270   * @brief Get Stream 6 transfer error flag.
02271   * @rmtoll HISR  TEIF6    LL_DMA_IsActiveFlag_TE6
02272   * @param  DMAx DMAx Instance
02273   * @retval State of bit (1 or 0).
02274   */
02275 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx)
02276 {
02277   return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF6) == (DMA_HISR_TEIF6)) ? 1UL : 0UL);
02278 }
02279 
02280 /**
02281   * @brief Get Stream 7 transfer error flag.
02282   * @rmtoll HISR  TEIF7    LL_DMA_IsActiveFlag_TE7
02283   * @param  DMAx DMAx Instance
02284   * @retval State of bit (1 or 0).
02285   */
02286 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx)
02287 {
02288   return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF7) == (DMA_HISR_TEIF7)) ? 1UL : 0UL);
02289 }
02290 
02291 /**
02292   * @brief Get Stream 0 direct mode error flag.
02293   * @rmtoll LISR  DMEIF0    LL_DMA_IsActiveFlag_DME0
02294   * @param  DMAx DMAx Instance
02295   * @retval State of bit (1 or 0).
02296   */
02297 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx)
02298 {
02299   return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF0) == (DMA_LISR_DMEIF0)) ? 1UL : 0UL);
02300 }
02301 
02302 /**
02303   * @brief Get Stream 1 direct mode error flag.
02304   * @rmtoll LISR  DMEIF1    LL_DMA_IsActiveFlag_DME1
02305   * @param  DMAx DMAx Instance
02306   * @retval State of bit (1 or 0).
02307   */
02308 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx)
02309 {
02310   return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF1) == (DMA_LISR_DMEIF1)) ? 1UL : 0UL);
02311 }
02312 
02313 /**
02314   * @brief Get Stream 2 direct mode error flag.
02315   * @rmtoll LISR  DMEIF2    LL_DMA_IsActiveFlag_DME2
02316   * @param  DMAx DMAx Instance
02317   * @retval State of bit (1 or 0).
02318   */
02319 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx)
02320 {
02321   return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF2) == (DMA_LISR_DMEIF2)) ? 1UL : 0UL);
02322 }
02323 
02324 /**
02325   * @brief Get Stream 3 direct mode error flag.
02326   * @rmtoll LISR  DMEIF3    LL_DMA_IsActiveFlag_DME3
02327   * @param  DMAx DMAx Instance
02328   * @retval State of bit (1 or 0).
02329   */
02330 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx)
02331 {
02332   return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF3) == (DMA_LISR_DMEIF3)) ? 1UL : 0UL);
02333 }
02334 
02335 /**
02336   * @brief Get Stream 4 direct mode error flag.
02337   * @rmtoll HISR  DMEIF4    LL_DMA_IsActiveFlag_DME4
02338   * @param  DMAx DMAx Instance
02339   * @retval State of bit (1 or 0).
02340   */
02341 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx)
02342 {
02343   return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF4) == (DMA_HISR_DMEIF4)) ? 1UL : 0UL);
02344 }
02345 
02346 /**
02347   * @brief Get Stream 5 direct mode error flag.
02348   * @rmtoll HISR  DMEIF0    LL_DMA_IsActiveFlag_DME5
02349   * @param  DMAx DMAx Instance
02350   * @retval State of bit (1 or 0).
02351   */
02352 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx)
02353 {
02354   return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF5) == (DMA_HISR_DMEIF5)) ? 1UL : 0UL);
02355 }
02356 
02357 /**
02358   * @brief Get Stream 6 direct mode error flag.
02359   * @rmtoll HISR  DMEIF6    LL_DMA_IsActiveFlag_DME6
02360   * @param  DMAx DMAx Instance
02361   * @retval State of bit (1 or 0).
02362   */
02363 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx)
02364 {
02365   return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF6) == (DMA_HISR_DMEIF6)) ? 1UL : 0UL);
02366 }
02367 
02368 /**
02369   * @brief Get Stream 7 direct mode error flag.
02370   * @rmtoll HISR  DMEIF7    LL_DMA_IsActiveFlag_DME7
02371   * @param  DMAx DMAx Instance
02372   * @retval State of bit (1 or 0).
02373   */
02374 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx)
02375 {
02376   return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF7) == (DMA_HISR_DMEIF7)) ? 1UL : 0UL);
02377 }
02378 
02379 /**
02380   * @brief Get Stream 0 FIFO error flag.
02381   * @rmtoll LISR  FEIF0    LL_DMA_IsActiveFlag_FE0
02382   * @param  DMAx DMAx Instance
02383   * @retval State of bit (1 or 0).
02384   */
02385 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx)
02386 {
02387   return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF0) == (DMA_LISR_FEIF0)) ? 1UL : 0UL);
02388 }
02389 
02390 /**
02391   * @brief Get Stream 1 FIFO error flag.
02392   * @rmtoll LISR  FEIF1    LL_DMA_IsActiveFlag_FE1
02393   * @param  DMAx DMAx Instance
02394   * @retval State of bit (1 or 0).
02395   */
02396 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx)
02397 {
02398   return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF1) == (DMA_LISR_FEIF1)) ? 1UL : 0UL);
02399 }
02400 
02401 /**
02402   * @brief Get Stream 2 FIFO error flag.
02403   * @rmtoll LISR  FEIF2    LL_DMA_IsActiveFlag_FE2
02404   * @param  DMAx DMAx Instance
02405   * @retval State of bit (1 or 0).
02406   */
02407 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx)
02408 {
02409   return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF2) == (DMA_LISR_FEIF2)) ? 1UL : 0UL);
02410 }
02411 
02412 /**
02413   * @brief Get Stream 3 FIFO error flag.
02414   * @rmtoll LISR  FEIF3    LL_DMA_IsActiveFlag_FE3
02415   * @param  DMAx DMAx Instance
02416   * @retval State of bit (1 or 0).
02417   */
02418 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx)
02419 {
02420   return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF3) == (DMA_LISR_FEIF3)) ? 1UL : 0UL);
02421 }
02422 
02423 /**
02424   * @brief Get Stream 4 FIFO error flag.
02425   * @rmtoll HISR  FEIF4    LL_DMA_IsActiveFlag_FE4
02426   * @param  DMAx DMAx Instance
02427   * @retval State of bit (1 or 0).
02428   */
02429 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx)
02430 {
02431   return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF4) == (DMA_HISR_FEIF4)) ? 1UL : 0UL);
02432 }
02433 
02434 /**
02435   * @brief Get Stream 5 FIFO error flag.
02436   * @rmtoll HISR  FEIF0    LL_DMA_IsActiveFlag_FE5
02437   * @param  DMAx DMAx Instance
02438   * @retval State of bit (1 or 0).
02439   */
02440 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx)
02441 {
02442   return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF5) == (DMA_HISR_FEIF5)) ? 1UL : 0UL);
02443 }
02444 
02445 /**
02446   * @brief Get Stream 6 FIFO error flag.
02447   * @rmtoll HISR  FEIF6    LL_DMA_IsActiveFlag_FE6
02448   * @param  DMAx DMAx Instance
02449   * @retval State of bit (1 or 0).
02450   */
02451 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx)
02452 {
02453   return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF6) == (DMA_HISR_FEIF6)) ? 1UL : 0UL);
02454 }
02455 
02456 /**
02457   * @brief Get Stream 7 FIFO error flag.
02458   * @rmtoll HISR  FEIF7    LL_DMA_IsActiveFlag_FE7
02459   * @param  DMAx DMAx Instance
02460   * @retval State of bit (1 or 0).
02461   */
02462 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx)
02463 {
02464   return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF7) == (DMA_HISR_FEIF7)) ? 1UL : 0UL);
02465 }
02466 
02467 /**
02468   * @brief Clear Stream 0 half transfer flag.
02469   * @rmtoll LIFCR  CHTIF0    LL_DMA_ClearFlag_HT0
02470   * @param  DMAx DMAx Instance
02471   * @retval None
02472   */
02473 __STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx)
02474 {
02475   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF0);
02476 }
02477 
02478 /**
02479   * @brief Clear Stream 1 half transfer flag.
02480   * @rmtoll LIFCR  CHTIF1    LL_DMA_ClearFlag_HT1
02481   * @param  DMAx DMAx Instance
02482   * @retval None
02483   */
02484 __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx)
02485 {
02486   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF1);
02487 }
02488 
02489 /**
02490   * @brief Clear Stream 2 half transfer flag.
02491   * @rmtoll LIFCR  CHTIF2    LL_DMA_ClearFlag_HT2
02492   * @param  DMAx DMAx Instance
02493   * @retval None
02494   */
02495 __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx)
02496 {
02497   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF2);
02498 }
02499 
02500 /**
02501   * @brief Clear Stream 3 half transfer flag.
02502   * @rmtoll LIFCR  CHTIF3    LL_DMA_ClearFlag_HT3
02503   * @param  DMAx DMAx Instance
02504   * @retval None
02505   */
02506 __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx)
02507 {
02508   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF3);
02509 }
02510 
02511 /**
02512   * @brief Clear Stream 4 half transfer flag.
02513   * @rmtoll HIFCR  CHTIF4    LL_DMA_ClearFlag_HT4
02514   * @param  DMAx DMAx Instance
02515   * @retval None
02516   */
02517 __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx)
02518 {
02519   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF4);
02520 }
02521 
02522 /**
02523   * @brief Clear Stream 5 half transfer flag.
02524   * @rmtoll HIFCR  CHTIF5    LL_DMA_ClearFlag_HT5
02525   * @param  DMAx DMAx Instance
02526   * @retval None
02527   */
02528 __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx)
02529 {
02530   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF5);
02531 }
02532 
02533 /**
02534   * @brief Clear Stream 6 half transfer flag.
02535   * @rmtoll HIFCR  CHTIF6    LL_DMA_ClearFlag_HT6
02536   * @param  DMAx DMAx Instance
02537   * @retval None
02538   */
02539 __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx)
02540 {
02541   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF6);
02542 }
02543 
02544 /**
02545   * @brief Clear Stream 7 half transfer flag.
02546   * @rmtoll HIFCR  CHTIF7    LL_DMA_ClearFlag_HT7
02547   * @param  DMAx DMAx Instance
02548   * @retval None
02549   */
02550 __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx)
02551 {
02552   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF7);
02553 }
02554 
02555 /**
02556   * @brief Clear Stream 0 transfer complete flag.
02557   * @rmtoll LIFCR  CTCIF0    LL_DMA_ClearFlag_TC0
02558   * @param  DMAx DMAx Instance
02559   * @retval None
02560   */
02561 __STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx)
02562 {
02563   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF0);
02564 }
02565 
02566 /**
02567   * @brief Clear Stream 1 transfer complete flag.
02568   * @rmtoll LIFCR  CTCIF1    LL_DMA_ClearFlag_TC1
02569   * @param  DMAx DMAx Instance
02570   * @retval None
02571   */
02572 __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx)
02573 {
02574   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF1);
02575 }
02576 
02577 /**
02578   * @brief Clear Stream 2 transfer complete flag.
02579   * @rmtoll LIFCR  CTCIF2    LL_DMA_ClearFlag_TC2
02580   * @param  DMAx DMAx Instance
02581   * @retval None
02582   */
02583 __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx)
02584 {
02585   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF2);
02586 }
02587 
02588 /**
02589   * @brief Clear Stream 3 transfer complete flag.
02590   * @rmtoll LIFCR  CTCIF3    LL_DMA_ClearFlag_TC3
02591   * @param  DMAx DMAx Instance
02592   * @retval None
02593   */
02594 __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx)
02595 {
02596   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF3);
02597 }
02598 
02599 /**
02600   * @brief Clear Stream 4 transfer complete flag.
02601   * @rmtoll HIFCR  CTCIF4    LL_DMA_ClearFlag_TC4
02602   * @param  DMAx DMAx Instance
02603   * @retval None
02604   */
02605 __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx)
02606 {
02607   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF4);
02608 }
02609 
02610 /**
02611   * @brief Clear Stream 5 transfer complete flag.
02612   * @rmtoll HIFCR  CTCIF5    LL_DMA_ClearFlag_TC5
02613   * @param  DMAx DMAx Instance
02614   * @retval None
02615   */
02616 __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx)
02617 {
02618   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF5);
02619 }
02620 
02621 /**
02622   * @brief Clear Stream 6 transfer complete flag.
02623   * @rmtoll HIFCR  CTCIF6    LL_DMA_ClearFlag_TC6
02624   * @param  DMAx DMAx Instance
02625   * @retval None
02626   */
02627 __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx)
02628 {
02629   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF6);
02630 }
02631 
02632 /**
02633   * @brief Clear Stream 7 transfer complete flag.
02634   * @rmtoll HIFCR  CTCIF7    LL_DMA_ClearFlag_TC7
02635   * @param  DMAx DMAx Instance
02636   * @retval None
02637   */
02638 __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx)
02639 {
02640   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF7);
02641 }
02642 
02643 /**
02644   * @brief Clear Stream 0 transfer error flag.
02645   * @rmtoll LIFCR  CTEIF0    LL_DMA_ClearFlag_TE0
02646   * @param  DMAx DMAx Instance
02647   * @retval None
02648   */
02649 __STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx)
02650 {
02651   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF0);
02652 }
02653 
02654 /**
02655   * @brief Clear Stream 1 transfer error flag.
02656   * @rmtoll LIFCR  CTEIF1    LL_DMA_ClearFlag_TE1
02657   * @param  DMAx DMAx Instance
02658   * @retval None
02659   */
02660 __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx)
02661 {
02662   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF1);
02663 }
02664 
02665 /**
02666   * @brief Clear Stream 2 transfer error flag.
02667   * @rmtoll LIFCR  CTEIF2    LL_DMA_ClearFlag_TE2
02668   * @param  DMAx DMAx Instance
02669   * @retval None
02670   */
02671 __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx)
02672 {
02673   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF2);
02674 }
02675 
02676 /**
02677   * @brief Clear Stream 3 transfer error flag.
02678   * @rmtoll LIFCR  CTEIF3    LL_DMA_ClearFlag_TE3
02679   * @param  DMAx DMAx Instance
02680   * @retval None
02681   */
02682 __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx)
02683 {
02684   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF3);
02685 }
02686 
02687 /**
02688   * @brief Clear Stream 4 transfer error flag.
02689   * @rmtoll HIFCR  CTEIF4    LL_DMA_ClearFlag_TE4
02690   * @param  DMAx DMAx Instance
02691   * @retval None
02692   */
02693 __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx)
02694 {
02695   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF4);
02696 }
02697 
02698 /**
02699   * @brief Clear Stream 5 transfer error flag.
02700   * @rmtoll HIFCR  CTEIF5    LL_DMA_ClearFlag_TE5
02701   * @param  DMAx DMAx Instance
02702   * @retval None
02703   */
02704 __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx)
02705 {
02706   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF5);
02707 }
02708 
02709 /**
02710   * @brief Clear Stream 6 transfer error flag.
02711   * @rmtoll HIFCR  CTEIF6    LL_DMA_ClearFlag_TE6
02712   * @param  DMAx DMAx Instance
02713   * @retval None
02714   */
02715 __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx)
02716 {
02717   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF6);
02718 }
02719 
02720 /**
02721   * @brief Clear Stream 7 transfer error flag.
02722   * @rmtoll HIFCR  CTEIF7    LL_DMA_ClearFlag_TE7
02723   * @param  DMAx DMAx Instance
02724   * @retval None
02725   */
02726 __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx)
02727 {
02728   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF7);
02729 }
02730 
02731 /**
02732   * @brief Clear Stream 0 direct mode error flag.
02733   * @rmtoll LIFCR  CDMEIF0    LL_DMA_ClearFlag_DME0
02734   * @param  DMAx DMAx Instance
02735   * @retval None
02736   */
02737 __STATIC_INLINE void LL_DMA_ClearFlag_DME0(DMA_TypeDef *DMAx)
02738 {
02739   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF0);
02740 }
02741 
02742 /**
02743   * @brief Clear Stream 1 direct mode error flag.
02744   * @rmtoll LIFCR  CDMEIF1    LL_DMA_ClearFlag_DME1
02745   * @param  DMAx DMAx Instance
02746   * @retval None
02747   */
02748 __STATIC_INLINE void LL_DMA_ClearFlag_DME1(DMA_TypeDef *DMAx)
02749 {
02750   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF1);
02751 }
02752 
02753 /**
02754   * @brief Clear Stream 2 direct mode error flag.
02755   * @rmtoll LIFCR  CDMEIF2    LL_DMA_ClearFlag_DME2
02756   * @param  DMAx DMAx Instance
02757   * @retval None
02758   */
02759 __STATIC_INLINE void LL_DMA_ClearFlag_DME2(DMA_TypeDef *DMAx)
02760 {
02761   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF2);
02762 }
02763 
02764 /**
02765   * @brief Clear Stream 3 direct mode error flag.
02766   * @rmtoll LIFCR  CDMEIF3    LL_DMA_ClearFlag_DME3
02767   * @param  DMAx DMAx Instance
02768   * @retval None
02769   */
02770 __STATIC_INLINE void LL_DMA_ClearFlag_DME3(DMA_TypeDef *DMAx)
02771 {
02772   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF3);
02773 }
02774 
02775 /**
02776   * @brief Clear Stream 4 direct mode error flag.
02777   * @rmtoll HIFCR  CDMEIF4    LL_DMA_ClearFlag_DME4
02778   * @param  DMAx DMAx Instance
02779   * @retval None
02780   */
02781 __STATIC_INLINE void LL_DMA_ClearFlag_DME4(DMA_TypeDef *DMAx)
02782 {
02783   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF4);
02784 }
02785 
02786 /**
02787   * @brief Clear Stream 5 direct mode error flag.
02788   * @rmtoll HIFCR  CDMEIF5    LL_DMA_ClearFlag_DME5
02789   * @param  DMAx DMAx Instance
02790   * @retval None
02791   */
02792 __STATIC_INLINE void LL_DMA_ClearFlag_DME5(DMA_TypeDef *DMAx)
02793 {
02794   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF5);
02795 }
02796 
02797 /**
02798   * @brief Clear Stream 6 direct mode error flag.
02799   * @rmtoll HIFCR  CDMEIF6    LL_DMA_ClearFlag_DME6
02800   * @param  DMAx DMAx Instance
02801   * @retval None
02802   */
02803 __STATIC_INLINE void LL_DMA_ClearFlag_DME6(DMA_TypeDef *DMAx)
02804 {
02805   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF6);
02806 }
02807 
02808 /**
02809   * @brief Clear Stream 7 direct mode error flag.
02810   * @rmtoll HIFCR  CDMEIF7    LL_DMA_ClearFlag_DME7
02811   * @param  DMAx DMAx Instance
02812   * @retval None
02813   */
02814 __STATIC_INLINE void LL_DMA_ClearFlag_DME7(DMA_TypeDef *DMAx)
02815 {
02816   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF7);
02817 }
02818 
02819 /**
02820   * @brief Clear Stream 0 FIFO error flag.
02821   * @rmtoll LIFCR  CFEIF0    LL_DMA_ClearFlag_FE0
02822   * @param  DMAx DMAx Instance
02823   * @retval None
02824   */
02825 __STATIC_INLINE void LL_DMA_ClearFlag_FE0(DMA_TypeDef *DMAx)
02826 {
02827   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF0);
02828 }
02829 
02830 /**
02831   * @brief Clear Stream 1 FIFO error flag.
02832   * @rmtoll LIFCR  CFEIF1    LL_DMA_ClearFlag_FE1
02833   * @param  DMAx DMAx Instance
02834   * @retval None
02835   */
02836 __STATIC_INLINE void LL_DMA_ClearFlag_FE1(DMA_TypeDef *DMAx)
02837 {
02838   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF1);
02839 }
02840 
02841 /**
02842   * @brief Clear Stream 2 FIFO error flag.
02843   * @rmtoll LIFCR  CFEIF2    LL_DMA_ClearFlag_FE2
02844   * @param  DMAx DMAx Instance
02845   * @retval None
02846   */
02847 __STATIC_INLINE void LL_DMA_ClearFlag_FE2(DMA_TypeDef *DMAx)
02848 {
02849   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF2);
02850 }
02851 
02852 /**
02853   * @brief Clear Stream 3 FIFO error flag.
02854   * @rmtoll LIFCR  CFEIF3    LL_DMA_ClearFlag_FE3
02855   * @param  DMAx DMAx Instance
02856   * @retval None
02857   */
02858 __STATIC_INLINE void LL_DMA_ClearFlag_FE3(DMA_TypeDef *DMAx)
02859 {
02860   WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF3);
02861 }
02862 
02863 /**
02864   * @brief Clear Stream 4 FIFO error flag.
02865   * @rmtoll HIFCR  CFEIF4    LL_DMA_ClearFlag_FE4
02866   * @param  DMAx DMAx Instance
02867   * @retval None
02868   */
02869 __STATIC_INLINE void LL_DMA_ClearFlag_FE4(DMA_TypeDef *DMAx)
02870 {
02871   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF4);
02872 }
02873 
02874 /**
02875   * @brief Clear Stream 5 FIFO error flag.
02876   * @rmtoll HIFCR  CFEIF5    LL_DMA_ClearFlag_FE5
02877   * @param  DMAx DMAx Instance
02878   * @retval None
02879   */
02880 __STATIC_INLINE void LL_DMA_ClearFlag_FE5(DMA_TypeDef *DMAx)
02881 {
02882   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF5);
02883 }
02884 
02885 /**
02886   * @brief Clear Stream 6 FIFO error flag.
02887   * @rmtoll HIFCR  CFEIF6    LL_DMA_ClearFlag_FE6
02888   * @param  DMAx DMAx Instance
02889   * @retval None
02890   */
02891 __STATIC_INLINE void LL_DMA_ClearFlag_FE6(DMA_TypeDef *DMAx)
02892 {
02893   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF6);
02894 }
02895 
02896 /**
02897   * @brief Clear Stream 7 FIFO error flag.
02898   * @rmtoll HIFCR  CFEIF7    LL_DMA_ClearFlag_FE7
02899   * @param  DMAx DMAx Instance
02900   * @retval None
02901   */
02902 __STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx)
02903 {
02904   WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF7);
02905 }
02906 
02907 /**
02908   * @}
02909   */
02910 
02911 /** @defgroup DMA_LL_EF_IT_Management IT_Management
02912   * @{
02913   */
02914 
02915 /**
02916   * @brief Enable Half transfer interrupt.
02917   * @rmtoll CR        HTIE         LL_DMA_EnableIT_HT
02918   * @param  DMAx DMAx Instance
02919   * @param  Stream This parameter can be one of the following values:
02920   *         @arg @ref LL_DMA_STREAM_0
02921   *         @arg @ref LL_DMA_STREAM_1
02922   *         @arg @ref LL_DMA_STREAM_2
02923   *         @arg @ref LL_DMA_STREAM_3
02924   *         @arg @ref LL_DMA_STREAM_4
02925   *         @arg @ref LL_DMA_STREAM_5
02926   *         @arg @ref LL_DMA_STREAM_6
02927   *         @arg @ref LL_DMA_STREAM_7
02928   * @retval None
02929   */
02930 __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
02931 {
02932   uint32_t dma_base_addr = (uint32_t)DMAx;
02933 
02934   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
02935 }
02936 
02937 /**
02938   * @brief Enable Transfer error interrupt.
02939   * @rmtoll CR        TEIE         LL_DMA_EnableIT_TE
02940   * @param  DMAx DMAx Instance
02941   * @param  Stream This parameter can be one of the following values:
02942   *         @arg @ref LL_DMA_STREAM_0
02943   *         @arg @ref LL_DMA_STREAM_1
02944   *         @arg @ref LL_DMA_STREAM_2
02945   *         @arg @ref LL_DMA_STREAM_3
02946   *         @arg @ref LL_DMA_STREAM_4
02947   *         @arg @ref LL_DMA_STREAM_5
02948   *         @arg @ref LL_DMA_STREAM_6
02949   *         @arg @ref LL_DMA_STREAM_7
02950   * @retval None
02951   */
02952 __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
02953 {
02954   uint32_t dma_base_addr = (uint32_t)DMAx;
02955 
02956   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
02957 }
02958 
02959 /**
02960   * @brief Enable Transfer complete interrupt.
02961   * @rmtoll CR        TCIE         LL_DMA_EnableIT_TC
02962   * @param  DMAx DMAx Instance
02963   * @param  Stream This parameter can be one of the following values:
02964   *         @arg @ref LL_DMA_STREAM_0
02965   *         @arg @ref LL_DMA_STREAM_1
02966   *         @arg @ref LL_DMA_STREAM_2
02967   *         @arg @ref LL_DMA_STREAM_3
02968   *         @arg @ref LL_DMA_STREAM_4
02969   *         @arg @ref LL_DMA_STREAM_5
02970   *         @arg @ref LL_DMA_STREAM_6
02971   *         @arg @ref LL_DMA_STREAM_7
02972   * @retval None
02973   */
02974 __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
02975 {
02976   uint32_t dma_base_addr = (uint32_t)DMAx;
02977 
02978   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
02979 }
02980 
02981 /**
02982   * @brief Enable Direct mode error interrupt.
02983   * @rmtoll CR        DMEIE         LL_DMA_EnableIT_DME
02984   * @param  DMAx DMAx Instance
02985   * @param  Stream This parameter can be one of the following values:
02986   *         @arg @ref LL_DMA_STREAM_0
02987   *         @arg @ref LL_DMA_STREAM_1
02988   *         @arg @ref LL_DMA_STREAM_2
02989   *         @arg @ref LL_DMA_STREAM_3
02990   *         @arg @ref LL_DMA_STREAM_4
02991   *         @arg @ref LL_DMA_STREAM_5
02992   *         @arg @ref LL_DMA_STREAM_6
02993   *         @arg @ref LL_DMA_STREAM_7
02994   * @retval None
02995   */
02996 __STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
02997 {
02998   uint32_t dma_base_addr = (uint32_t)DMAx;
02999 
03000   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
03001 }
03002 
03003 /**
03004   * @brief Enable FIFO error interrupt.
03005   * @rmtoll FCR        FEIE         LL_DMA_EnableIT_FE
03006   * @param  DMAx DMAx Instance
03007   * @param  Stream This parameter can be one of the following values:
03008   *         @arg @ref LL_DMA_STREAM_0
03009   *         @arg @ref LL_DMA_STREAM_1
03010   *         @arg @ref LL_DMA_STREAM_2
03011   *         @arg @ref LL_DMA_STREAM_3
03012   *         @arg @ref LL_DMA_STREAM_4
03013   *         @arg @ref LL_DMA_STREAM_5
03014   *         @arg @ref LL_DMA_STREAM_6
03015   *         @arg @ref LL_DMA_STREAM_7
03016   * @retval None
03017   */
03018 __STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
03019 {
03020   uint32_t dma_base_addr = (uint32_t)DMAx;
03021 
03022   SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
03023 }
03024 
03025 /**
03026   * @brief Disable Half transfer interrupt.
03027   * @rmtoll CR        HTIE         LL_DMA_DisableIT_HT
03028   * @param  DMAx DMAx Instance
03029   * @param  Stream This parameter can be one of the following values:
03030   *         @arg @ref LL_DMA_STREAM_0
03031   *         @arg @ref LL_DMA_STREAM_1
03032   *         @arg @ref LL_DMA_STREAM_2
03033   *         @arg @ref LL_DMA_STREAM_3
03034   *         @arg @ref LL_DMA_STREAM_4
03035   *         @arg @ref LL_DMA_STREAM_5
03036   *         @arg @ref LL_DMA_STREAM_6
03037   *         @arg @ref LL_DMA_STREAM_7
03038   * @retval None
03039   */
03040 __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
03041 {
03042   uint32_t dma_base_addr = (uint32_t)DMAx;
03043 
03044   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
03045 }
03046 
03047 /**
03048   * @brief Disable Transfer error interrupt.
03049   * @rmtoll CR        TEIE         LL_DMA_DisableIT_TE
03050   * @param  DMAx DMAx Instance
03051   * @param  Stream This parameter can be one of the following values:
03052   *         @arg @ref LL_DMA_STREAM_0
03053   *         @arg @ref LL_DMA_STREAM_1
03054   *         @arg @ref LL_DMA_STREAM_2
03055   *         @arg @ref LL_DMA_STREAM_3
03056   *         @arg @ref LL_DMA_STREAM_4
03057   *         @arg @ref LL_DMA_STREAM_5
03058   *         @arg @ref LL_DMA_STREAM_6
03059   *         @arg @ref LL_DMA_STREAM_7
03060   * @retval None
03061   */
03062 __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
03063 {
03064   uint32_t dma_base_addr = (uint32_t)DMAx;
03065 
03066   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
03067 }
03068 
03069 /**
03070   * @brief Disable Transfer complete interrupt.
03071   * @rmtoll CR        TCIE         LL_DMA_DisableIT_TC
03072   * @param  DMAx DMAx Instance
03073   * @param  Stream This parameter can be one of the following values:
03074   *         @arg @ref LL_DMA_STREAM_0
03075   *         @arg @ref LL_DMA_STREAM_1
03076   *         @arg @ref LL_DMA_STREAM_2
03077   *         @arg @ref LL_DMA_STREAM_3
03078   *         @arg @ref LL_DMA_STREAM_4
03079   *         @arg @ref LL_DMA_STREAM_5
03080   *         @arg @ref LL_DMA_STREAM_6
03081   *         @arg @ref LL_DMA_STREAM_7
03082   * @retval None
03083   */
03084 __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
03085 {
03086   uint32_t dma_base_addr = (uint32_t)DMAx;
03087 
03088   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
03089 }
03090 
03091 /**
03092   * @brief Disable Direct mode error interrupt.
03093   * @rmtoll CR        DMEIE         LL_DMA_DisableIT_DME
03094   * @param  DMAx DMAx Instance
03095   * @param  Stream This parameter can be one of the following values:
03096   *         @arg @ref LL_DMA_STREAM_0
03097   *         @arg @ref LL_DMA_STREAM_1
03098   *         @arg @ref LL_DMA_STREAM_2
03099   *         @arg @ref LL_DMA_STREAM_3
03100   *         @arg @ref LL_DMA_STREAM_4
03101   *         @arg @ref LL_DMA_STREAM_5
03102   *         @arg @ref LL_DMA_STREAM_6
03103   *         @arg @ref LL_DMA_STREAM_7
03104   * @retval None
03105   */
03106 __STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
03107 {
03108   uint32_t dma_base_addr = (uint32_t)DMAx;
03109 
03110   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
03111 }
03112 
03113 /**
03114   * @brief Disable FIFO error interrupt.
03115   * @rmtoll FCR        FEIE         LL_DMA_DisableIT_FE
03116   * @param  DMAx DMAx Instance
03117   * @param  Stream This parameter can be one of the following values:
03118   *         @arg @ref LL_DMA_STREAM_0
03119   *         @arg @ref LL_DMA_STREAM_1
03120   *         @arg @ref LL_DMA_STREAM_2
03121   *         @arg @ref LL_DMA_STREAM_3
03122   *         @arg @ref LL_DMA_STREAM_4
03123   *         @arg @ref LL_DMA_STREAM_5
03124   *         @arg @ref LL_DMA_STREAM_6
03125   *         @arg @ref LL_DMA_STREAM_7
03126   * @retval None
03127   */
03128 __STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
03129 {
03130   uint32_t dma_base_addr = (uint32_t)DMAx;
03131 
03132   CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
03133 }
03134 
03135 /**
03136   * @brief Check if Half transfer interrup is enabled.
03137   * @rmtoll CR        HTIE         LL_DMA_IsEnabledIT_HT
03138   * @param  DMAx DMAx Instance
03139   * @param  Stream This parameter can be one of the following values:
03140   *         @arg @ref LL_DMA_STREAM_0
03141   *         @arg @ref LL_DMA_STREAM_1
03142   *         @arg @ref LL_DMA_STREAM_2
03143   *         @arg @ref LL_DMA_STREAM_3
03144   *         @arg @ref LL_DMA_STREAM_4
03145   *         @arg @ref LL_DMA_STREAM_5
03146   *         @arg @ref LL_DMA_STREAM_6
03147   *         @arg @ref LL_DMA_STREAM_7
03148   * @retval State of bit (1 or 0).
03149   */
03150 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
03151 {
03152   uint32_t dma_base_addr = (uint32_t)DMAx;
03153 
03154   return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE) == DMA_SxCR_HTIE) ? 1UL : 0UL);
03155 }
03156 
03157 /**
03158   * @brief Check if Transfer error nterrup is enabled.
03159   * @rmtoll CR        TEIE         LL_DMA_IsEnabledIT_TE
03160   * @param  DMAx DMAx Instance
03161   * @param  Stream This parameter can be one of the following values:
03162   *         @arg @ref LL_DMA_STREAM_0
03163   *         @arg @ref LL_DMA_STREAM_1
03164   *         @arg @ref LL_DMA_STREAM_2
03165   *         @arg @ref LL_DMA_STREAM_3
03166   *         @arg @ref LL_DMA_STREAM_4
03167   *         @arg @ref LL_DMA_STREAM_5
03168   *         @arg @ref LL_DMA_STREAM_6
03169   *         @arg @ref LL_DMA_STREAM_7
03170   * @retval State of bit (1 or 0).
03171   */
03172 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
03173 {
03174   uint32_t dma_base_addr = (uint32_t)DMAx;
03175 
03176   return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE) == DMA_SxCR_TEIE) ? 1UL : 0UL);
03177 }
03178 
03179 /**
03180   * @brief Check if Transfer complete interrup is enabled.
03181   * @rmtoll CR        TCIE         LL_DMA_IsEnabledIT_TC
03182   * @param  DMAx DMAx Instance
03183   * @param  Stream This parameter can be one of the following values:
03184   *         @arg @ref LL_DMA_STREAM_0
03185   *         @arg @ref LL_DMA_STREAM_1
03186   *         @arg @ref LL_DMA_STREAM_2
03187   *         @arg @ref LL_DMA_STREAM_3
03188   *         @arg @ref LL_DMA_STREAM_4
03189   *         @arg @ref LL_DMA_STREAM_5
03190   *         @arg @ref LL_DMA_STREAM_6
03191   *         @arg @ref LL_DMA_STREAM_7
03192   * @retval State of bit (1 or 0).
03193   */
03194 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
03195 {
03196   uint32_t dma_base_addr = (uint32_t)DMAx;
03197 
03198   return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE) == DMA_SxCR_TCIE) ? 1UL : 0UL);
03199 }
03200 
03201 /**
03202   * @brief Check if Direct mode error interrupt is enabled.
03203   * @rmtoll CR        DMEIE         LL_DMA_IsEnabledIT_DME
03204   * @param  DMAx DMAx Instance
03205   * @param  Stream This parameter can be one of the following values:
03206   *         @arg @ref LL_DMA_STREAM_0
03207   *         @arg @ref LL_DMA_STREAM_1
03208   *         @arg @ref LL_DMA_STREAM_2
03209   *         @arg @ref LL_DMA_STREAM_3
03210   *         @arg @ref LL_DMA_STREAM_4
03211   *         @arg @ref LL_DMA_STREAM_5
03212   *         @arg @ref LL_DMA_STREAM_6
03213   *         @arg @ref LL_DMA_STREAM_7
03214   * @retval State of bit (1 or 0).
03215   */
03216 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
03217 {
03218   uint32_t dma_base_addr = (uint32_t)DMAx;
03219 
03220   return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE) == DMA_SxCR_DMEIE) ? 1UL : 0UL);
03221 }
03222 
03223 /**
03224   * @brief Check if FIFO error interrup is enabled.
03225   * @rmtoll FCR        FEIE         LL_DMA_IsEnabledIT_FE
03226   * @param  DMAx DMAx Instance
03227   * @param  Stream This parameter can be one of the following values:
03228   *         @arg @ref LL_DMA_STREAM_0
03229   *         @arg @ref LL_DMA_STREAM_1
03230   *         @arg @ref LL_DMA_STREAM_2
03231   *         @arg @ref LL_DMA_STREAM_3
03232   *         @arg @ref LL_DMA_STREAM_4
03233   *         @arg @ref LL_DMA_STREAM_5
03234   *         @arg @ref LL_DMA_STREAM_6
03235   *         @arg @ref LL_DMA_STREAM_7
03236   * @retval State of bit (1 or 0).
03237   */
03238 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
03239 {
03240   uint32_t dma_base_addr = (uint32_t)DMAx;
03241 
03242   return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE) == DMA_SxFCR_FEIE) ? 1UL : 0UL);
03243 }
03244 
03245 /**
03246   * @}
03247   */
03248 
03249 #if defined(USE_FULL_LL_DRIVER)
03250 /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
03251   * @{
03252   */
03253 
03254 uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct);
03255 uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream);
03256 void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
03257 
03258 /**
03259   * @}
03260   */
03261 #endif /* USE_FULL_LL_DRIVER */
03262 
03263 /**
03264   * @}
03265   */
03266 
03267 /**
03268   * @}
03269   */
03270 
03271 #endif /* DMA1 || DMA2 */
03272 
03273 /**
03274   * @}
03275   */
03276 
03277 #ifdef __cplusplus
03278 }
03279 #endif
03280 
03281 #endif /* __STM32H7xx_LL_DMA_H */
03282