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