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