STM32F103xB HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32f1xx_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) 2016 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 __STM32F1xx_LL_DMA_H 00022 #define __STM32F1xx_LL_DMA_H 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 /* Includes ------------------------------------------------------------------*/ 00029 #include "stm32f1xx.h" 00030 00031 /** @addtogroup STM32F1xx_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 channel register offset versus channel index LL_DMA_CHANNEL_x */ 00047 static const uint8_t CHANNEL_OFFSET_TAB[] = 00048 { 00049 (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE), 00050 (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE), 00051 (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE), 00052 (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE), 00053 (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE), 00054 (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE), 00055 (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE) 00056 }; 00057 /** 00058 * @} 00059 */ 00060 /* Private constants ---------------------------------------------------------*/ 00061 /* Private macros ------------------------------------------------------------*/ 00062 #if defined(USE_FULL_LL_DRIVER) 00063 /** @defgroup DMA_LL_Private_Macros DMA Private Macros 00064 * @{ 00065 */ 00066 /** 00067 * @} 00068 */ 00069 #endif /*USE_FULL_LL_DRIVER*/ 00070 00071 /* Exported types ------------------------------------------------------------*/ 00072 #if defined(USE_FULL_LL_DRIVER) 00073 /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure 00074 * @{ 00075 */ 00076 typedef struct 00077 { 00078 uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer 00079 or as Source base address in case of memory to memory transfer direction. 00080 00081 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ 00082 00083 uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer 00084 or as Destination base address in case of memory to memory transfer direction. 00085 00086 This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */ 00087 00088 uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral, 00089 from memory to memory or from peripheral to memory. 00090 This parameter can be a value of @ref DMA_LL_EC_DIRECTION 00091 00092 This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */ 00093 00094 uint32_t Mode; /*!< Specifies the normal or circular operation mode. 00095 This parameter can be a value of @ref DMA_LL_EC_MODE 00096 @note: The circular buffer mode cannot be used if the memory to memory 00097 data transfer direction is configured on the selected Channel 00098 00099 This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */ 00100 00101 uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction 00102 is incremented or not. 00103 This parameter can be a value of @ref DMA_LL_EC_PERIPH 00104 00105 This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */ 00106 00107 uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction 00108 is incremented or not. 00109 This parameter can be a value of @ref DMA_LL_EC_MEMORY 00110 00111 This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */ 00112 00113 uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word) 00114 in case of memory to memory transfer direction. 00115 This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN 00116 00117 This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */ 00118 00119 uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word) 00120 in case of memory to memory transfer direction. 00121 This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN 00122 00123 This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */ 00124 00125 uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit. 00126 The data unit is equal to the source buffer configuration set in PeripheralSize 00127 or MemorySize parameters depending in the transfer direction. 00128 This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF 00129 00130 This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */ 00131 00132 uint32_t Priority; /*!< Specifies the channel priority level. 00133 This parameter can be a value of @ref DMA_LL_EC_PRIORITY 00134 00135 This feature can be modified afterwards using unitary function @ref LL_DMA_SetChannelPriorityLevel(). */ 00136 00137 } LL_DMA_InitTypeDef; 00138 /** 00139 * @} 00140 */ 00141 #endif /*USE_FULL_LL_DRIVER*/ 00142 00143 /* Exported constants --------------------------------------------------------*/ 00144 /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants 00145 * @{ 00146 */ 00147 /** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines 00148 * @brief Flags defines which can be used with LL_DMA_WriteReg function 00149 * @{ 00150 */ 00151 #define LL_DMA_IFCR_CGIF1 DMA_IFCR_CGIF1 /*!< Channel 1 global flag */ 00152 #define LL_DMA_IFCR_CTCIF1 DMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */ 00153 #define LL_DMA_IFCR_CHTIF1 DMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */ 00154 #define LL_DMA_IFCR_CTEIF1 DMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */ 00155 #define LL_DMA_IFCR_CGIF2 DMA_IFCR_CGIF2 /*!< Channel 2 global flag */ 00156 #define LL_DMA_IFCR_CTCIF2 DMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */ 00157 #define LL_DMA_IFCR_CHTIF2 DMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */ 00158 #define LL_DMA_IFCR_CTEIF2 DMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */ 00159 #define LL_DMA_IFCR_CGIF3 DMA_IFCR_CGIF3 /*!< Channel 3 global flag */ 00160 #define LL_DMA_IFCR_CTCIF3 DMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */ 00161 #define LL_DMA_IFCR_CHTIF3 DMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */ 00162 #define LL_DMA_IFCR_CTEIF3 DMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */ 00163 #define LL_DMA_IFCR_CGIF4 DMA_IFCR_CGIF4 /*!< Channel 4 global flag */ 00164 #define LL_DMA_IFCR_CTCIF4 DMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */ 00165 #define LL_DMA_IFCR_CHTIF4 DMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */ 00166 #define LL_DMA_IFCR_CTEIF4 DMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */ 00167 #define LL_DMA_IFCR_CGIF5 DMA_IFCR_CGIF5 /*!< Channel 5 global flag */ 00168 #define LL_DMA_IFCR_CTCIF5 DMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */ 00169 #define LL_DMA_IFCR_CHTIF5 DMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */ 00170 #define LL_DMA_IFCR_CTEIF5 DMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */ 00171 #define LL_DMA_IFCR_CGIF6 DMA_IFCR_CGIF6 /*!< Channel 6 global flag */ 00172 #define LL_DMA_IFCR_CTCIF6 DMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */ 00173 #define LL_DMA_IFCR_CHTIF6 DMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */ 00174 #define LL_DMA_IFCR_CTEIF6 DMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */ 00175 #define LL_DMA_IFCR_CGIF7 DMA_IFCR_CGIF7 /*!< Channel 7 global flag */ 00176 #define LL_DMA_IFCR_CTCIF7 DMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */ 00177 #define LL_DMA_IFCR_CHTIF7 DMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */ 00178 #define LL_DMA_IFCR_CTEIF7 DMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */ 00179 /** 00180 * @} 00181 */ 00182 00183 /** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines 00184 * @brief Flags defines which can be used with LL_DMA_ReadReg function 00185 * @{ 00186 */ 00187 #define LL_DMA_ISR_GIF1 DMA_ISR_GIF1 /*!< Channel 1 global flag */ 00188 #define LL_DMA_ISR_TCIF1 DMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */ 00189 #define LL_DMA_ISR_HTIF1 DMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */ 00190 #define LL_DMA_ISR_TEIF1 DMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */ 00191 #define LL_DMA_ISR_GIF2 DMA_ISR_GIF2 /*!< Channel 2 global flag */ 00192 #define LL_DMA_ISR_TCIF2 DMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */ 00193 #define LL_DMA_ISR_HTIF2 DMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */ 00194 #define LL_DMA_ISR_TEIF2 DMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */ 00195 #define LL_DMA_ISR_GIF3 DMA_ISR_GIF3 /*!< Channel 3 global flag */ 00196 #define LL_DMA_ISR_TCIF3 DMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */ 00197 #define LL_DMA_ISR_HTIF3 DMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */ 00198 #define LL_DMA_ISR_TEIF3 DMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */ 00199 #define LL_DMA_ISR_GIF4 DMA_ISR_GIF4 /*!< Channel 4 global flag */ 00200 #define LL_DMA_ISR_TCIF4 DMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */ 00201 #define LL_DMA_ISR_HTIF4 DMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */ 00202 #define LL_DMA_ISR_TEIF4 DMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */ 00203 #define LL_DMA_ISR_GIF5 DMA_ISR_GIF5 /*!< Channel 5 global flag */ 00204 #define LL_DMA_ISR_TCIF5 DMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */ 00205 #define LL_DMA_ISR_HTIF5 DMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */ 00206 #define LL_DMA_ISR_TEIF5 DMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */ 00207 #define LL_DMA_ISR_GIF6 DMA_ISR_GIF6 /*!< Channel 6 global flag */ 00208 #define LL_DMA_ISR_TCIF6 DMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */ 00209 #define LL_DMA_ISR_HTIF6 DMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */ 00210 #define LL_DMA_ISR_TEIF6 DMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */ 00211 #define LL_DMA_ISR_GIF7 DMA_ISR_GIF7 /*!< Channel 7 global flag */ 00212 #define LL_DMA_ISR_TCIF7 DMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */ 00213 #define LL_DMA_ISR_HTIF7 DMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */ 00214 #define LL_DMA_ISR_TEIF7 DMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */ 00215 /** 00216 * @} 00217 */ 00218 00219 /** @defgroup DMA_LL_EC_IT IT Defines 00220 * @brief IT defines which can be used with LL_DMA_ReadReg and LL_DMA_WriteReg functions 00221 * @{ 00222 */ 00223 #define LL_DMA_CCR_TCIE DMA_CCR_TCIE /*!< Transfer complete interrupt */ 00224 #define LL_DMA_CCR_HTIE DMA_CCR_HTIE /*!< Half Transfer interrupt */ 00225 #define LL_DMA_CCR_TEIE DMA_CCR_TEIE /*!< Transfer error interrupt */ 00226 /** 00227 * @} 00228 */ 00229 00230 /** @defgroup DMA_LL_EC_CHANNEL CHANNEL 00231 * @{ 00232 */ 00233 #define LL_DMA_CHANNEL_1 0x00000001U /*!< DMA Channel 1 */ 00234 #define LL_DMA_CHANNEL_2 0x00000002U /*!< DMA Channel 2 */ 00235 #define LL_DMA_CHANNEL_3 0x00000003U /*!< DMA Channel 3 */ 00236 #define LL_DMA_CHANNEL_4 0x00000004U /*!< DMA Channel 4 */ 00237 #define LL_DMA_CHANNEL_5 0x00000005U /*!< DMA Channel 5 */ 00238 #define LL_DMA_CHANNEL_6 0x00000006U /*!< DMA Channel 6 */ 00239 #define LL_DMA_CHANNEL_7 0x00000007U /*!< DMA Channel 7 */ 00240 #if defined(USE_FULL_LL_DRIVER) 00241 #define LL_DMA_CHANNEL_ALL 0xFFFF0000U /*!< DMA Channel all (used only for function @ref LL_DMA_DeInit(). */ 00242 #endif /*USE_FULL_LL_DRIVER*/ 00243 /** 00244 * @} 00245 */ 00246 00247 /** @defgroup DMA_LL_EC_DIRECTION Transfer Direction 00248 * @{ 00249 */ 00250 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */ 00251 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR /*!< Memory to peripheral direction */ 00252 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM /*!< Memory to memory direction */ 00253 /** 00254 * @} 00255 */ 00256 00257 /** @defgroup DMA_LL_EC_MODE Transfer mode 00258 * @{ 00259 */ 00260 #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */ 00261 #define LL_DMA_MODE_CIRCULAR DMA_CCR_CIRC /*!< Circular Mode */ 00262 /** 00263 * @} 00264 */ 00265 00266 /** @defgroup DMA_LL_EC_PERIPH Peripheral increment mode 00267 * @{ 00268 */ 00269 #define LL_DMA_PERIPH_INCREMENT DMA_CCR_PINC /*!< Peripheral increment mode Enable */ 00270 #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */ 00271 /** 00272 * @} 00273 */ 00274 00275 /** @defgroup DMA_LL_EC_MEMORY Memory increment mode 00276 * @{ 00277 */ 00278 #define LL_DMA_MEMORY_INCREMENT DMA_CCR_MINC /*!< Memory increment mode Enable */ 00279 #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */ 00280 /** 00281 * @} 00282 */ 00283 00284 /** @defgroup DMA_LL_EC_PDATAALIGN Peripheral data alignment 00285 * @{ 00286 */ 00287 #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */ 00288 #define LL_DMA_PDATAALIGN_HALFWORD DMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */ 00289 #define LL_DMA_PDATAALIGN_WORD DMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */ 00290 /** 00291 * @} 00292 */ 00293 00294 /** @defgroup DMA_LL_EC_MDATAALIGN Memory data alignment 00295 * @{ 00296 */ 00297 #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */ 00298 #define LL_DMA_MDATAALIGN_HALFWORD DMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */ 00299 #define LL_DMA_MDATAALIGN_WORD DMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */ 00300 /** 00301 * @} 00302 */ 00303 00304 /** @defgroup DMA_LL_EC_PRIORITY Transfer Priority level 00305 * @{ 00306 */ 00307 #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */ 00308 #define LL_DMA_PRIORITY_MEDIUM DMA_CCR_PL_0 /*!< Priority level : Medium */ 00309 #define LL_DMA_PRIORITY_HIGH DMA_CCR_PL_1 /*!< Priority level : High */ 00310 #define LL_DMA_PRIORITY_VERYHIGH DMA_CCR_PL /*!< Priority level : Very_High */ 00311 /** 00312 * @} 00313 */ 00314 00315 /** 00316 * @} 00317 */ 00318 00319 /* Exported macro ------------------------------------------------------------*/ 00320 /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros 00321 * @{ 00322 */ 00323 00324 /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros 00325 * @{ 00326 */ 00327 /** 00328 * @brief Write a value in DMA register 00329 * @param __INSTANCE__ DMA Instance 00330 * @param __REG__ Register to be written 00331 * @param __VALUE__ Value to be written in the register 00332 * @retval None 00333 */ 00334 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__)) 00335 00336 /** 00337 * @brief Read a value in DMA register 00338 * @param __INSTANCE__ DMA Instance 00339 * @param __REG__ Register to be read 00340 * @retval Register value 00341 */ 00342 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__) 00343 /** 00344 * @} 00345 */ 00346 00347 /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely 00348 * @{ 00349 */ 00350 00351 /** 00352 * @brief Convert DMAx_Channely into DMAx 00353 * @param __CHANNEL_INSTANCE__ DMAx_Channely 00354 * @retval DMAx 00355 */ 00356 #if defined(DMA2) 00357 #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \ 00358 (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ? DMA2 : DMA1) 00359 #else 00360 #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (DMA1) 00361 #endif 00362 00363 /** 00364 * @brief Convert DMAx_Channely into LL_DMA_CHANNEL_y 00365 * @param __CHANNEL_INSTANCE__ DMAx_Channely 00366 * @retval LL_DMA_CHANNEL_y 00367 */ 00368 #if defined (DMA2) 00369 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ 00370 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ 00371 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \ 00372 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ 00373 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \ 00374 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ 00375 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \ 00376 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ 00377 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \ 00378 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ 00379 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \ 00380 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ 00381 LL_DMA_CHANNEL_7) 00382 #else 00383 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \ 00384 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \ 00385 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \ 00386 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \ 00387 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \ 00388 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \ 00389 ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \ 00390 LL_DMA_CHANNEL_7) 00391 #endif 00392 00393 /** 00394 * @brief Convert DMA Instance DMAx and LL_DMA_CHANNEL_y into DMAx_Channely 00395 * @param __DMA_INSTANCE__ DMAx 00396 * @param __CHANNEL__ LL_DMA_CHANNEL_y 00397 * @retval DMAx_Channely 00398 */ 00399 #if defined (DMA2) 00400 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ 00401 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ 00402 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA2_Channel1 : \ 00403 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ 00404 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA2_Channel2 : \ 00405 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ 00406 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA2_Channel3 : \ 00407 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ 00408 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA2_Channel4 : \ 00409 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ 00410 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA2_Channel5 : \ 00411 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ 00412 DMA1_Channel7) 00413 #else 00414 #define __LL_DMA_GET_CHANNEL_INSTANCE(__DMA_INSTANCE__, __CHANNEL__) \ 00415 ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_1))) ? DMA1_Channel1 : \ 00416 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_2))) ? DMA1_Channel2 : \ 00417 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_3))) ? DMA1_Channel3 : \ 00418 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_4))) ? DMA1_Channel4 : \ 00419 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_5))) ? DMA1_Channel5 : \ 00420 (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_DMA_CHANNEL_6))) ? DMA1_Channel6 : \ 00421 DMA1_Channel7) 00422 #endif 00423 00424 /** 00425 * @} 00426 */ 00427 00428 /** 00429 * @} 00430 */ 00431 00432 /* Exported functions --------------------------------------------------------*/ 00433 /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions 00434 * @{ 00435 */ 00436 00437 /** @defgroup DMA_LL_EF_Configuration Configuration 00438 * @{ 00439 */ 00440 /** 00441 * @brief Enable DMA channel. 00442 * @rmtoll CCR EN LL_DMA_EnableChannel 00443 * @param DMAx DMAx Instance 00444 * @param Channel This parameter can be one of the following values: 00445 * @arg @ref LL_DMA_CHANNEL_1 00446 * @arg @ref LL_DMA_CHANNEL_2 00447 * @arg @ref LL_DMA_CHANNEL_3 00448 * @arg @ref LL_DMA_CHANNEL_4 00449 * @arg @ref LL_DMA_CHANNEL_5 00450 * @arg @ref LL_DMA_CHANNEL_6 00451 * @arg @ref LL_DMA_CHANNEL_7 00452 * @retval None 00453 */ 00454 __STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel) 00455 { 00456 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); 00457 } 00458 00459 /** 00460 * @brief Disable DMA channel. 00461 * @rmtoll CCR EN LL_DMA_DisableChannel 00462 * @param DMAx DMAx Instance 00463 * @param Channel This parameter can be one of the following values: 00464 * @arg @ref LL_DMA_CHANNEL_1 00465 * @arg @ref LL_DMA_CHANNEL_2 00466 * @arg @ref LL_DMA_CHANNEL_3 00467 * @arg @ref LL_DMA_CHANNEL_4 00468 * @arg @ref LL_DMA_CHANNEL_5 00469 * @arg @ref LL_DMA_CHANNEL_6 00470 * @arg @ref LL_DMA_CHANNEL_7 00471 * @retval None 00472 */ 00473 __STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel) 00474 { 00475 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_EN); 00476 } 00477 00478 /** 00479 * @brief Check if DMA channel is enabled or disabled. 00480 * @rmtoll CCR EN LL_DMA_IsEnabledChannel 00481 * @param DMAx DMAx Instance 00482 * @param Channel This parameter can be one of the following values: 00483 * @arg @ref LL_DMA_CHANNEL_1 00484 * @arg @ref LL_DMA_CHANNEL_2 00485 * @arg @ref LL_DMA_CHANNEL_3 00486 * @arg @ref LL_DMA_CHANNEL_4 00487 * @arg @ref LL_DMA_CHANNEL_5 00488 * @arg @ref LL_DMA_CHANNEL_6 00489 * @arg @ref LL_DMA_CHANNEL_7 00490 * @retval State of bit (1 or 0). 00491 */ 00492 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel) 00493 { 00494 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00495 DMA_CCR_EN) == (DMA_CCR_EN)); 00496 } 00497 00498 /** 00499 * @brief Configure all parameters link to DMA transfer. 00500 * @rmtoll CCR DIR LL_DMA_ConfigTransfer\n 00501 * CCR MEM2MEM LL_DMA_ConfigTransfer\n 00502 * CCR CIRC LL_DMA_ConfigTransfer\n 00503 * CCR PINC LL_DMA_ConfigTransfer\n 00504 * CCR MINC LL_DMA_ConfigTransfer\n 00505 * CCR PSIZE LL_DMA_ConfigTransfer\n 00506 * CCR MSIZE LL_DMA_ConfigTransfer\n 00507 * CCR PL LL_DMA_ConfigTransfer 00508 * @param DMAx DMAx Instance 00509 * @param Channel This parameter can be one of the following values: 00510 * @arg @ref LL_DMA_CHANNEL_1 00511 * @arg @ref LL_DMA_CHANNEL_2 00512 * @arg @ref LL_DMA_CHANNEL_3 00513 * @arg @ref LL_DMA_CHANNEL_4 00514 * @arg @ref LL_DMA_CHANNEL_5 00515 * @arg @ref LL_DMA_CHANNEL_6 00516 * @arg @ref LL_DMA_CHANNEL_7 00517 * @param Configuration This parameter must be a combination of all the following values: 00518 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY 00519 * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR 00520 * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT 00521 * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT 00522 * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD 00523 * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD 00524 * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH 00525 * @retval None 00526 */ 00527 __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Configuration) 00528 { 00529 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00530 DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, 00531 Configuration); 00532 } 00533 00534 /** 00535 * @brief Set Data transfer direction (read from peripheral or from memory). 00536 * @rmtoll CCR DIR LL_DMA_SetDataTransferDirection\n 00537 * CCR MEM2MEM LL_DMA_SetDataTransferDirection 00538 * @param DMAx DMAx Instance 00539 * @param Channel This parameter can be one of the following values: 00540 * @arg @ref LL_DMA_CHANNEL_1 00541 * @arg @ref LL_DMA_CHANNEL_2 00542 * @arg @ref LL_DMA_CHANNEL_3 00543 * @arg @ref LL_DMA_CHANNEL_4 00544 * @arg @ref LL_DMA_CHANNEL_5 00545 * @arg @ref LL_DMA_CHANNEL_6 00546 * @arg @ref LL_DMA_CHANNEL_7 00547 * @param Direction This parameter can be one of the following values: 00548 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY 00549 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH 00550 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY 00551 * @retval None 00552 */ 00553 __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Direction) 00554 { 00555 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00556 DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction); 00557 } 00558 00559 /** 00560 * @brief Get Data transfer direction (read from peripheral or from memory). 00561 * @rmtoll CCR DIR LL_DMA_GetDataTransferDirection\n 00562 * CCR MEM2MEM LL_DMA_GetDataTransferDirection 00563 * @param DMAx DMAx Instance 00564 * @param Channel This parameter can be one of the following values: 00565 * @arg @ref LL_DMA_CHANNEL_1 00566 * @arg @ref LL_DMA_CHANNEL_2 00567 * @arg @ref LL_DMA_CHANNEL_3 00568 * @arg @ref LL_DMA_CHANNEL_4 00569 * @arg @ref LL_DMA_CHANNEL_5 00570 * @arg @ref LL_DMA_CHANNEL_6 00571 * @arg @ref LL_DMA_CHANNEL_7 00572 * @retval Returned value can be one of the following values: 00573 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY 00574 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH 00575 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY 00576 */ 00577 __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel) 00578 { 00579 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00580 DMA_CCR_DIR | DMA_CCR_MEM2MEM)); 00581 } 00582 00583 /** 00584 * @brief Set DMA mode circular or normal. 00585 * @note The circular buffer mode cannot be used if the memory-to-memory 00586 * data transfer is configured on the selected Channel. 00587 * @rmtoll CCR CIRC LL_DMA_SetMode 00588 * @param DMAx DMAx Instance 00589 * @param Channel This parameter can be one of the following values: 00590 * @arg @ref LL_DMA_CHANNEL_1 00591 * @arg @ref LL_DMA_CHANNEL_2 00592 * @arg @ref LL_DMA_CHANNEL_3 00593 * @arg @ref LL_DMA_CHANNEL_4 00594 * @arg @ref LL_DMA_CHANNEL_5 00595 * @arg @ref LL_DMA_CHANNEL_6 00596 * @arg @ref LL_DMA_CHANNEL_7 00597 * @param Mode This parameter can be one of the following values: 00598 * @arg @ref LL_DMA_MODE_NORMAL 00599 * @arg @ref LL_DMA_MODE_CIRCULAR 00600 * @retval None 00601 */ 00602 __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode) 00603 { 00604 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_CIRC, 00605 Mode); 00606 } 00607 00608 /** 00609 * @brief Get DMA mode circular or normal. 00610 * @rmtoll CCR CIRC LL_DMA_GetMode 00611 * @param DMAx DMAx Instance 00612 * @param Channel This parameter can be one of the following values: 00613 * @arg @ref LL_DMA_CHANNEL_1 00614 * @arg @ref LL_DMA_CHANNEL_2 00615 * @arg @ref LL_DMA_CHANNEL_3 00616 * @arg @ref LL_DMA_CHANNEL_4 00617 * @arg @ref LL_DMA_CHANNEL_5 00618 * @arg @ref LL_DMA_CHANNEL_6 00619 * @arg @ref LL_DMA_CHANNEL_7 00620 * @retval Returned value can be one of the following values: 00621 * @arg @ref LL_DMA_MODE_NORMAL 00622 * @arg @ref LL_DMA_MODE_CIRCULAR 00623 */ 00624 __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel) 00625 { 00626 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00627 DMA_CCR_CIRC)); 00628 } 00629 00630 /** 00631 * @brief Set Peripheral increment mode. 00632 * @rmtoll CCR PINC LL_DMA_SetPeriphIncMode 00633 * @param DMAx DMAx Instance 00634 * @param Channel This parameter can be one of the following values: 00635 * @arg @ref LL_DMA_CHANNEL_1 00636 * @arg @ref LL_DMA_CHANNEL_2 00637 * @arg @ref LL_DMA_CHANNEL_3 00638 * @arg @ref LL_DMA_CHANNEL_4 00639 * @arg @ref LL_DMA_CHANNEL_5 00640 * @arg @ref LL_DMA_CHANNEL_6 00641 * @arg @ref LL_DMA_CHANNEL_7 00642 * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values: 00643 * @arg @ref LL_DMA_PERIPH_INCREMENT 00644 * @arg @ref LL_DMA_PERIPH_NOINCREMENT 00645 * @retval None 00646 */ 00647 __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode) 00648 { 00649 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PINC, 00650 PeriphOrM2MSrcIncMode); 00651 } 00652 00653 /** 00654 * @brief Get Peripheral increment mode. 00655 * @rmtoll CCR PINC LL_DMA_GetPeriphIncMode 00656 * @param DMAx DMAx Instance 00657 * @param Channel This parameter can be one of the following values: 00658 * @arg @ref LL_DMA_CHANNEL_1 00659 * @arg @ref LL_DMA_CHANNEL_2 00660 * @arg @ref LL_DMA_CHANNEL_3 00661 * @arg @ref LL_DMA_CHANNEL_4 00662 * @arg @ref LL_DMA_CHANNEL_5 00663 * @arg @ref LL_DMA_CHANNEL_6 00664 * @arg @ref LL_DMA_CHANNEL_7 00665 * @retval Returned value can be one of the following values: 00666 * @arg @ref LL_DMA_PERIPH_INCREMENT 00667 * @arg @ref LL_DMA_PERIPH_NOINCREMENT 00668 */ 00669 __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel) 00670 { 00671 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00672 DMA_CCR_PINC)); 00673 } 00674 00675 /** 00676 * @brief Set Memory increment mode. 00677 * @rmtoll CCR MINC LL_DMA_SetMemoryIncMode 00678 * @param DMAx DMAx Instance 00679 * @param Channel This parameter can be one of the following values: 00680 * @arg @ref LL_DMA_CHANNEL_1 00681 * @arg @ref LL_DMA_CHANNEL_2 00682 * @arg @ref LL_DMA_CHANNEL_3 00683 * @arg @ref LL_DMA_CHANNEL_4 00684 * @arg @ref LL_DMA_CHANNEL_5 00685 * @arg @ref LL_DMA_CHANNEL_6 00686 * @arg @ref LL_DMA_CHANNEL_7 00687 * @param MemoryOrM2MDstIncMode This parameter can be one of the following values: 00688 * @arg @ref LL_DMA_MEMORY_INCREMENT 00689 * @arg @ref LL_DMA_MEMORY_NOINCREMENT 00690 * @retval None 00691 */ 00692 __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode) 00693 { 00694 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MINC, 00695 MemoryOrM2MDstIncMode); 00696 } 00697 00698 /** 00699 * @brief Get Memory increment mode. 00700 * @rmtoll CCR MINC LL_DMA_GetMemoryIncMode 00701 * @param DMAx DMAx Instance 00702 * @param Channel This parameter can be one of the following values: 00703 * @arg @ref LL_DMA_CHANNEL_1 00704 * @arg @ref LL_DMA_CHANNEL_2 00705 * @arg @ref LL_DMA_CHANNEL_3 00706 * @arg @ref LL_DMA_CHANNEL_4 00707 * @arg @ref LL_DMA_CHANNEL_5 00708 * @arg @ref LL_DMA_CHANNEL_6 00709 * @arg @ref LL_DMA_CHANNEL_7 00710 * @retval Returned value can be one of the following values: 00711 * @arg @ref LL_DMA_MEMORY_INCREMENT 00712 * @arg @ref LL_DMA_MEMORY_NOINCREMENT 00713 */ 00714 __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel) 00715 { 00716 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00717 DMA_CCR_MINC)); 00718 } 00719 00720 /** 00721 * @brief Set Peripheral size. 00722 * @rmtoll CCR PSIZE LL_DMA_SetPeriphSize 00723 * @param DMAx DMAx Instance 00724 * @param Channel This parameter can be one of the following values: 00725 * @arg @ref LL_DMA_CHANNEL_1 00726 * @arg @ref LL_DMA_CHANNEL_2 00727 * @arg @ref LL_DMA_CHANNEL_3 00728 * @arg @ref LL_DMA_CHANNEL_4 00729 * @arg @ref LL_DMA_CHANNEL_5 00730 * @arg @ref LL_DMA_CHANNEL_6 00731 * @arg @ref LL_DMA_CHANNEL_7 00732 * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values: 00733 * @arg @ref LL_DMA_PDATAALIGN_BYTE 00734 * @arg @ref LL_DMA_PDATAALIGN_HALFWORD 00735 * @arg @ref LL_DMA_PDATAALIGN_WORD 00736 * @retval None 00737 */ 00738 __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize) 00739 { 00740 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PSIZE, 00741 PeriphOrM2MSrcDataSize); 00742 } 00743 00744 /** 00745 * @brief Get Peripheral size. 00746 * @rmtoll CCR PSIZE LL_DMA_GetPeriphSize 00747 * @param DMAx DMAx Instance 00748 * @param Channel This parameter can be one of the following values: 00749 * @arg @ref LL_DMA_CHANNEL_1 00750 * @arg @ref LL_DMA_CHANNEL_2 00751 * @arg @ref LL_DMA_CHANNEL_3 00752 * @arg @ref LL_DMA_CHANNEL_4 00753 * @arg @ref LL_DMA_CHANNEL_5 00754 * @arg @ref LL_DMA_CHANNEL_6 00755 * @arg @ref LL_DMA_CHANNEL_7 00756 * @retval Returned value can be one of the following values: 00757 * @arg @ref LL_DMA_PDATAALIGN_BYTE 00758 * @arg @ref LL_DMA_PDATAALIGN_HALFWORD 00759 * @arg @ref LL_DMA_PDATAALIGN_WORD 00760 */ 00761 __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel) 00762 { 00763 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00764 DMA_CCR_PSIZE)); 00765 } 00766 00767 /** 00768 * @brief Set Memory size. 00769 * @rmtoll CCR MSIZE LL_DMA_SetMemorySize 00770 * @param DMAx DMAx Instance 00771 * @param Channel This parameter can be one of the following values: 00772 * @arg @ref LL_DMA_CHANNEL_1 00773 * @arg @ref LL_DMA_CHANNEL_2 00774 * @arg @ref LL_DMA_CHANNEL_3 00775 * @arg @ref LL_DMA_CHANNEL_4 00776 * @arg @ref LL_DMA_CHANNEL_5 00777 * @arg @ref LL_DMA_CHANNEL_6 00778 * @arg @ref LL_DMA_CHANNEL_7 00779 * @param MemoryOrM2MDstDataSize This parameter can be one of the following values: 00780 * @arg @ref LL_DMA_MDATAALIGN_BYTE 00781 * @arg @ref LL_DMA_MDATAALIGN_HALFWORD 00782 * @arg @ref LL_DMA_MDATAALIGN_WORD 00783 * @retval None 00784 */ 00785 __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize) 00786 { 00787 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_MSIZE, 00788 MemoryOrM2MDstDataSize); 00789 } 00790 00791 /** 00792 * @brief Get Memory size. 00793 * @rmtoll CCR MSIZE LL_DMA_GetMemorySize 00794 * @param DMAx DMAx Instance 00795 * @param Channel This parameter can be one of the following values: 00796 * @arg @ref LL_DMA_CHANNEL_1 00797 * @arg @ref LL_DMA_CHANNEL_2 00798 * @arg @ref LL_DMA_CHANNEL_3 00799 * @arg @ref LL_DMA_CHANNEL_4 00800 * @arg @ref LL_DMA_CHANNEL_5 00801 * @arg @ref LL_DMA_CHANNEL_6 00802 * @arg @ref LL_DMA_CHANNEL_7 00803 * @retval Returned value can be one of the following values: 00804 * @arg @ref LL_DMA_MDATAALIGN_BYTE 00805 * @arg @ref LL_DMA_MDATAALIGN_HALFWORD 00806 * @arg @ref LL_DMA_MDATAALIGN_WORD 00807 */ 00808 __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel) 00809 { 00810 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00811 DMA_CCR_MSIZE)); 00812 } 00813 00814 /** 00815 * @brief Set Channel priority level. 00816 * @rmtoll CCR PL LL_DMA_SetChannelPriorityLevel 00817 * @param DMAx DMAx Instance 00818 * @param Channel This parameter can be one of the following values: 00819 * @arg @ref LL_DMA_CHANNEL_1 00820 * @arg @ref LL_DMA_CHANNEL_2 00821 * @arg @ref LL_DMA_CHANNEL_3 00822 * @arg @ref LL_DMA_CHANNEL_4 00823 * @arg @ref LL_DMA_CHANNEL_5 00824 * @arg @ref LL_DMA_CHANNEL_6 00825 * @arg @ref LL_DMA_CHANNEL_7 00826 * @param Priority This parameter can be one of the following values: 00827 * @arg @ref LL_DMA_PRIORITY_LOW 00828 * @arg @ref LL_DMA_PRIORITY_MEDIUM 00829 * @arg @ref LL_DMA_PRIORITY_HIGH 00830 * @arg @ref LL_DMA_PRIORITY_VERYHIGH 00831 * @retval None 00832 */ 00833 __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Priority) 00834 { 00835 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_PL, 00836 Priority); 00837 } 00838 00839 /** 00840 * @brief Get Channel priority level. 00841 * @rmtoll CCR PL LL_DMA_GetChannelPriorityLevel 00842 * @param DMAx DMAx Instance 00843 * @param Channel This parameter can be one of the following values: 00844 * @arg @ref LL_DMA_CHANNEL_1 00845 * @arg @ref LL_DMA_CHANNEL_2 00846 * @arg @ref LL_DMA_CHANNEL_3 00847 * @arg @ref LL_DMA_CHANNEL_4 00848 * @arg @ref LL_DMA_CHANNEL_5 00849 * @arg @ref LL_DMA_CHANNEL_6 00850 * @arg @ref LL_DMA_CHANNEL_7 00851 * @retval Returned value can be one of the following values: 00852 * @arg @ref LL_DMA_PRIORITY_LOW 00853 * @arg @ref LL_DMA_PRIORITY_MEDIUM 00854 * @arg @ref LL_DMA_PRIORITY_HIGH 00855 * @arg @ref LL_DMA_PRIORITY_VERYHIGH 00856 */ 00857 __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel) 00858 { 00859 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 00860 DMA_CCR_PL)); 00861 } 00862 00863 /** 00864 * @brief Set Number of data to transfer. 00865 * @note This action has no effect if 00866 * channel is enabled. 00867 * @rmtoll CNDTR NDT LL_DMA_SetDataLength 00868 * @param DMAx DMAx Instance 00869 * @param Channel This parameter can be one of the following values: 00870 * @arg @ref LL_DMA_CHANNEL_1 00871 * @arg @ref LL_DMA_CHANNEL_2 00872 * @arg @ref LL_DMA_CHANNEL_3 00873 * @arg @ref LL_DMA_CHANNEL_4 00874 * @arg @ref LL_DMA_CHANNEL_5 00875 * @arg @ref LL_DMA_CHANNEL_6 00876 * @arg @ref LL_DMA_CHANNEL_7 00877 * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF 00878 * @retval None 00879 */ 00880 __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData) 00881 { 00882 MODIFY_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, 00883 DMA_CNDTR_NDT, NbData); 00884 } 00885 00886 /** 00887 * @brief Get Number of data to transfer. 00888 * @note Once the channel is enabled, the return value indicate the 00889 * remaining bytes to be transmitted. 00890 * @rmtoll CNDTR NDT LL_DMA_GetDataLength 00891 * @param DMAx DMAx Instance 00892 * @param Channel This parameter can be one of the following values: 00893 * @arg @ref LL_DMA_CHANNEL_1 00894 * @arg @ref LL_DMA_CHANNEL_2 00895 * @arg @ref LL_DMA_CHANNEL_3 00896 * @arg @ref LL_DMA_CHANNEL_4 00897 * @arg @ref LL_DMA_CHANNEL_5 00898 * @arg @ref LL_DMA_CHANNEL_6 00899 * @arg @ref LL_DMA_CHANNEL_7 00900 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 00901 */ 00902 __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel) 00903 { 00904 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CNDTR, 00905 DMA_CNDTR_NDT)); 00906 } 00907 00908 /** 00909 * @brief Configure the Source and Destination addresses. 00910 * @note This API must not be called when the DMA channel is enabled. 00911 * @note Each IP using DMA provides an API to get directly the register adress (LL_PPP_DMA_GetRegAddr). 00912 * @rmtoll CPAR PA LL_DMA_ConfigAddresses\n 00913 * CMAR MA LL_DMA_ConfigAddresses 00914 * @param DMAx DMAx Instance 00915 * @param Channel This parameter can be one of the following values: 00916 * @arg @ref LL_DMA_CHANNEL_1 00917 * @arg @ref LL_DMA_CHANNEL_2 00918 * @arg @ref LL_DMA_CHANNEL_3 00919 * @arg @ref LL_DMA_CHANNEL_4 00920 * @arg @ref LL_DMA_CHANNEL_5 00921 * @arg @ref LL_DMA_CHANNEL_6 00922 * @arg @ref LL_DMA_CHANNEL_7 00923 * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 00924 * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 00925 * @param Direction This parameter can be one of the following values: 00926 * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY 00927 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH 00928 * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY 00929 * @retval None 00930 */ 00931 __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t SrcAddress, 00932 uint32_t DstAddress, uint32_t Direction) 00933 { 00934 /* Direction Memory to Periph */ 00935 if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH) 00936 { 00937 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, SrcAddress); 00938 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, DstAddress); 00939 } 00940 /* Direction Periph to Memory and Memory to Memory */ 00941 else 00942 { 00943 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, SrcAddress); 00944 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, DstAddress); 00945 } 00946 } 00947 00948 /** 00949 * @brief Set the Memory address. 00950 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. 00951 * @note This API must not be called when the DMA channel is enabled. 00952 * @rmtoll CMAR MA LL_DMA_SetMemoryAddress 00953 * @param DMAx DMAx Instance 00954 * @param Channel This parameter can be one of the following values: 00955 * @arg @ref LL_DMA_CHANNEL_1 00956 * @arg @ref LL_DMA_CHANNEL_2 00957 * @arg @ref LL_DMA_CHANNEL_3 00958 * @arg @ref LL_DMA_CHANNEL_4 00959 * @arg @ref LL_DMA_CHANNEL_5 00960 * @arg @ref LL_DMA_CHANNEL_6 00961 * @arg @ref LL_DMA_CHANNEL_7 00962 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 00963 * @retval None 00964 */ 00965 __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) 00966 { 00967 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); 00968 } 00969 00970 /** 00971 * @brief Set the Peripheral address. 00972 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. 00973 * @note This API must not be called when the DMA channel is enabled. 00974 * @rmtoll CPAR PA LL_DMA_SetPeriphAddress 00975 * @param DMAx DMAx Instance 00976 * @param Channel This parameter can be one of the following values: 00977 * @arg @ref LL_DMA_CHANNEL_1 00978 * @arg @ref LL_DMA_CHANNEL_2 00979 * @arg @ref LL_DMA_CHANNEL_3 00980 * @arg @ref LL_DMA_CHANNEL_4 00981 * @arg @ref LL_DMA_CHANNEL_5 00982 * @arg @ref LL_DMA_CHANNEL_6 00983 * @arg @ref LL_DMA_CHANNEL_7 00984 * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 00985 * @retval None 00986 */ 00987 __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t PeriphAddress) 00988 { 00989 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, PeriphAddress); 00990 } 00991 00992 /** 00993 * @brief Get Memory address. 00994 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. 00995 * @rmtoll CMAR MA LL_DMA_GetMemoryAddress 00996 * @param DMAx DMAx Instance 00997 * @param Channel This parameter can be one of the following values: 00998 * @arg @ref LL_DMA_CHANNEL_1 00999 * @arg @ref LL_DMA_CHANNEL_2 01000 * @arg @ref LL_DMA_CHANNEL_3 01001 * @arg @ref LL_DMA_CHANNEL_4 01002 * @arg @ref LL_DMA_CHANNEL_5 01003 * @arg @ref LL_DMA_CHANNEL_6 01004 * @arg @ref LL_DMA_CHANNEL_7 01005 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 01006 */ 01007 __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Channel) 01008 { 01009 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); 01010 } 01011 01012 /** 01013 * @brief Get Peripheral address. 01014 * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only. 01015 * @rmtoll CPAR PA LL_DMA_GetPeriphAddress 01016 * @param DMAx DMAx Instance 01017 * @param Channel This parameter can be one of the following values: 01018 * @arg @ref LL_DMA_CHANNEL_1 01019 * @arg @ref LL_DMA_CHANNEL_2 01020 * @arg @ref LL_DMA_CHANNEL_3 01021 * @arg @ref LL_DMA_CHANNEL_4 01022 * @arg @ref LL_DMA_CHANNEL_5 01023 * @arg @ref LL_DMA_CHANNEL_6 01024 * @arg @ref LL_DMA_CHANNEL_7 01025 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 01026 */ 01027 __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Channel) 01028 { 01029 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); 01030 } 01031 01032 /** 01033 * @brief Set the Memory to Memory Source address. 01034 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. 01035 * @note This API must not be called when the DMA channel is enabled. 01036 * @rmtoll CPAR PA LL_DMA_SetM2MSrcAddress 01037 * @param DMAx DMAx Instance 01038 * @param Channel This parameter can be one of the following values: 01039 * @arg @ref LL_DMA_CHANNEL_1 01040 * @arg @ref LL_DMA_CHANNEL_2 01041 * @arg @ref LL_DMA_CHANNEL_3 01042 * @arg @ref LL_DMA_CHANNEL_4 01043 * @arg @ref LL_DMA_CHANNEL_5 01044 * @arg @ref LL_DMA_CHANNEL_6 01045 * @arg @ref LL_DMA_CHANNEL_7 01046 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 01047 * @retval None 01048 */ 01049 __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) 01050 { 01051 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR, MemoryAddress); 01052 } 01053 01054 /** 01055 * @brief Set the Memory to Memory Destination address. 01056 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. 01057 * @note This API must not be called when the DMA channel is enabled. 01058 * @rmtoll CMAR MA LL_DMA_SetM2MDstAddress 01059 * @param DMAx DMAx Instance 01060 * @param Channel This parameter can be one of the following values: 01061 * @arg @ref LL_DMA_CHANNEL_1 01062 * @arg @ref LL_DMA_CHANNEL_2 01063 * @arg @ref LL_DMA_CHANNEL_3 01064 * @arg @ref LL_DMA_CHANNEL_4 01065 * @arg @ref LL_DMA_CHANNEL_5 01066 * @arg @ref LL_DMA_CHANNEL_6 01067 * @arg @ref LL_DMA_CHANNEL_7 01068 * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 01069 * @retval None 01070 */ 01071 __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t MemoryAddress) 01072 { 01073 WRITE_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR, MemoryAddress); 01074 } 01075 01076 /** 01077 * @brief Get the Memory to Memory Source address. 01078 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. 01079 * @rmtoll CPAR PA LL_DMA_GetM2MSrcAddress 01080 * @param DMAx DMAx Instance 01081 * @param Channel This parameter can be one of the following values: 01082 * @arg @ref LL_DMA_CHANNEL_1 01083 * @arg @ref LL_DMA_CHANNEL_2 01084 * @arg @ref LL_DMA_CHANNEL_3 01085 * @arg @ref LL_DMA_CHANNEL_4 01086 * @arg @ref LL_DMA_CHANNEL_5 01087 * @arg @ref LL_DMA_CHANNEL_6 01088 * @arg @ref LL_DMA_CHANNEL_7 01089 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 01090 */ 01091 __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Channel) 01092 { 01093 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CPAR)); 01094 } 01095 01096 /** 01097 * @brief Get the Memory to Memory Destination address. 01098 * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only. 01099 * @rmtoll CMAR MA LL_DMA_GetM2MDstAddress 01100 * @param DMAx DMAx Instance 01101 * @param Channel This parameter can be one of the following values: 01102 * @arg @ref LL_DMA_CHANNEL_1 01103 * @arg @ref LL_DMA_CHANNEL_2 01104 * @arg @ref LL_DMA_CHANNEL_3 01105 * @arg @ref LL_DMA_CHANNEL_4 01106 * @arg @ref LL_DMA_CHANNEL_5 01107 * @arg @ref LL_DMA_CHANNEL_6 01108 * @arg @ref LL_DMA_CHANNEL_7 01109 * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF 01110 */ 01111 __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Channel) 01112 { 01113 return (READ_REG(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CMAR)); 01114 } 01115 01116 /** 01117 * @} 01118 */ 01119 01120 /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management 01121 * @{ 01122 */ 01123 01124 /** 01125 * @brief Get Channel 1 global interrupt flag. 01126 * @rmtoll ISR GIF1 LL_DMA_IsActiveFlag_GI1 01127 * @param DMAx DMAx Instance 01128 * @retval State of bit (1 or 0). 01129 */ 01130 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef *DMAx) 01131 { 01132 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1)); 01133 } 01134 01135 /** 01136 * @brief Get Channel 2 global interrupt flag. 01137 * @rmtoll ISR GIF2 LL_DMA_IsActiveFlag_GI2 01138 * @param DMAx DMAx Instance 01139 * @retval State of bit (1 or 0). 01140 */ 01141 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef *DMAx) 01142 { 01143 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2)); 01144 } 01145 01146 /** 01147 * @brief Get Channel 3 global interrupt flag. 01148 * @rmtoll ISR GIF3 LL_DMA_IsActiveFlag_GI3 01149 * @param DMAx DMAx Instance 01150 * @retval State of bit (1 or 0). 01151 */ 01152 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef *DMAx) 01153 { 01154 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3)); 01155 } 01156 01157 /** 01158 * @brief Get Channel 4 global interrupt flag. 01159 * @rmtoll ISR GIF4 LL_DMA_IsActiveFlag_GI4 01160 * @param DMAx DMAx Instance 01161 * @retval State of bit (1 or 0). 01162 */ 01163 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef *DMAx) 01164 { 01165 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4)); 01166 } 01167 01168 /** 01169 * @brief Get Channel 5 global interrupt flag. 01170 * @rmtoll ISR GIF5 LL_DMA_IsActiveFlag_GI5 01171 * @param DMAx DMAx Instance 01172 * @retval State of bit (1 or 0). 01173 */ 01174 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef *DMAx) 01175 { 01176 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5)); 01177 } 01178 01179 /** 01180 * @brief Get Channel 6 global interrupt flag. 01181 * @rmtoll ISR GIF6 LL_DMA_IsActiveFlag_GI6 01182 * @param DMAx DMAx Instance 01183 * @retval State of bit (1 or 0). 01184 */ 01185 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef *DMAx) 01186 { 01187 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6)); 01188 } 01189 01190 /** 01191 * @brief Get Channel 7 global interrupt flag. 01192 * @rmtoll ISR GIF7 LL_DMA_IsActiveFlag_GI7 01193 * @param DMAx DMAx Instance 01194 * @retval State of bit (1 or 0). 01195 */ 01196 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef *DMAx) 01197 { 01198 return (READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7)); 01199 } 01200 01201 /** 01202 * @brief Get Channel 1 transfer complete flag. 01203 * @rmtoll ISR TCIF1 LL_DMA_IsActiveFlag_TC1 01204 * @param DMAx DMAx Instance 01205 * @retval State of bit (1 or 0). 01206 */ 01207 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx) 01208 { 01209 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1)); 01210 } 01211 01212 /** 01213 * @brief Get Channel 2 transfer complete flag. 01214 * @rmtoll ISR TCIF2 LL_DMA_IsActiveFlag_TC2 01215 * @param DMAx DMAx Instance 01216 * @retval State of bit (1 or 0). 01217 */ 01218 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx) 01219 { 01220 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2)); 01221 } 01222 01223 /** 01224 * @brief Get Channel 3 transfer complete flag. 01225 * @rmtoll ISR TCIF3 LL_DMA_IsActiveFlag_TC3 01226 * @param DMAx DMAx Instance 01227 * @retval State of bit (1 or 0). 01228 */ 01229 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx) 01230 { 01231 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3)); 01232 } 01233 01234 /** 01235 * @brief Get Channel 4 transfer complete flag. 01236 * @rmtoll ISR TCIF4 LL_DMA_IsActiveFlag_TC4 01237 * @param DMAx DMAx Instance 01238 * @retval State of bit (1 or 0). 01239 */ 01240 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx) 01241 { 01242 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4)); 01243 } 01244 01245 /** 01246 * @brief Get Channel 5 transfer complete flag. 01247 * @rmtoll ISR TCIF5 LL_DMA_IsActiveFlag_TC5 01248 * @param DMAx DMAx Instance 01249 * @retval State of bit (1 or 0). 01250 */ 01251 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx) 01252 { 01253 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5)); 01254 } 01255 01256 /** 01257 * @brief Get Channel 6 transfer complete flag. 01258 * @rmtoll ISR TCIF6 LL_DMA_IsActiveFlag_TC6 01259 * @param DMAx DMAx Instance 01260 * @retval State of bit (1 or 0). 01261 */ 01262 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx) 01263 { 01264 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6)); 01265 } 01266 01267 /** 01268 * @brief Get Channel 7 transfer complete flag. 01269 * @rmtoll ISR TCIF7 LL_DMA_IsActiveFlag_TC7 01270 * @param DMAx DMAx Instance 01271 * @retval State of bit (1 or 0). 01272 */ 01273 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx) 01274 { 01275 return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7)); 01276 } 01277 01278 /** 01279 * @brief Get Channel 1 half transfer flag. 01280 * @rmtoll ISR HTIF1 LL_DMA_IsActiveFlag_HT1 01281 * @param DMAx DMAx Instance 01282 * @retval State of bit (1 or 0). 01283 */ 01284 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx) 01285 { 01286 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1)); 01287 } 01288 01289 /** 01290 * @brief Get Channel 2 half transfer flag. 01291 * @rmtoll ISR HTIF2 LL_DMA_IsActiveFlag_HT2 01292 * @param DMAx DMAx Instance 01293 * @retval State of bit (1 or 0). 01294 */ 01295 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx) 01296 { 01297 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2)); 01298 } 01299 01300 /** 01301 * @brief Get Channel 3 half transfer flag. 01302 * @rmtoll ISR HTIF3 LL_DMA_IsActiveFlag_HT3 01303 * @param DMAx DMAx Instance 01304 * @retval State of bit (1 or 0). 01305 */ 01306 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx) 01307 { 01308 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3)); 01309 } 01310 01311 /** 01312 * @brief Get Channel 4 half transfer flag. 01313 * @rmtoll ISR HTIF4 LL_DMA_IsActiveFlag_HT4 01314 * @param DMAx DMAx Instance 01315 * @retval State of bit (1 or 0). 01316 */ 01317 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx) 01318 { 01319 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4)); 01320 } 01321 01322 /** 01323 * @brief Get Channel 5 half transfer flag. 01324 * @rmtoll ISR HTIF5 LL_DMA_IsActiveFlag_HT5 01325 * @param DMAx DMAx Instance 01326 * @retval State of bit (1 or 0). 01327 */ 01328 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx) 01329 { 01330 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5)); 01331 } 01332 01333 /** 01334 * @brief Get Channel 6 half transfer flag. 01335 * @rmtoll ISR HTIF6 LL_DMA_IsActiveFlag_HT6 01336 * @param DMAx DMAx Instance 01337 * @retval State of bit (1 or 0). 01338 */ 01339 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx) 01340 { 01341 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6)); 01342 } 01343 01344 /** 01345 * @brief Get Channel 7 half transfer flag. 01346 * @rmtoll ISR HTIF7 LL_DMA_IsActiveFlag_HT7 01347 * @param DMAx DMAx Instance 01348 * @retval State of bit (1 or 0). 01349 */ 01350 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx) 01351 { 01352 return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7)); 01353 } 01354 01355 /** 01356 * @brief Get Channel 1 transfer error flag. 01357 * @rmtoll ISR TEIF1 LL_DMA_IsActiveFlag_TE1 01358 * @param DMAx DMAx Instance 01359 * @retval State of bit (1 or 0). 01360 */ 01361 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx) 01362 { 01363 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1)); 01364 } 01365 01366 /** 01367 * @brief Get Channel 2 transfer error flag. 01368 * @rmtoll ISR TEIF2 LL_DMA_IsActiveFlag_TE2 01369 * @param DMAx DMAx Instance 01370 * @retval State of bit (1 or 0). 01371 */ 01372 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx) 01373 { 01374 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2)); 01375 } 01376 01377 /** 01378 * @brief Get Channel 3 transfer error flag. 01379 * @rmtoll ISR TEIF3 LL_DMA_IsActiveFlag_TE3 01380 * @param DMAx DMAx Instance 01381 * @retval State of bit (1 or 0). 01382 */ 01383 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx) 01384 { 01385 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3)); 01386 } 01387 01388 /** 01389 * @brief Get Channel 4 transfer error flag. 01390 * @rmtoll ISR TEIF4 LL_DMA_IsActiveFlag_TE4 01391 * @param DMAx DMAx Instance 01392 * @retval State of bit (1 or 0). 01393 */ 01394 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx) 01395 { 01396 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4)); 01397 } 01398 01399 /** 01400 * @brief Get Channel 5 transfer error flag. 01401 * @rmtoll ISR TEIF5 LL_DMA_IsActiveFlag_TE5 01402 * @param DMAx DMAx Instance 01403 * @retval State of bit (1 or 0). 01404 */ 01405 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx) 01406 { 01407 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5)); 01408 } 01409 01410 /** 01411 * @brief Get Channel 6 transfer error flag. 01412 * @rmtoll ISR TEIF6 LL_DMA_IsActiveFlag_TE6 01413 * @param DMAx DMAx Instance 01414 * @retval State of bit (1 or 0). 01415 */ 01416 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx) 01417 { 01418 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6)); 01419 } 01420 01421 /** 01422 * @brief Get Channel 7 transfer error flag. 01423 * @rmtoll ISR TEIF7 LL_DMA_IsActiveFlag_TE7 01424 * @param DMAx DMAx Instance 01425 * @retval State of bit (1 or 0). 01426 */ 01427 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx) 01428 { 01429 return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7)); 01430 } 01431 01432 /** 01433 * @brief Clear Channel 1 global interrupt flag. 01434 * @rmtoll IFCR CGIF1 LL_DMA_ClearFlag_GI1 01435 * @param DMAx DMAx Instance 01436 * @retval None 01437 */ 01438 __STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef *DMAx) 01439 { 01440 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF1); 01441 } 01442 01443 /** 01444 * @brief Clear Channel 2 global interrupt flag. 01445 * @rmtoll IFCR CGIF2 LL_DMA_ClearFlag_GI2 01446 * @param DMAx DMAx Instance 01447 * @retval None 01448 */ 01449 __STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef *DMAx) 01450 { 01451 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF2); 01452 } 01453 01454 /** 01455 * @brief Clear Channel 3 global interrupt flag. 01456 * @rmtoll IFCR CGIF3 LL_DMA_ClearFlag_GI3 01457 * @param DMAx DMAx Instance 01458 * @retval None 01459 */ 01460 __STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef *DMAx) 01461 { 01462 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF3); 01463 } 01464 01465 /** 01466 * @brief Clear Channel 4 global interrupt flag. 01467 * @rmtoll IFCR CGIF4 LL_DMA_ClearFlag_GI4 01468 * @param DMAx DMAx Instance 01469 * @retval None 01470 */ 01471 __STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef *DMAx) 01472 { 01473 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF4); 01474 } 01475 01476 /** 01477 * @brief Clear Channel 5 global interrupt flag. 01478 * @rmtoll IFCR CGIF5 LL_DMA_ClearFlag_GI5 01479 * @param DMAx DMAx Instance 01480 * @retval None 01481 */ 01482 __STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef *DMAx) 01483 { 01484 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF5); 01485 } 01486 01487 /** 01488 * @brief Clear Channel 6 global interrupt flag. 01489 * @rmtoll IFCR CGIF6 LL_DMA_ClearFlag_GI6 01490 * @param DMAx DMAx Instance 01491 * @retval None 01492 */ 01493 __STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef *DMAx) 01494 { 01495 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF6); 01496 } 01497 01498 /** 01499 * @brief Clear Channel 7 global interrupt flag. 01500 * @rmtoll IFCR CGIF7 LL_DMA_ClearFlag_GI7 01501 * @param DMAx DMAx Instance 01502 * @retval None 01503 */ 01504 __STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef *DMAx) 01505 { 01506 WRITE_REG(DMAx->IFCR, DMA_IFCR_CGIF7); 01507 } 01508 01509 /** 01510 * @brief Clear Channel 1 transfer complete flag. 01511 * @rmtoll IFCR CTCIF1 LL_DMA_ClearFlag_TC1 01512 * @param DMAx DMAx Instance 01513 * @retval None 01514 */ 01515 __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx) 01516 { 01517 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF1); 01518 } 01519 01520 /** 01521 * @brief Clear Channel 2 transfer complete flag. 01522 * @rmtoll IFCR CTCIF2 LL_DMA_ClearFlag_TC2 01523 * @param DMAx DMAx Instance 01524 * @retval None 01525 */ 01526 __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx) 01527 { 01528 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF2); 01529 } 01530 01531 /** 01532 * @brief Clear Channel 3 transfer complete flag. 01533 * @rmtoll IFCR CTCIF3 LL_DMA_ClearFlag_TC3 01534 * @param DMAx DMAx Instance 01535 * @retval None 01536 */ 01537 __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx) 01538 { 01539 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF3); 01540 } 01541 01542 /** 01543 * @brief Clear Channel 4 transfer complete flag. 01544 * @rmtoll IFCR CTCIF4 LL_DMA_ClearFlag_TC4 01545 * @param DMAx DMAx Instance 01546 * @retval None 01547 */ 01548 __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx) 01549 { 01550 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF4); 01551 } 01552 01553 /** 01554 * @brief Clear Channel 5 transfer complete flag. 01555 * @rmtoll IFCR CTCIF5 LL_DMA_ClearFlag_TC5 01556 * @param DMAx DMAx Instance 01557 * @retval None 01558 */ 01559 __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx) 01560 { 01561 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF5); 01562 } 01563 01564 /** 01565 * @brief Clear Channel 6 transfer complete flag. 01566 * @rmtoll IFCR CTCIF6 LL_DMA_ClearFlag_TC6 01567 * @param DMAx DMAx Instance 01568 * @retval None 01569 */ 01570 __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx) 01571 { 01572 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF6); 01573 } 01574 01575 /** 01576 * @brief Clear Channel 7 transfer complete flag. 01577 * @rmtoll IFCR CTCIF7 LL_DMA_ClearFlag_TC7 01578 * @param DMAx DMAx Instance 01579 * @retval None 01580 */ 01581 __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx) 01582 { 01583 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTCIF7); 01584 } 01585 01586 /** 01587 * @brief Clear Channel 1 half transfer flag. 01588 * @rmtoll IFCR CHTIF1 LL_DMA_ClearFlag_HT1 01589 * @param DMAx DMAx Instance 01590 * @retval None 01591 */ 01592 __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx) 01593 { 01594 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF1); 01595 } 01596 01597 /** 01598 * @brief Clear Channel 2 half transfer flag. 01599 * @rmtoll IFCR CHTIF2 LL_DMA_ClearFlag_HT2 01600 * @param DMAx DMAx Instance 01601 * @retval None 01602 */ 01603 __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx) 01604 { 01605 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF2); 01606 } 01607 01608 /** 01609 * @brief Clear Channel 3 half transfer flag. 01610 * @rmtoll IFCR CHTIF3 LL_DMA_ClearFlag_HT3 01611 * @param DMAx DMAx Instance 01612 * @retval None 01613 */ 01614 __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx) 01615 { 01616 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF3); 01617 } 01618 01619 /** 01620 * @brief Clear Channel 4 half transfer flag. 01621 * @rmtoll IFCR CHTIF4 LL_DMA_ClearFlag_HT4 01622 * @param DMAx DMAx Instance 01623 * @retval None 01624 */ 01625 __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx) 01626 { 01627 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF4); 01628 } 01629 01630 /** 01631 * @brief Clear Channel 5 half transfer flag. 01632 * @rmtoll IFCR CHTIF5 LL_DMA_ClearFlag_HT5 01633 * @param DMAx DMAx Instance 01634 * @retval None 01635 */ 01636 __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx) 01637 { 01638 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF5); 01639 } 01640 01641 /** 01642 * @brief Clear Channel 6 half transfer flag. 01643 * @rmtoll IFCR CHTIF6 LL_DMA_ClearFlag_HT6 01644 * @param DMAx DMAx Instance 01645 * @retval None 01646 */ 01647 __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx) 01648 { 01649 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF6); 01650 } 01651 01652 /** 01653 * @brief Clear Channel 7 half transfer flag. 01654 * @rmtoll IFCR CHTIF7 LL_DMA_ClearFlag_HT7 01655 * @param DMAx DMAx Instance 01656 * @retval None 01657 */ 01658 __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx) 01659 { 01660 WRITE_REG(DMAx->IFCR, DMA_IFCR_CHTIF7); 01661 } 01662 01663 /** 01664 * @brief Clear Channel 1 transfer error flag. 01665 * @rmtoll IFCR CTEIF1 LL_DMA_ClearFlag_TE1 01666 * @param DMAx DMAx Instance 01667 * @retval None 01668 */ 01669 __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx) 01670 { 01671 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF1); 01672 } 01673 01674 /** 01675 * @brief Clear Channel 2 transfer error flag. 01676 * @rmtoll IFCR CTEIF2 LL_DMA_ClearFlag_TE2 01677 * @param DMAx DMAx Instance 01678 * @retval None 01679 */ 01680 __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx) 01681 { 01682 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF2); 01683 } 01684 01685 /** 01686 * @brief Clear Channel 3 transfer error flag. 01687 * @rmtoll IFCR CTEIF3 LL_DMA_ClearFlag_TE3 01688 * @param DMAx DMAx Instance 01689 * @retval None 01690 */ 01691 __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx) 01692 { 01693 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF3); 01694 } 01695 01696 /** 01697 * @brief Clear Channel 4 transfer error flag. 01698 * @rmtoll IFCR CTEIF4 LL_DMA_ClearFlag_TE4 01699 * @param DMAx DMAx Instance 01700 * @retval None 01701 */ 01702 __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx) 01703 { 01704 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF4); 01705 } 01706 01707 /** 01708 * @brief Clear Channel 5 transfer error flag. 01709 * @rmtoll IFCR CTEIF5 LL_DMA_ClearFlag_TE5 01710 * @param DMAx DMAx Instance 01711 * @retval None 01712 */ 01713 __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx) 01714 { 01715 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF5); 01716 } 01717 01718 /** 01719 * @brief Clear Channel 6 transfer error flag. 01720 * @rmtoll IFCR CTEIF6 LL_DMA_ClearFlag_TE6 01721 * @param DMAx DMAx Instance 01722 * @retval None 01723 */ 01724 __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx) 01725 { 01726 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF6); 01727 } 01728 01729 /** 01730 * @brief Clear Channel 7 transfer error flag. 01731 * @rmtoll IFCR CTEIF7 LL_DMA_ClearFlag_TE7 01732 * @param DMAx DMAx Instance 01733 * @retval None 01734 */ 01735 __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx) 01736 { 01737 WRITE_REG(DMAx->IFCR, DMA_IFCR_CTEIF7); 01738 } 01739 01740 /** 01741 * @} 01742 */ 01743 01744 /** @defgroup DMA_LL_EF_IT_Management IT_Management 01745 * @{ 01746 */ 01747 01748 /** 01749 * @brief Enable Transfer complete interrupt. 01750 * @rmtoll CCR TCIE LL_DMA_EnableIT_TC 01751 * @param DMAx DMAx Instance 01752 * @param Channel This parameter can be one of the following values: 01753 * @arg @ref LL_DMA_CHANNEL_1 01754 * @arg @ref LL_DMA_CHANNEL_2 01755 * @arg @ref LL_DMA_CHANNEL_3 01756 * @arg @ref LL_DMA_CHANNEL_4 01757 * @arg @ref LL_DMA_CHANNEL_5 01758 * @arg @ref LL_DMA_CHANNEL_6 01759 * @arg @ref LL_DMA_CHANNEL_7 01760 * @retval None 01761 */ 01762 __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) 01763 { 01764 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); 01765 } 01766 01767 /** 01768 * @brief Enable Half transfer interrupt. 01769 * @rmtoll CCR HTIE LL_DMA_EnableIT_HT 01770 * @param DMAx DMAx Instance 01771 * @param Channel This parameter can be one of the following values: 01772 * @arg @ref LL_DMA_CHANNEL_1 01773 * @arg @ref LL_DMA_CHANNEL_2 01774 * @arg @ref LL_DMA_CHANNEL_3 01775 * @arg @ref LL_DMA_CHANNEL_4 01776 * @arg @ref LL_DMA_CHANNEL_5 01777 * @arg @ref LL_DMA_CHANNEL_6 01778 * @arg @ref LL_DMA_CHANNEL_7 01779 * @retval None 01780 */ 01781 __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) 01782 { 01783 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); 01784 } 01785 01786 /** 01787 * @brief Enable Transfer error interrupt. 01788 * @rmtoll CCR TEIE LL_DMA_EnableIT_TE 01789 * @param DMAx DMAx Instance 01790 * @param Channel This parameter can be one of the following values: 01791 * @arg @ref LL_DMA_CHANNEL_1 01792 * @arg @ref LL_DMA_CHANNEL_2 01793 * @arg @ref LL_DMA_CHANNEL_3 01794 * @arg @ref LL_DMA_CHANNEL_4 01795 * @arg @ref LL_DMA_CHANNEL_5 01796 * @arg @ref LL_DMA_CHANNEL_6 01797 * @arg @ref LL_DMA_CHANNEL_7 01798 * @retval None 01799 */ 01800 __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) 01801 { 01802 SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); 01803 } 01804 01805 /** 01806 * @brief Disable Transfer complete interrupt. 01807 * @rmtoll CCR TCIE LL_DMA_DisableIT_TC 01808 * @param DMAx DMAx Instance 01809 * @param Channel This parameter can be one of the following values: 01810 * @arg @ref LL_DMA_CHANNEL_1 01811 * @arg @ref LL_DMA_CHANNEL_2 01812 * @arg @ref LL_DMA_CHANNEL_3 01813 * @arg @ref LL_DMA_CHANNEL_4 01814 * @arg @ref LL_DMA_CHANNEL_5 01815 * @arg @ref LL_DMA_CHANNEL_6 01816 * @arg @ref LL_DMA_CHANNEL_7 01817 * @retval None 01818 */ 01819 __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) 01820 { 01821 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TCIE); 01822 } 01823 01824 /** 01825 * @brief Disable Half transfer interrupt. 01826 * @rmtoll CCR HTIE LL_DMA_DisableIT_HT 01827 * @param DMAx DMAx Instance 01828 * @param Channel This parameter can be one of the following values: 01829 * @arg @ref LL_DMA_CHANNEL_1 01830 * @arg @ref LL_DMA_CHANNEL_2 01831 * @arg @ref LL_DMA_CHANNEL_3 01832 * @arg @ref LL_DMA_CHANNEL_4 01833 * @arg @ref LL_DMA_CHANNEL_5 01834 * @arg @ref LL_DMA_CHANNEL_6 01835 * @arg @ref LL_DMA_CHANNEL_7 01836 * @retval None 01837 */ 01838 __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) 01839 { 01840 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_HTIE); 01841 } 01842 01843 /** 01844 * @brief Disable Transfer error interrupt. 01845 * @rmtoll CCR TEIE LL_DMA_DisableIT_TE 01846 * @param DMAx DMAx Instance 01847 * @param Channel This parameter can be one of the following values: 01848 * @arg @ref LL_DMA_CHANNEL_1 01849 * @arg @ref LL_DMA_CHANNEL_2 01850 * @arg @ref LL_DMA_CHANNEL_3 01851 * @arg @ref LL_DMA_CHANNEL_4 01852 * @arg @ref LL_DMA_CHANNEL_5 01853 * @arg @ref LL_DMA_CHANNEL_6 01854 * @arg @ref LL_DMA_CHANNEL_7 01855 * @retval None 01856 */ 01857 __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) 01858 { 01859 CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, DMA_CCR_TEIE); 01860 } 01861 01862 /** 01863 * @brief Check if Transfer complete Interrupt is enabled. 01864 * @rmtoll CCR TCIE LL_DMA_IsEnabledIT_TC 01865 * @param DMAx DMAx Instance 01866 * @param Channel This parameter can be one of the following values: 01867 * @arg @ref LL_DMA_CHANNEL_1 01868 * @arg @ref LL_DMA_CHANNEL_2 01869 * @arg @ref LL_DMA_CHANNEL_3 01870 * @arg @ref LL_DMA_CHANNEL_4 01871 * @arg @ref LL_DMA_CHANNEL_5 01872 * @arg @ref LL_DMA_CHANNEL_6 01873 * @arg @ref LL_DMA_CHANNEL_7 01874 * @retval State of bit (1 or 0). 01875 */ 01876 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel) 01877 { 01878 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 01879 DMA_CCR_TCIE) == (DMA_CCR_TCIE)); 01880 } 01881 01882 /** 01883 * @brief Check if Half transfer Interrupt is enabled. 01884 * @rmtoll CCR HTIE LL_DMA_IsEnabledIT_HT 01885 * @param DMAx DMAx Instance 01886 * @param Channel This parameter can be one of the following values: 01887 * @arg @ref LL_DMA_CHANNEL_1 01888 * @arg @ref LL_DMA_CHANNEL_2 01889 * @arg @ref LL_DMA_CHANNEL_3 01890 * @arg @ref LL_DMA_CHANNEL_4 01891 * @arg @ref LL_DMA_CHANNEL_5 01892 * @arg @ref LL_DMA_CHANNEL_6 01893 * @arg @ref LL_DMA_CHANNEL_7 01894 * @retval State of bit (1 or 0). 01895 */ 01896 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel) 01897 { 01898 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 01899 DMA_CCR_HTIE) == (DMA_CCR_HTIE)); 01900 } 01901 01902 /** 01903 * @brief Check if Transfer error Interrupt is enabled. 01904 * @rmtoll CCR TEIE LL_DMA_IsEnabledIT_TE 01905 * @param DMAx DMAx Instance 01906 * @param Channel This parameter can be one of the following values: 01907 * @arg @ref LL_DMA_CHANNEL_1 01908 * @arg @ref LL_DMA_CHANNEL_2 01909 * @arg @ref LL_DMA_CHANNEL_3 01910 * @arg @ref LL_DMA_CHANNEL_4 01911 * @arg @ref LL_DMA_CHANNEL_5 01912 * @arg @ref LL_DMA_CHANNEL_6 01913 * @arg @ref LL_DMA_CHANNEL_7 01914 * @retval State of bit (1 or 0). 01915 */ 01916 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel) 01917 { 01918 return (READ_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1U])))->CCR, 01919 DMA_CCR_TEIE) == (DMA_CCR_TEIE)); 01920 } 01921 01922 /** 01923 * @} 01924 */ 01925 01926 #if defined(USE_FULL_LL_DRIVER) 01927 /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions 01928 * @{ 01929 */ 01930 01931 uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Channel, LL_DMA_InitTypeDef *DMA_InitStruct); 01932 uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Channel); 01933 void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct); 01934 01935 /** 01936 * @} 01937 */ 01938 #endif /* USE_FULL_LL_DRIVER */ 01939 01940 /** 01941 * @} 01942 */ 01943 01944 /** 01945 * @} 01946 */ 01947 01948 #endif /* DMA1 || DMA2 */ 01949 01950 /** 01951 * @} 01952 */ 01953 01954 #ifdef __cplusplus 01955 } 01956 #endif 01957 01958 #endif /* __STM32F1xx_LL_DMA_H */ 01959 01960 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/