You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

3191 lines
116 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_ll_dma.h
  4. * @author MCD Application Team
  5. * @brief Header file of DMA LL module.
  6. ******************************************************************************
  7. * @attention
  8. *
  9. * <h2><center>&copy; COPYRIGHT(c) 2017 STMicroelectronics.
  10. * All rights reserved.</center></h2>
  11. *
  12. * This software component is licensed by ST under BSD 3-Clause license,
  13. * the "License"; You may not use this file except in compliance with the
  14. * License. You may obtain a copy of the License at:
  15. * opensource.org/licenses/BSD-3-Clause
  16. *
  17. ******************************************************************************
  18. */
  19. /* Define to prevent recursive inclusion -------------------------------------*/
  20. #ifndef STM32H7xx_LL_DMA_H
  21. #define STM32H7xx_LL_DMA_H
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. /* Includes ------------------------------------------------------------------*/
  26. #include "stm32h7xx.h"
  27. #include "stm32h7xx_ll_dmamux.h"
  28. /** @addtogroup STM32H7xx_LL_Driver
  29. * @{
  30. */
  31. #if defined (DMA1) || defined (DMA2)
  32. /** @defgroup DMA_LL DMA
  33. * @{
  34. */
  35. /* Private types -------------------------------------------------------------*/
  36. /* Private variables ---------------------------------------------------------*/
  37. /** @defgroup DMA_LL_Private_Variables DMA Private Variables
  38. * @{
  39. */
  40. /* Array used to get the DMA stream register offset versus stream index LL_DMA_STREAM_x */
  41. static const uint8_t LL_DMA_STR_OFFSET_TAB[] =
  42. {
  43. (uint8_t)(DMA1_Stream0_BASE - DMA1_BASE),
  44. (uint8_t)(DMA1_Stream1_BASE - DMA1_BASE),
  45. (uint8_t)(DMA1_Stream2_BASE - DMA1_BASE),
  46. (uint8_t)(DMA1_Stream3_BASE - DMA1_BASE),
  47. (uint8_t)(DMA1_Stream4_BASE - DMA1_BASE),
  48. (uint8_t)(DMA1_Stream5_BASE - DMA1_BASE),
  49. (uint8_t)(DMA1_Stream6_BASE - DMA1_BASE),
  50. (uint8_t)(DMA1_Stream7_BASE - DMA1_BASE)
  51. };
  52. /**
  53. * @}
  54. */
  55. /* Private macros ------------------------------------------------------------*/
  56. /**
  57. * @brief Helper macro to convert DMA Instance DMAx into DMAMUX channel
  58. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  59. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  60. * @param __DMA_INSTANCE__ DMAx
  61. * @retval Channel_Offset (LL_DMAMUX_CHANNEL_8 or 0).
  62. */
  63. #define LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(__DMA_INSTANCE__) \
  64. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) ? 0UL : 8UL)
  65. /* Exported types ------------------------------------------------------------*/
  66. #if defined(USE_FULL_LL_DRIVER)
  67. /** @defgroup DMA_LL_ES_INIT DMA Exported Init structure
  68. * @{
  69. */
  70. typedef struct
  71. {
  72. uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for DMA transfer
  73. or as Source base address in case of memory to memory transfer direction.
  74. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
  75. uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer
  76. or as Destination base address in case of memory to memory transfer direction.
  77. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
  78. uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral,
  79. from memory to memory or from peripheral to memory.
  80. This parameter can be a value of @ref DMA_LL_EC_DIRECTION
  81. This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataTransferDirection(). */
  82. uint32_t Mode; /*!< Specifies the normal or circular operation mode.
  83. This parameter can be a value of @ref DMA_LL_EC_MODE
  84. @note The circular buffer mode cannot be used if the memory to memory
  85. data transfer direction is configured on the selected Stream
  86. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMode(). */
  87. uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction
  88. is incremented or not.
  89. This parameter can be a value of @ref DMA_LL_EC_PERIPH
  90. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphIncMode(). */
  91. uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction
  92. is incremented or not.
  93. This parameter can be a value of @ref DMA_LL_EC_MEMORY
  94. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryIncMode(). */
  95. uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word)
  96. in case of memory to memory transfer direction.
  97. This parameter can be a value of @ref DMA_LL_EC_PDATAALIGN
  98. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphSize(). */
  99. uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word)
  100. in case of memory to memory transfer direction.
  101. This parameter can be a value of @ref DMA_LL_EC_MDATAALIGN
  102. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemorySize(). */
  103. uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit.
  104. The data unit is equal to the source buffer configuration set in PeripheralSize
  105. or MemorySize parameters depending in the transfer direction.
  106. This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF
  107. This feature can be modified afterwards using unitary function @ref LL_DMA_SetDataLength(). */
  108. uint32_t PeriphRequest; /*!< Specifies the peripheral request.
  109. This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST
  110. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphRequest(). */
  111. uint32_t Priority; /*!< Specifies the channel priority level.
  112. This parameter can be a value of @ref DMA_LL_EC_PRIORITY
  113. This feature can be modified afterwards using unitary function @ref LL_DMA_SetStreamPriorityLevel(). */
  114. uint32_t FIFOMode; /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.
  115. This parameter can be a value of @ref DMA_LL_FIFOMODE
  116. @note The Direct mode (FIFO mode disabled) cannot be used if the
  117. memory-to-memory data transfer is configured on the selected stream
  118. This feature can be modified afterwards using unitary functions @ref LL_DMA_EnableFifoMode() or @ref LL_DMA_EnableFifoMode() . */
  119. uint32_t FIFOThreshold; /*!< Specifies the FIFO threshold level.
  120. This parameter can be a value of @ref DMA_LL_EC_FIFOTHRESHOLD
  121. This feature can be modified afterwards using unitary function @ref LL_DMA_SetFIFOThreshold(). */
  122. uint32_t MemBurst; /*!< Specifies the Burst transfer configuration for the memory transfers.
  123. It specifies the amount of data to be transferred in a single non interruptible
  124. transaction.
  125. This parameter can be a value of @ref DMA_LL_EC_MBURST
  126. @note The burst mode is possible only if the address Increment mode is enabled.
  127. This feature can be modified afterwards using unitary function @ref LL_DMA_SetMemoryBurstxfer(). */
  128. uint32_t PeriphBurst; /*!< Specifies the Burst transfer configuration for the peripheral transfers.
  129. It specifies the amount of data to be transferred in a single non interruptible
  130. transaction.
  131. This parameter can be a value of @ref DMA_LL_EC_PBURST
  132. @note The burst mode is possible only if the address Increment mode is enabled.
  133. This feature can be modified afterwards using unitary function @ref LL_DMA_SetPeriphBurstxfer(). */
  134. } LL_DMA_InitTypeDef;
  135. /**
  136. * @}
  137. */
  138. #endif /*USE_FULL_LL_DRIVER*/
  139. /* Exported constants --------------------------------------------------------*/
  140. /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
  141. * @{
  142. */
  143. /** @defgroup DMA_LL_EC_STREAM STREAM
  144. * @{
  145. */
  146. #define LL_DMA_STREAM_0 0x00000000U
  147. #define LL_DMA_STREAM_1 0x00000001U
  148. #define LL_DMA_STREAM_2 0x00000002U
  149. #define LL_DMA_STREAM_3 0x00000003U
  150. #define LL_DMA_STREAM_4 0x00000004U
  151. #define LL_DMA_STREAM_5 0x00000005U
  152. #define LL_DMA_STREAM_6 0x00000006U
  153. #define LL_DMA_STREAM_7 0x00000007U
  154. #define LL_DMA_STREAM_ALL 0xFFFF0000U
  155. /**
  156. * @}
  157. */
  158. /** @defgroup DMA_LL_EC_DIRECTION DIRECTION
  159. * @{
  160. */
  161. #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
  162. #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_SxCR_DIR_0 /*!< Memory to peripheral direction */
  163. #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_SxCR_DIR_1 /*!< Memory to memory direction */
  164. /**
  165. * @}
  166. */
  167. /** @defgroup DMA_LL_EC_MODE MODE
  168. * @{
  169. */
  170. #define LL_DMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */
  171. #define LL_DMA_MODE_CIRCULAR DMA_SxCR_CIRC /*!< Circular Mode */
  172. #define LL_DMA_MODE_PFCTRL DMA_SxCR_PFCTRL /*!< Peripheral flow control mode */
  173. /**
  174. * @}
  175. */
  176. /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE
  177. * @{
  178. */
  179. #define LL_DMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering mode */
  180. #define LL_DMA_DOUBLEBUFFER_MODE_ENABLE DMA_SxCR_DBM /*!< Enable double buffering mode */
  181. /**
  182. * @}
  183. */
  184. /** @defgroup DMA_LL_EC_PERIPH PERIPH
  185. * @{
  186. */
  187. #define LL_DMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */
  188. #define LL_DMA_PERIPH_INCREMENT DMA_SxCR_PINC /*!< Peripheral increment mode Enable */
  189. /**
  190. * @}
  191. */
  192. /** @defgroup DMA_LL_EC_MEMORY MEMORY
  193. * @{
  194. */
  195. #define LL_DMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */
  196. #define LL_DMA_MEMORY_INCREMENT DMA_SxCR_MINC /*!< Memory increment mode Enable */
  197. /**
  198. * @}
  199. */
  200. /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN
  201. * @{
  202. */
  203. #define LL_DMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */
  204. #define LL_DMA_PDATAALIGN_HALFWORD DMA_SxCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */
  205. #define LL_DMA_PDATAALIGN_WORD DMA_SxCR_PSIZE_1 /*!< Peripheral data alignment : Word */
  206. /**
  207. * @}
  208. */
  209. /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN
  210. * @{
  211. */
  212. #define LL_DMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */
  213. #define LL_DMA_MDATAALIGN_HALFWORD DMA_SxCR_MSIZE_0 /*!< Memory data alignment : HalfWord */
  214. #define LL_DMA_MDATAALIGN_WORD DMA_SxCR_MSIZE_1 /*!< Memory data alignment : Word */
  215. /**
  216. * @}
  217. */
  218. /** @defgroup DMA_LL_EC_OFFSETSIZE OFFSETSIZE
  219. * @{
  220. */
  221. #define LL_DMA_OFFSETSIZE_PSIZE 0x00000000U /*!< Peripheral increment offset size is linked to the PSIZE */
  222. #define LL_DMA_OFFSETSIZE_FIXEDTO4 DMA_SxCR_PINCOS /*!< Peripheral increment offset size is fixed to 4 (32-bit alignment) */
  223. /**
  224. * @}
  225. */
  226. /** @defgroup DMA_LL_EC_PRIORITY PRIORITY
  227. * @{
  228. */
  229. #define LL_DMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */
  230. #define LL_DMA_PRIORITY_MEDIUM DMA_SxCR_PL_0 /*!< Priority level : Medium */
  231. #define LL_DMA_PRIORITY_HIGH DMA_SxCR_PL_1 /*!< Priority level : High */
  232. #define LL_DMA_PRIORITY_VERYHIGH DMA_SxCR_PL /*!< Priority level : Very_High */
  233. /**
  234. * @}
  235. */
  236. /** @defgroup DMA_LL_EC_MBURST MBURST
  237. * @{
  238. */
  239. #define LL_DMA_MBURST_SINGLE 0x00000000U /*!< Memory burst single transfer configuration */
  240. #define LL_DMA_MBURST_INC4 DMA_SxCR_MBURST_0 /*!< Memory burst of 4 beats transfer configuration */
  241. #define LL_DMA_MBURST_INC8 DMA_SxCR_MBURST_1 /*!< Memory burst of 8 beats transfer configuration */
  242. #define LL_DMA_MBURST_INC16 (DMA_SxCR_MBURST_0 | DMA_SxCR_MBURST_1) /*!< Memory burst of 16 beats transfer configuration */
  243. /**
  244. * @}
  245. */
  246. /** @defgroup DMA_LL_EC_PBURST PBURST
  247. * @{
  248. */
  249. #define LL_DMA_PBURST_SINGLE 0x00000000U /*!< Peripheral burst single transfer configuration */
  250. #define LL_DMA_PBURST_INC4 DMA_SxCR_PBURST_0 /*!< Peripheral burst of 4 beats transfer configuration */
  251. #define LL_DMA_PBURST_INC8 DMA_SxCR_PBURST_1 /*!< Peripheral burst of 8 beats transfer configuration */
  252. #define LL_DMA_PBURST_INC16 (DMA_SxCR_PBURST_0 | DMA_SxCR_PBURST_1) /*!< Peripheral burst of 16 beats transfer configuration */
  253. /**
  254. * @}
  255. */
  256. /** @defgroup DMA_LL_FIFOMODE DMA_LL_FIFOMODE
  257. * @{
  258. */
  259. #define LL_DMA_FIFOMODE_DISABLE 0x00000000U /*!< FIFO mode disable (direct mode is enabled) */
  260. #define LL_DMA_FIFOMODE_ENABLE DMA_SxFCR_DMDIS /*!< FIFO mode enable */
  261. /**
  262. * @}
  263. */
  264. /** @defgroup DMA_LL_EC_FIFOSTATUS_0 FIFOSTATUS 0
  265. * @{
  266. */
  267. #define LL_DMA_FIFOSTATUS_0_25 0x00000000U /*!< 0 < fifo_level < 1/4 */
  268. #define LL_DMA_FIFOSTATUS_25_50 DMA_SxFCR_FS_0 /*!< 1/4 < fifo_level < 1/2 */
  269. #define LL_DMA_FIFOSTATUS_50_75 DMA_SxFCR_FS_1 /*!< 1/2 < fifo_level < 3/4 */
  270. #define LL_DMA_FIFOSTATUS_75_100 (DMA_SxFCR_FS_1 | DMA_SxFCR_FS_0) /*!< 3/4 < fifo_level < full */
  271. #define LL_DMA_FIFOSTATUS_EMPTY DMA_SxFCR_FS_2 /*!< FIFO is empty */
  272. #define LL_DMA_FIFOSTATUS_FULL (DMA_SxFCR_FS_2 | DMA_SxFCR_FS_0) /*!< FIFO is full */
  273. /**
  274. * @}
  275. */
  276. /** @defgroup DMA_LL_EC_FIFOTHRESHOLD FIFOTHRESHOLD
  277. * @{
  278. */
  279. #define LL_DMA_FIFOTHRESHOLD_1_4 0x00000000U /*!< FIFO threshold 1 quart full configuration */
  280. #define LL_DMA_FIFOTHRESHOLD_1_2 DMA_SxFCR_FTH_0 /*!< FIFO threshold half full configuration */
  281. #define LL_DMA_FIFOTHRESHOLD_3_4 DMA_SxFCR_FTH_1 /*!< FIFO threshold 3 quarts full configuration */
  282. #define LL_DMA_FIFOTHRESHOLD_FULL DMA_SxFCR_FTH /*!< FIFO threshold full configuration */
  283. /**
  284. * @}
  285. */
  286. /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM
  287. * @{
  288. */
  289. #define LL_DMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentTarget Memory to Memory 0 */
  290. #define LL_DMA_CURRENTTARGETMEM1 DMA_SxCR_CT /*!< Set CurrentTarget Memory to Memory 1 */
  291. /**
  292. * @}
  293. */
  294. /**
  295. * @}
  296. */
  297. /* Exported macro ------------------------------------------------------------*/
  298. /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
  299. * @{
  300. */
  301. /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros
  302. * @{
  303. */
  304. /**
  305. * @brief Write a value in DMA register
  306. * @param __INSTANCE__ DMA Instance
  307. * @param __REG__ Register to be written
  308. * @param __VALUE__ Value to be written in the register
  309. * @retval None
  310. */
  311. #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
  312. /**
  313. * @brief Read a value in DMA register
  314. * @param __INSTANCE__ DMA Instance
  315. * @param __REG__ Register to be read
  316. * @retval Register value
  317. */
  318. #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
  319. /**
  320. * @}
  321. */
  322. /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxStreamy
  323. * @{
  324. */
  325. /**
  326. * @brief Convert DMAx_Streamy into DMAx
  327. * @param __STREAM_INSTANCE__ DMAx_Streamy
  328. * @retval DMAx
  329. */
  330. #define __LL_DMA_GET_INSTANCE(__STREAM_INSTANCE__) \
  331. (((uint32_t)(__STREAM_INSTANCE__) > ((uint32_t)DMA1_Stream7)) ? DMA2 : DMA1)
  332. /**
  333. * @brief Convert DMAx_Streamy into LL_DMA_STREAM_y
  334. * @param __STREAM_INSTANCE__ DMAx_Streamy
  335. * @retval LL_DMA_STREAM_y
  336. */
  337. #define __LL_DMA_GET_STREAM(__STREAM_INSTANCE__) \
  338. (((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream0)) ? LL_DMA_STREAM_0 : \
  339. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream0)) ? LL_DMA_STREAM_0 : \
  340. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream1)) ? LL_DMA_STREAM_1 : \
  341. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream1)) ? LL_DMA_STREAM_1 : \
  342. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream2)) ? LL_DMA_STREAM_2 : \
  343. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream2)) ? LL_DMA_STREAM_2 : \
  344. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream3)) ? LL_DMA_STREAM_3 : \
  345. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream3)) ? LL_DMA_STREAM_3 : \
  346. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream4)) ? LL_DMA_STREAM_4 : \
  347. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream4)) ? LL_DMA_STREAM_4 : \
  348. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream5)) ? LL_DMA_STREAM_5 : \
  349. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream5)) ? LL_DMA_STREAM_5 : \
  350. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA1_Stream6)) ? LL_DMA_STREAM_6 : \
  351. ((uint32_t)(__STREAM_INSTANCE__) == ((uint32_t)DMA2_Stream6)) ? LL_DMA_STREAM_6 : \
  352. LL_DMA_STREAM_7)
  353. /**
  354. * @brief Convert DMA Instance DMAx and LL_DMA_STREAM_y into DMAx_Streamy
  355. * @param __DMA_INSTANCE__ DMAx
  356. * @param __STREAM__ LL_DMA_STREAM_y
  357. * @retval DMAx_Streamy
  358. */
  359. #define __LL_DMA_GET_STREAM_INSTANCE(__DMA_INSTANCE__, __STREAM__) \
  360. ((((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA1_Stream0 : \
  361. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_0))) ? DMA2_Stream0 : \
  362. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA1_Stream1 : \
  363. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_1))) ? DMA2_Stream1 : \
  364. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA1_Stream2 : \
  365. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_2))) ? DMA2_Stream2 : \
  366. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA1_Stream3 : \
  367. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_3))) ? DMA2_Stream3 : \
  368. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA1_Stream4 : \
  369. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_4))) ? DMA2_Stream4 : \
  370. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA1_Stream5 : \
  371. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_5))) ? DMA2_Stream5 : \
  372. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA1_Stream6 : \
  373. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA2)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_6))) ? DMA2_Stream6 : \
  374. (((uint32_t)(__DMA_INSTANCE__) == ((uint32_t)DMA1)) && ((uint32_t)(__STREAM__) == ((uint32_t)LL_DMA_STREAM_7))) ? DMA1_Stream7 : \
  375. DMA2_Stream7)
  376. /**
  377. * @}
  378. */
  379. /**
  380. * @}
  381. */
  382. /* Exported functions --------------------------------------------------------*/
  383. /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
  384. * @{
  385. */
  386. /** @defgroup DMA_LL_EF_Configuration Configuration
  387. * @{
  388. */
  389. /**
  390. * @brief Enable DMA stream.
  391. * @rmtoll CR EN LL_DMA_EnableStream
  392. * @param DMAx DMAx Instance
  393. * @param Stream This parameter can be one of the following values:
  394. * @arg @ref LL_DMA_STREAM_0
  395. * @arg @ref LL_DMA_STREAM_1
  396. * @arg @ref LL_DMA_STREAM_2
  397. * @arg @ref LL_DMA_STREAM_3
  398. * @arg @ref LL_DMA_STREAM_4
  399. * @arg @ref LL_DMA_STREAM_5
  400. * @arg @ref LL_DMA_STREAM_6
  401. * @arg @ref LL_DMA_STREAM_7
  402. * @retval None
  403. */
  404. __STATIC_INLINE void LL_DMA_EnableStream(DMA_TypeDef *DMAx, uint32_t Stream)
  405. {
  406. register uint32_t dma_base_addr = (uint32_t)DMAx;
  407. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN);
  408. }
  409. /**
  410. * @brief Disable DMA stream.
  411. * @rmtoll CR EN LL_DMA_DisableStream
  412. * @param DMAx DMAx Instance
  413. * @param Stream This parameter can be one of the following values:
  414. * @arg @ref LL_DMA_STREAM_0
  415. * @arg @ref LL_DMA_STREAM_1
  416. * @arg @ref LL_DMA_STREAM_2
  417. * @arg @ref LL_DMA_STREAM_3
  418. * @arg @ref LL_DMA_STREAM_4
  419. * @arg @ref LL_DMA_STREAM_5
  420. * @arg @ref LL_DMA_STREAM_6
  421. * @arg @ref LL_DMA_STREAM_7
  422. * @retval None
  423. */
  424. __STATIC_INLINE void LL_DMA_DisableStream(DMA_TypeDef *DMAx, uint32_t Stream)
  425. {
  426. register uint32_t dma_base_addr = (uint32_t)DMAx;
  427. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN);
  428. }
  429. /**
  430. * @brief Check if DMA stream is enabled or disabled.
  431. * @rmtoll CR EN LL_DMA_IsEnabledStream
  432. * @param DMAx DMAx Instance
  433. * @param Stream This parameter can be one of the following values:
  434. * @arg @ref LL_DMA_STREAM_0
  435. * @arg @ref LL_DMA_STREAM_1
  436. * @arg @ref LL_DMA_STREAM_2
  437. * @arg @ref LL_DMA_STREAM_3
  438. * @arg @ref LL_DMA_STREAM_4
  439. * @arg @ref LL_DMA_STREAM_5
  440. * @arg @ref LL_DMA_STREAM_6
  441. * @arg @ref LL_DMA_STREAM_7
  442. * @retval State of bit (1 or 0).
  443. */
  444. __STATIC_INLINE uint32_t LL_DMA_IsEnabledStream(DMA_TypeDef *DMAx, uint32_t Stream)
  445. {
  446. register uint32_t dma_base_addr = (uint32_t)DMAx;
  447. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_EN) == (DMA_SxCR_EN)) ? 1UL : 0UL);
  448. }
  449. /**
  450. * @brief Configure all parameters linked to DMA transfer.
  451. * @rmtoll CR DIR LL_DMA_ConfigTransfer\n
  452. * CR CIRC LL_DMA_ConfigTransfer\n
  453. * CR PINC LL_DMA_ConfigTransfer\n
  454. * CR MINC LL_DMA_ConfigTransfer\n
  455. * CR PSIZE LL_DMA_ConfigTransfer\n
  456. * CR MSIZE LL_DMA_ConfigTransfer\n
  457. * CR PL LL_DMA_ConfigTransfer\n
  458. * CR PFCTRL LL_DMA_ConfigTransfer
  459. * @param DMAx DMAx Instance
  460. * @param Stream This parameter can be one of the following values:
  461. * @arg @ref LL_DMA_STREAM_0
  462. * @arg @ref LL_DMA_STREAM_1
  463. * @arg @ref LL_DMA_STREAM_2
  464. * @arg @ref LL_DMA_STREAM_3
  465. * @arg @ref LL_DMA_STREAM_4
  466. * @arg @ref LL_DMA_STREAM_5
  467. * @arg @ref LL_DMA_STREAM_6
  468. * @arg @ref LL_DMA_STREAM_7
  469. * @param Configuration This parameter must be a combination of all the following values:
  470. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  471. * @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR or @ref LL_DMA_MODE_PFCTRL
  472. * @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT
  473. * @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT
  474. * @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD
  475. * @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD
  476. * @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH
  477. *@retval None
  478. */
  479. __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Configuration)
  480. {
  481. register uint32_t dma_base_addr = (uint32_t)DMAx;
  482. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR,
  483. DMA_SxCR_DIR | DMA_SxCR_CIRC | DMA_SxCR_PINC | DMA_SxCR_MINC | DMA_SxCR_PSIZE | DMA_SxCR_MSIZE | DMA_SxCR_PL | DMA_SxCR_PFCTRL,
  484. Configuration);
  485. }
  486. /**
  487. * @brief Set Data transfer direction (read from peripheral or from memory).
  488. * @rmtoll CR DIR LL_DMA_SetDataTransferDirection
  489. * @param DMAx DMAx Instance
  490. * @param Stream This parameter can be one of the following values:
  491. * @arg @ref LL_DMA_STREAM_0
  492. * @arg @ref LL_DMA_STREAM_1
  493. * @arg @ref LL_DMA_STREAM_2
  494. * @arg @ref LL_DMA_STREAM_3
  495. * @arg @ref LL_DMA_STREAM_4
  496. * @arg @ref LL_DMA_STREAM_5
  497. * @arg @ref LL_DMA_STREAM_6
  498. * @arg @ref LL_DMA_STREAM_7
  499. * @param Direction This parameter can be one of the following values:
  500. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  501. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  502. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  503. * @retval None
  504. */
  505. __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Direction)
  506. {
  507. register uint32_t dma_base_addr = (uint32_t)DMAx;
  508. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DIR, Direction);
  509. }
  510. /**
  511. * @brief Get Data transfer direction (read from peripheral or from memory).
  512. * @rmtoll CR DIR LL_DMA_GetDataTransferDirection
  513. * @param DMAx DMAx Instance
  514. * @param Stream This parameter can be one of the following values:
  515. * @arg @ref LL_DMA_STREAM_0
  516. * @arg @ref LL_DMA_STREAM_1
  517. * @arg @ref LL_DMA_STREAM_2
  518. * @arg @ref LL_DMA_STREAM_3
  519. * @arg @ref LL_DMA_STREAM_4
  520. * @arg @ref LL_DMA_STREAM_5
  521. * @arg @ref LL_DMA_STREAM_6
  522. * @arg @ref LL_DMA_STREAM_7
  523. * @retval Returned value can be one of the following values:
  524. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  525. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  526. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  527. */
  528. __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Stream)
  529. {
  530. register uint32_t dma_base_addr = (uint32_t)DMAx;
  531. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DIR));
  532. }
  533. /**
  534. * @brief Set DMA mode normal, circular or peripheral flow control.
  535. * @rmtoll CR CIRC LL_DMA_SetMode\n
  536. * CR PFCTRL LL_DMA_SetMode
  537. * @param DMAx DMAx Instance
  538. * @param Stream This parameter can be one of the following values:
  539. * @arg @ref LL_DMA_STREAM_0
  540. * @arg @ref LL_DMA_STREAM_1
  541. * @arg @ref LL_DMA_STREAM_2
  542. * @arg @ref LL_DMA_STREAM_3
  543. * @arg @ref LL_DMA_STREAM_4
  544. * @arg @ref LL_DMA_STREAM_5
  545. * @arg @ref LL_DMA_STREAM_6
  546. * @arg @ref LL_DMA_STREAM_7
  547. * @param Mode This parameter can be one of the following values:
  548. * @arg @ref LL_DMA_MODE_NORMAL
  549. * @arg @ref LL_DMA_MODE_CIRCULAR
  550. * @arg @ref LL_DMA_MODE_PFCTRL
  551. * @retval None
  552. */
  553. __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mode)
  554. {
  555. register uint32_t dma_base_addr = (uint32_t)DMAx;
  556. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL, Mode);
  557. }
  558. /**
  559. * @brief Get DMA mode normal, circular or peripheral flow control.
  560. * @rmtoll CR CIRC LL_DMA_GetMode\n
  561. * CR PFCTRL LL_DMA_GetMode
  562. * @param DMAx DMAx Instance
  563. * @param Stream This parameter can be one of the following values:
  564. * @arg @ref LL_DMA_STREAM_0
  565. * @arg @ref LL_DMA_STREAM_1
  566. * @arg @ref LL_DMA_STREAM_2
  567. * @arg @ref LL_DMA_STREAM_3
  568. * @arg @ref LL_DMA_STREAM_4
  569. * @arg @ref LL_DMA_STREAM_5
  570. * @arg @ref LL_DMA_STREAM_6
  571. * @arg @ref LL_DMA_STREAM_7
  572. * @retval Returned value can be one of the following values:
  573. * @arg @ref LL_DMA_MODE_NORMAL
  574. * @arg @ref LL_DMA_MODE_CIRCULAR
  575. * @arg @ref LL_DMA_MODE_PFCTRL
  576. */
  577. __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Stream)
  578. {
  579. register uint32_t dma_base_addr = (uint32_t)DMAx;
  580. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CIRC | DMA_SxCR_PFCTRL));
  581. }
  582. /**
  583. * @brief Set Peripheral increment mode.
  584. * @rmtoll CR PINC LL_DMA_SetPeriphIncMode
  585. * @param DMAx DMAx Instance
  586. * @param Stream This parameter can be one of the following values:
  587. * @arg @ref LL_DMA_STREAM_0
  588. * @arg @ref LL_DMA_STREAM_1
  589. * @arg @ref LL_DMA_STREAM_2
  590. * @arg @ref LL_DMA_STREAM_3
  591. * @arg @ref LL_DMA_STREAM_4
  592. * @arg @ref LL_DMA_STREAM_5
  593. * @arg @ref LL_DMA_STREAM_6
  594. * @arg @ref LL_DMA_STREAM_7
  595. * @param IncrementMode This parameter can be one of the following values:
  596. * @arg @ref LL_DMA_PERIPH_NOINCREMENT
  597. * @arg @ref LL_DMA_PERIPH_INCREMENT
  598. * @retval None
  599. */
  600. __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode)
  601. {
  602. register uint32_t dma_base_addr = (uint32_t)DMAx;
  603. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINC, IncrementMode);
  604. }
  605. /**
  606. * @brief Get Peripheral increment mode.
  607. * @rmtoll CR PINC LL_DMA_GetPeriphIncMode
  608. * @param DMAx DMAx Instance
  609. * @param Stream This parameter can be one of the following values:
  610. * @arg @ref LL_DMA_STREAM_0
  611. * @arg @ref LL_DMA_STREAM_1
  612. * @arg @ref LL_DMA_STREAM_2
  613. * @arg @ref LL_DMA_STREAM_3
  614. * @arg @ref LL_DMA_STREAM_4
  615. * @arg @ref LL_DMA_STREAM_5
  616. * @arg @ref LL_DMA_STREAM_6
  617. * @arg @ref LL_DMA_STREAM_7
  618. * @retval Returned value can be one of the following values:
  619. * @arg @ref LL_DMA_PERIPH_NOINCREMENT
  620. * @arg @ref LL_DMA_PERIPH_INCREMENT
  621. */
  622. __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Stream)
  623. {
  624. register uint32_t dma_base_addr = (uint32_t)DMAx;
  625. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINC));
  626. }
  627. /**
  628. * @brief Set Memory increment mode.
  629. * @rmtoll CR MINC LL_DMA_SetMemoryIncMode
  630. * @param DMAx DMAx Instance
  631. * @param Stream This parameter can be one of the following values:
  632. * @arg @ref LL_DMA_STREAM_0
  633. * @arg @ref LL_DMA_STREAM_1
  634. * @arg @ref LL_DMA_STREAM_2
  635. * @arg @ref LL_DMA_STREAM_3
  636. * @arg @ref LL_DMA_STREAM_4
  637. * @arg @ref LL_DMA_STREAM_5
  638. * @arg @ref LL_DMA_STREAM_6
  639. * @arg @ref LL_DMA_STREAM_7
  640. * @param IncrementMode This parameter can be one of the following values:
  641. * @arg @ref LL_DMA_MEMORY_NOINCREMENT
  642. * @arg @ref LL_DMA_MEMORY_INCREMENT
  643. * @retval None
  644. */
  645. __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t IncrementMode)
  646. {
  647. register uint32_t dma_base_addr = (uint32_t)DMAx;
  648. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MINC, IncrementMode);
  649. }
  650. /**
  651. * @brief Get Memory increment mode.
  652. * @rmtoll CR MINC LL_DMA_GetMemoryIncMode
  653. * @param DMAx DMAx Instance
  654. * @param Stream This parameter can be one of the following values:
  655. * @arg @ref LL_DMA_STREAM_0
  656. * @arg @ref LL_DMA_STREAM_1
  657. * @arg @ref LL_DMA_STREAM_2
  658. * @arg @ref LL_DMA_STREAM_3
  659. * @arg @ref LL_DMA_STREAM_4
  660. * @arg @ref LL_DMA_STREAM_5
  661. * @arg @ref LL_DMA_STREAM_6
  662. * @arg @ref LL_DMA_STREAM_7
  663. * @retval Returned value can be one of the following values:
  664. * @arg @ref LL_DMA_MEMORY_NOINCREMENT
  665. * @arg @ref LL_DMA_MEMORY_INCREMENT
  666. */
  667. __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Stream)
  668. {
  669. register uint32_t dma_base_addr = (uint32_t)DMAx;
  670. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MINC));
  671. }
  672. /**
  673. * @brief Set Peripheral size.
  674. * @rmtoll CR PSIZE LL_DMA_SetPeriphSize
  675. * @param DMAx DMAx Instance
  676. * @param Stream This parameter can be one of the following values:
  677. * @arg @ref LL_DMA_STREAM_0
  678. * @arg @ref LL_DMA_STREAM_1
  679. * @arg @ref LL_DMA_STREAM_2
  680. * @arg @ref LL_DMA_STREAM_3
  681. * @arg @ref LL_DMA_STREAM_4
  682. * @arg @ref LL_DMA_STREAM_5
  683. * @arg @ref LL_DMA_STREAM_6
  684. * @arg @ref LL_DMA_STREAM_7
  685. * @param Size This parameter can be one of the following values:
  686. * @arg @ref LL_DMA_PDATAALIGN_BYTE
  687. * @arg @ref LL_DMA_PDATAALIGN_HALFWORD
  688. * @arg @ref LL_DMA_PDATAALIGN_WORD
  689. * @retval None
  690. */
  691. __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size)
  692. {
  693. register uint32_t dma_base_addr = (uint32_t)DMAx;
  694. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PSIZE, Size);
  695. }
  696. /**
  697. * @brief Get Peripheral size.
  698. * @rmtoll CR PSIZE LL_DMA_GetPeriphSize
  699. * @param DMAx DMAx Instance
  700. * @param Stream This parameter can be one of the following values:
  701. * @arg @ref LL_DMA_STREAM_0
  702. * @arg @ref LL_DMA_STREAM_1
  703. * @arg @ref LL_DMA_STREAM_2
  704. * @arg @ref LL_DMA_STREAM_3
  705. * @arg @ref LL_DMA_STREAM_4
  706. * @arg @ref LL_DMA_STREAM_5
  707. * @arg @ref LL_DMA_STREAM_6
  708. * @arg @ref LL_DMA_STREAM_7
  709. * @retval Returned value can be one of the following values:
  710. * @arg @ref LL_DMA_PDATAALIGN_BYTE
  711. * @arg @ref LL_DMA_PDATAALIGN_HALFWORD
  712. * @arg @ref LL_DMA_PDATAALIGN_WORD
  713. */
  714. __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Stream)
  715. {
  716. register uint32_t dma_base_addr = (uint32_t)DMAx;
  717. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PSIZE));
  718. }
  719. /**
  720. * @brief Set Memory size.
  721. * @rmtoll CR MSIZE LL_DMA_SetMemorySize
  722. * @param DMAx DMAx Instance
  723. * @param Stream This parameter can be one of the following values:
  724. * @arg @ref LL_DMA_STREAM_0
  725. * @arg @ref LL_DMA_STREAM_1
  726. * @arg @ref LL_DMA_STREAM_2
  727. * @arg @ref LL_DMA_STREAM_3
  728. * @arg @ref LL_DMA_STREAM_4
  729. * @arg @ref LL_DMA_STREAM_5
  730. * @arg @ref LL_DMA_STREAM_6
  731. * @arg @ref LL_DMA_STREAM_7
  732. * @param Size This parameter can be one of the following values:
  733. * @arg @ref LL_DMA_MDATAALIGN_BYTE
  734. * @arg @ref LL_DMA_MDATAALIGN_HALFWORD
  735. * @arg @ref LL_DMA_MDATAALIGN_WORD
  736. * @retval None
  737. */
  738. __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Size)
  739. {
  740. register uint32_t dma_base_addr = (uint32_t)DMAx;
  741. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MSIZE, Size);
  742. }
  743. /**
  744. * @brief Get Memory size.
  745. * @rmtoll CR MSIZE LL_DMA_GetMemorySize
  746. * @param DMAx DMAx Instance
  747. * @param Stream This parameter can be one of the following values:
  748. * @arg @ref LL_DMA_STREAM_0
  749. * @arg @ref LL_DMA_STREAM_1
  750. * @arg @ref LL_DMA_STREAM_2
  751. * @arg @ref LL_DMA_STREAM_3
  752. * @arg @ref LL_DMA_STREAM_4
  753. * @arg @ref LL_DMA_STREAM_5
  754. * @arg @ref LL_DMA_STREAM_6
  755. * @arg @ref LL_DMA_STREAM_7
  756. * @retval Returned value can be one of the following values:
  757. * @arg @ref LL_DMA_MDATAALIGN_BYTE
  758. * @arg @ref LL_DMA_MDATAALIGN_HALFWORD
  759. * @arg @ref LL_DMA_MDATAALIGN_WORD
  760. */
  761. __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Stream)
  762. {
  763. register uint32_t dma_base_addr = (uint32_t)DMAx;
  764. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MSIZE));
  765. }
  766. /**
  767. * @brief Set Peripheral increment offset size.
  768. * @rmtoll CR PINCOS LL_DMA_SetIncOffsetSize
  769. * @param DMAx DMAx Instance
  770. * @param Stream This parameter can be one of the following values:
  771. * @arg @ref LL_DMA_STREAM_0
  772. * @arg @ref LL_DMA_STREAM_1
  773. * @arg @ref LL_DMA_STREAM_2
  774. * @arg @ref LL_DMA_STREAM_3
  775. * @arg @ref LL_DMA_STREAM_4
  776. * @arg @ref LL_DMA_STREAM_5
  777. * @arg @ref LL_DMA_STREAM_6
  778. * @arg @ref LL_DMA_STREAM_7
  779. * @param OffsetSize This parameter can be one of the following values:
  780. * @arg @ref LL_DMA_OFFSETSIZE_PSIZE
  781. * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4
  782. * @retval None
  783. */
  784. __STATIC_INLINE void LL_DMA_SetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t OffsetSize)
  785. {
  786. register uint32_t dma_base_addr = (uint32_t)DMAx;
  787. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINCOS, OffsetSize);
  788. }
  789. /**
  790. * @brief Get Peripheral increment offset size.
  791. * @rmtoll CR PINCOS LL_DMA_GetIncOffsetSize
  792. * @param DMAx DMAx Instance
  793. * @param Stream This parameter can be one of the following values:
  794. * @arg @ref LL_DMA_STREAM_0
  795. * @arg @ref LL_DMA_STREAM_1
  796. * @arg @ref LL_DMA_STREAM_2
  797. * @arg @ref LL_DMA_STREAM_3
  798. * @arg @ref LL_DMA_STREAM_4
  799. * @arg @ref LL_DMA_STREAM_5
  800. * @arg @ref LL_DMA_STREAM_6
  801. * @arg @ref LL_DMA_STREAM_7
  802. * @retval Returned value can be one of the following values:
  803. * @arg @ref LL_DMA_OFFSETSIZE_PSIZE
  804. * @arg @ref LL_DMA_OFFSETSIZE_FIXEDTO4
  805. */
  806. __STATIC_INLINE uint32_t LL_DMA_GetIncOffsetSize(DMA_TypeDef *DMAx, uint32_t Stream)
  807. {
  808. register uint32_t dma_base_addr = (uint32_t)DMAx;
  809. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PINCOS));
  810. }
  811. /**
  812. * @brief Set Stream priority level.
  813. * @rmtoll CR PL LL_DMA_SetStreamPriorityLevel
  814. * @param DMAx DMAx Instance
  815. * @param Stream This parameter can be one of the following values:
  816. * @arg @ref LL_DMA_STREAM_0
  817. * @arg @ref LL_DMA_STREAM_1
  818. * @arg @ref LL_DMA_STREAM_2
  819. * @arg @ref LL_DMA_STREAM_3
  820. * @arg @ref LL_DMA_STREAM_4
  821. * @arg @ref LL_DMA_STREAM_5
  822. * @arg @ref LL_DMA_STREAM_6
  823. * @arg @ref LL_DMA_STREAM_7
  824. * @param Priority This parameter can be one of the following values:
  825. * @arg @ref LL_DMA_PRIORITY_LOW
  826. * @arg @ref LL_DMA_PRIORITY_MEDIUM
  827. * @arg @ref LL_DMA_PRIORITY_HIGH
  828. * @arg @ref LL_DMA_PRIORITY_VERYHIGH
  829. * @retval None
  830. */
  831. __STATIC_INLINE void LL_DMA_SetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Priority)
  832. {
  833. register uint32_t dma_base_addr = (uint32_t)DMAx;
  834. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PL, Priority);
  835. }
  836. /**
  837. * @brief Get Stream priority level.
  838. * @rmtoll CR PL LL_DMA_GetStreamPriorityLevel
  839. * @param DMAx DMAx Instance
  840. * @param Stream This parameter can be one of the following values:
  841. * @arg @ref LL_DMA_STREAM_0
  842. * @arg @ref LL_DMA_STREAM_1
  843. * @arg @ref LL_DMA_STREAM_2
  844. * @arg @ref LL_DMA_STREAM_3
  845. * @arg @ref LL_DMA_STREAM_4
  846. * @arg @ref LL_DMA_STREAM_5
  847. * @arg @ref LL_DMA_STREAM_6
  848. * @arg @ref LL_DMA_STREAM_7
  849. * @retval Returned value can be one of the following values:
  850. * @arg @ref LL_DMA_PRIORITY_LOW
  851. * @arg @ref LL_DMA_PRIORITY_MEDIUM
  852. * @arg @ref LL_DMA_PRIORITY_HIGH
  853. * @arg @ref LL_DMA_PRIORITY_VERYHIGH
  854. */
  855. __STATIC_INLINE uint32_t LL_DMA_GetStreamPriorityLevel(DMA_TypeDef *DMAx, uint32_t Stream)
  856. {
  857. register uint32_t dma_base_addr = (uint32_t)DMAx;
  858. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PL));
  859. }
  860. /**
  861. * @brief Set Number of data to transfer.
  862. * @rmtoll NDTR NDT LL_DMA_SetDataLength
  863. * @note This action has no effect if
  864. * stream is enabled.
  865. * @param DMAx DMAx Instance
  866. * @param Stream This parameter can be one of the following values:
  867. * @arg @ref LL_DMA_STREAM_0
  868. * @arg @ref LL_DMA_STREAM_1
  869. * @arg @ref LL_DMA_STREAM_2
  870. * @arg @ref LL_DMA_STREAM_3
  871. * @arg @ref LL_DMA_STREAM_4
  872. * @arg @ref LL_DMA_STREAM_5
  873. * @arg @ref LL_DMA_STREAM_6
  874. * @arg @ref LL_DMA_STREAM_7
  875. * @param NbData Between 0 to 0xFFFFFFFF
  876. * @retval None
  877. */
  878. __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t NbData)
  879. {
  880. register uint32_t dma_base_addr = (uint32_t)DMAx;
  881. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->NDTR, DMA_SxNDT, NbData);
  882. }
  883. /**
  884. * @brief Get Number of data to transfer.
  885. * @rmtoll NDTR NDT LL_DMA_GetDataLength
  886. * @note Once the stream is enabled, the return value indicate the
  887. * remaining bytes to be transmitted.
  888. * @param DMAx DMAx Instance
  889. * @param Stream This parameter can be one of the following values:
  890. * @arg @ref LL_DMA_STREAM_0
  891. * @arg @ref LL_DMA_STREAM_1
  892. * @arg @ref LL_DMA_STREAM_2
  893. * @arg @ref LL_DMA_STREAM_3
  894. * @arg @ref LL_DMA_STREAM_4
  895. * @arg @ref LL_DMA_STREAM_5
  896. * @arg @ref LL_DMA_STREAM_6
  897. * @arg @ref LL_DMA_STREAM_7
  898. * @retval Between 0 to 0xFFFFFFFF
  899. */
  900. __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Stream)
  901. {
  902. register uint32_t dma_base_addr = (uint32_t)DMAx;
  903. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->NDTR, DMA_SxNDT));
  904. }
  905. /**
  906. * @brief Set DMA request for DMA Streams on DMAMUX Channel x.
  907. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  908. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  909. * @rmtoll CxCR DMAREQ_ID LL_DMA_SetPeriphRequest
  910. * @param DMAx DMAx Instance
  911. * @param Stream This parameter can be one of the following values:
  912. * @arg @ref LL_DMA_STREAM_0
  913. * @arg @ref LL_DMA_STREAM_1
  914. * @arg @ref LL_DMA_STREAM_2
  915. * @arg @ref LL_DMA_STREAM_3
  916. * @arg @ref LL_DMA_STREAM_4
  917. * @arg @ref LL_DMA_STREAM_5
  918. * @arg @ref LL_DMA_STREAM_6
  919. * @arg @ref LL_DMA_STREAM_7
  920. * @param Request This parameter can be one of the following values:
  921. * @arg @ref LL_DMAMUX1_REQ_MEM2MEM
  922. * @arg @ref LL_DMAMUX1_REQ_GENERATOR0
  923. * @arg @ref LL_DMAMUX1_REQ_GENERATOR1
  924. * @arg @ref LL_DMAMUX1_REQ_GENERATOR2
  925. * @arg @ref LL_DMAMUX1_REQ_GENERATOR3
  926. * @arg @ref LL_DMAMUX1_REQ_GENERATOR4
  927. * @arg @ref LL_DMAMUX1_REQ_GENERATOR5
  928. * @arg @ref LL_DMAMUX1_REQ_GENERATOR6
  929. * @arg @ref LL_DMAMUX1_REQ_GENERATOR7
  930. * @arg @ref LL_DMAMUX1_REQ_ADC1
  931. * @arg @ref LL_DMAMUX1_REQ_ADC2
  932. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
  933. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
  934. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
  935. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
  936. * @arg @ref LL_DMAMUX1_REQ_TIM1_UP
  937. * @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
  938. * @arg @ref LL_DMAMUX1_REQ_TIM1_COM
  939. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
  940. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
  941. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
  942. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
  943. * @arg @ref LL_DMAMUX1_REQ_TIM2_UP
  944. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
  945. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
  946. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
  947. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
  948. * @arg @ref LL_DMAMUX1_REQ_TIM3_UP
  949. * @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
  950. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
  951. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
  952. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
  953. * @arg @ref LL_DMAMUX1_REQ_TIM4_UP
  954. * @arg @ref LL_DMAMUX1_REQ_I2C1_RX
  955. * @arg @ref LL_DMAMUX1_REQ_I2C1_TX
  956. * @arg @ref LL_DMAMUX1_REQ_I2C2_RX
  957. * @arg @ref LL_DMAMUX1_REQ_I2C2_TX
  958. * @arg @ref LL_DMAMUX1_REQ_SPI1_RX
  959. * @arg @ref LL_DMAMUX1_REQ_SPI1_TX
  960. * @arg @ref LL_DMAMUX1_REQ_SPI2_RX
  961. * @arg @ref LL_DMAMUX1_REQ_SPI2_TX
  962. * @arg @ref LL_DMAMUX1_REQ_USART1_RX
  963. * @arg @ref LL_DMAMUX1_REQ_USART1_TX
  964. * @arg @ref LL_DMAMUX1_REQ_USART2_RX
  965. * @arg @ref LL_DMAMUX1_REQ_USART2_TX
  966. * @arg @ref LL_DMAMUX1_REQ_USART3_RX
  967. * @arg @ref LL_DMAMUX1_REQ_USART3_TX
  968. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
  969. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
  970. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
  971. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
  972. * @arg @ref LL_DMAMUX1_REQ_TIM8_UP
  973. * @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
  974. * @arg @ref LL_DMAMUX1_REQ_TIM8_COM
  975. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
  976. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
  977. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
  978. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
  979. * @arg @ref LL_DMAMUX1_REQ_TIM5_UP
  980. * @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
  981. * @arg @ref LL_DMAMUX1_REQ_SPI3_RX
  982. * @arg @ref LL_DMAMUX1_REQ_SPI3_TX
  983. * @arg @ref LL_DMAMUX1_REQ_UART4_RX
  984. * @arg @ref LL_DMAMUX1_REQ_UART4_TX
  985. * @arg @ref LL_DMAMUX1_REQ_UART5_RX
  986. * @arg @ref LL_DMAMUX1_REQ_UART5_TX
  987. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
  988. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
  989. * @arg @ref LL_DMAMUX1_REQ_TIM6_UP
  990. * @arg @ref LL_DMAMUX1_REQ_TIM7_UP
  991. * @arg @ref LL_DMAMUX1_REQ_USART6_RX
  992. * @arg @ref LL_DMAMUX1_REQ_USART6_TX
  993. * @arg @ref LL_DMAMUX1_REQ_I2C3_RX
  994. * @arg @ref LL_DMAMUX1_REQ_I2C3_TX
  995. * @arg @ref LL_DMAMUX1_REQ_DCMI
  996. * @arg @ref LL_DMAMUX1_REQ_CRYP_IN
  997. * @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
  998. * @arg @ref LL_DMAMUX1_REQ_HASH_IN
  999. * @arg @ref LL_DMAMUX1_REQ_UART7_RX
  1000. * @arg @ref LL_DMAMUX1_REQ_UART7_TX
  1001. * @arg @ref LL_DMAMUX1_REQ_UART8_RX
  1002. * @arg @ref LL_DMAMUX1_REQ_UART8_TX
  1003. * @arg @ref LL_DMAMUX1_REQ_SPI4_RX
  1004. * @arg @ref LL_DMAMUX1_REQ_SPI4_TX
  1005. * @arg @ref LL_DMAMUX1_REQ_SPI5_RX
  1006. * @arg @ref LL_DMAMUX1_REQ_SPI5_TX
  1007. * @arg @ref LL_DMAMUX1_REQ_SAI1_A
  1008. * @arg @ref LL_DMAMUX1_REQ_SAI1_B
  1009. * @arg @ref LL_DMAMUX1_REQ_SAI2_A
  1010. * @arg @ref LL_DMAMUX1_REQ_SAI2_B
  1011. * @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
  1012. * @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
  1013. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
  1014. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
  1015. * @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER
  1016. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A
  1017. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B
  1018. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C
  1019. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D
  1020. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E
  1021. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
  1022. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
  1023. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
  1024. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
  1025. * @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
  1026. * @arg @ref LL_DMAMUX1_REQ_TIM15_UP
  1027. * @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
  1028. * @arg @ref LL_DMAMUX1_REQ_TIM15_COM
  1029. * @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
  1030. * @arg @ref LL_DMAMUX1_REQ_TIM16_UP
  1031. * @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
  1032. * @arg @ref LL_DMAMUX1_REQ_TIM17_UP
  1033. * @arg @ref LL_DMAMUX1_REQ_SAI3_A
  1034. * @arg @ref LL_DMAMUX1_REQ_SAI3_B
  1035. * @arg @ref LL_DMAMUX1_REQ_ADC3
  1036. * @retval None
  1037. */
  1038. __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Request)
  1039. {
  1040. MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
  1041. }
  1042. /**
  1043. * @brief Get DMA request for DMA Channels on DMAMUX Channel x.
  1044. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  1045. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  1046. * @rmtoll CxCR DMAREQ_ID LL_DMA_GetPeriphRequest
  1047. * @param DMAx DMAx Instance
  1048. * @param Stream This parameter can be one of the following values:
  1049. * @arg @ref LL_DMA_STREAM_0
  1050. * @arg @ref LL_DMA_STREAM_1
  1051. * @arg @ref LL_DMA_STREAM_2
  1052. * @arg @ref LL_DMA_STREAM_3
  1053. * @arg @ref LL_DMA_STREAM_4
  1054. * @arg @ref LL_DMA_STREAM_5
  1055. * @arg @ref LL_DMA_STREAM_6
  1056. * @arg @ref LL_DMA_STREAM_7
  1057. * @retval Returned value can be one of the following values:
  1058. * @arg @ref LL_DMAMUX1_REQ_MEM2MEM
  1059. * @arg @ref LL_DMAMUX1_REQ_GENERATOR0
  1060. * @arg @ref LL_DMAMUX1_REQ_GENERATOR1
  1061. * @arg @ref LL_DMAMUX1_REQ_GENERATOR2
  1062. * @arg @ref LL_DMAMUX1_REQ_GENERATOR3
  1063. * @arg @ref LL_DMAMUX1_REQ_GENERATOR4
  1064. * @arg @ref LL_DMAMUX1_REQ_GENERATOR5
  1065. * @arg @ref LL_DMAMUX1_REQ_GENERATOR6
  1066. * @arg @ref LL_DMAMUX1_REQ_GENERATOR7
  1067. * @arg @ref LL_DMAMUX1_REQ_ADC1
  1068. * @arg @ref LL_DMAMUX1_REQ_ADC2
  1069. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
  1070. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
  1071. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
  1072. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
  1073. * @arg @ref LL_DMAMUX1_REQ_TIM1_UP
  1074. * @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
  1075. * @arg @ref LL_DMAMUX1_REQ_TIM1_COM
  1076. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
  1077. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
  1078. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
  1079. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
  1080. * @arg @ref LL_DMAMUX1_REQ_TIM2_UP
  1081. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
  1082. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
  1083. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
  1084. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
  1085. * @arg @ref LL_DMAMUX1_REQ_TIM3_UP
  1086. * @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
  1087. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
  1088. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
  1089. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
  1090. * @arg @ref LL_DMAMUX1_REQ_TIM4_UP
  1091. * @arg @ref LL_DMAMUX1_REQ_I2C1_RX
  1092. * @arg @ref LL_DMAMUX1_REQ_I2C1_TX
  1093. * @arg @ref LL_DMAMUX1_REQ_I2C2_RX
  1094. * @arg @ref LL_DMAMUX1_REQ_I2C2_TX
  1095. * @arg @ref LL_DMAMUX1_REQ_SPI1_RX
  1096. * @arg @ref LL_DMAMUX1_REQ_SPI1_TX
  1097. * @arg @ref LL_DMAMUX1_REQ_SPI2_RX
  1098. * @arg @ref LL_DMAMUX1_REQ_SPI2_TX
  1099. * @arg @ref LL_DMAMUX1_REQ_USART1_RX
  1100. * @arg @ref LL_DMAMUX1_REQ_USART1_TX
  1101. * @arg @ref LL_DMAMUX1_REQ_USART2_RX
  1102. * @arg @ref LL_DMAMUX1_REQ_USART2_TX
  1103. * @arg @ref LL_DMAMUX1_REQ_USART3_RX
  1104. * @arg @ref LL_DMAMUX1_REQ_USART3_TX
  1105. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
  1106. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
  1107. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
  1108. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
  1109. * @arg @ref LL_DMAMUX1_REQ_TIM8_UP
  1110. * @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
  1111. * @arg @ref LL_DMAMUX1_REQ_TIM8_COM
  1112. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
  1113. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
  1114. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
  1115. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
  1116. * @arg @ref LL_DMAMUX1_REQ_TIM5_UP
  1117. * @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
  1118. * @arg @ref LL_DMAMUX1_REQ_SPI3_RX
  1119. * @arg @ref LL_DMAMUX1_REQ_SPI3_TX
  1120. * @arg @ref LL_DMAMUX1_REQ_UART4_RX
  1121. * @arg @ref LL_DMAMUX1_REQ_UART4_TX
  1122. * @arg @ref LL_DMAMUX1_REQ_UART5_RX
  1123. * @arg @ref LL_DMAMUX1_REQ_UART5_TX
  1124. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
  1125. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
  1126. * @arg @ref LL_DMAMUX1_REQ_TIM6_UP
  1127. * @arg @ref LL_DMAMUX1_REQ_TIM7_UP
  1128. * @arg @ref LL_DMAMUX1_REQ_USART6_RX
  1129. * @arg @ref LL_DMAMUX1_REQ_USART6_TX
  1130. * @arg @ref LL_DMAMUX1_REQ_I2C3_RX
  1131. * @arg @ref LL_DMAMUX1_REQ_I2C3_TX
  1132. * @arg @ref LL_DMAMUX1_REQ_DCMI
  1133. * @arg @ref LL_DMAMUX1_REQ_CRYP_IN
  1134. * @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
  1135. * @arg @ref LL_DMAMUX1_REQ_HASH_IN
  1136. * @arg @ref LL_DMAMUX1_REQ_UART7_RX
  1137. * @arg @ref LL_DMAMUX1_REQ_UART7_TX
  1138. * @arg @ref LL_DMAMUX1_REQ_UART8_RX
  1139. * @arg @ref LL_DMAMUX1_REQ_UART8_TX
  1140. * @arg @ref LL_DMAMUX1_REQ_SPI4_RX
  1141. * @arg @ref LL_DMAMUX1_REQ_SPI4_TX
  1142. * @arg @ref LL_DMAMUX1_REQ_SPI5_RX
  1143. * @arg @ref LL_DMAMUX1_REQ_SPI5_TX
  1144. * @arg @ref LL_DMAMUX1_REQ_SAI1_A
  1145. * @arg @ref LL_DMAMUX1_REQ_SAI1_B
  1146. * @arg @ref LL_DMAMUX1_REQ_SAI2_A
  1147. * @arg @ref LL_DMAMUX1_REQ_SAI2_B
  1148. * @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
  1149. * @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
  1150. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
  1151. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
  1152. * @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER
  1153. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A
  1154. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B
  1155. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C
  1156. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D
  1157. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E
  1158. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
  1159. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
  1160. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
  1161. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
  1162. * @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
  1163. * @arg @ref LL_DMAMUX1_REQ_TIM15_UP
  1164. * @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
  1165. * @arg @ref LL_DMAMUX1_REQ_TIM15_COM
  1166. * @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
  1167. * @arg @ref LL_DMAMUX1_REQ_TIM16_UP
  1168. * @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
  1169. * @arg @ref LL_DMAMUX1_REQ_TIM17_UP
  1170. * @arg @ref LL_DMAMUX1_REQ_SAI3_A
  1171. * @arg @ref LL_DMAMUX1_REQ_SAI3_B
  1172. * @arg @ref LL_DMAMUX1_REQ_ADC3
  1173. */
  1174. __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream)
  1175. {
  1176. return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX1_Channel0 + (DMAMUX_CCR_SIZE * (Stream)) + (uint32_t)(DMAMUX_CCR_SIZE * LL_DMA_INSTANCE_TO_DMAMUX_CHANNEL(DMAx)))))->CCR, DMAMUX_CxCR_DMAREQ_ID));
  1177. }
  1178. /**
  1179. * @brief Set Memory burst transfer configuration.
  1180. * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer
  1181. * @param DMAx DMAx Instance
  1182. * @param Stream This parameter can be one of the following values:
  1183. * @arg @ref LL_DMA_STREAM_0
  1184. * @arg @ref LL_DMA_STREAM_1
  1185. * @arg @ref LL_DMA_STREAM_2
  1186. * @arg @ref LL_DMA_STREAM_3
  1187. * @arg @ref LL_DMA_STREAM_4
  1188. * @arg @ref LL_DMA_STREAM_5
  1189. * @arg @ref LL_DMA_STREAM_6
  1190. * @arg @ref LL_DMA_STREAM_7
  1191. * @param Mburst This parameter can be one of the following values:
  1192. * @arg @ref LL_DMA_MBURST_SINGLE
  1193. * @arg @ref LL_DMA_MBURST_INC4
  1194. * @arg @ref LL_DMA_MBURST_INC8
  1195. * @arg @ref LL_DMA_MBURST_INC16
  1196. * @retval None
  1197. */
  1198. __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst)
  1199. {
  1200. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1201. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST, Mburst);
  1202. }
  1203. /**
  1204. * @brief Get Memory burst transfer configuration.
  1205. * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer
  1206. * @param DMAx DMAx Instance
  1207. * @param Stream This parameter can be one of the following values:
  1208. * @arg @ref LL_DMA_STREAM_0
  1209. * @arg @ref LL_DMA_STREAM_1
  1210. * @arg @ref LL_DMA_STREAM_2
  1211. * @arg @ref LL_DMA_STREAM_3
  1212. * @arg @ref LL_DMA_STREAM_4
  1213. * @arg @ref LL_DMA_STREAM_5
  1214. * @arg @ref LL_DMA_STREAM_6
  1215. * @arg @ref LL_DMA_STREAM_7
  1216. * @retval Returned value can be one of the following values:
  1217. * @arg @ref LL_DMA_MBURST_SINGLE
  1218. * @arg @ref LL_DMA_MBURST_INC4
  1219. * @arg @ref LL_DMA_MBURST_INC8
  1220. * @arg @ref LL_DMA_MBURST_INC16
  1221. */
  1222. __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
  1223. {
  1224. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1225. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST));
  1226. }
  1227. /**
  1228. * @brief Set Peripheral burst transfer configuration.
  1229. * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer
  1230. * @param DMAx DMAx Instance
  1231. * @param Stream This parameter can be one of the following values:
  1232. * @arg @ref LL_DMA_STREAM_0
  1233. * @arg @ref LL_DMA_STREAM_1
  1234. * @arg @ref LL_DMA_STREAM_2
  1235. * @arg @ref LL_DMA_STREAM_3
  1236. * @arg @ref LL_DMA_STREAM_4
  1237. * @arg @ref LL_DMA_STREAM_5
  1238. * @arg @ref LL_DMA_STREAM_6
  1239. * @arg @ref LL_DMA_STREAM_7
  1240. * @param Pburst This parameter can be one of the following values:
  1241. * @arg @ref LL_DMA_PBURST_SINGLE
  1242. * @arg @ref LL_DMA_PBURST_INC4
  1243. * @arg @ref LL_DMA_PBURST_INC8
  1244. * @arg @ref LL_DMA_PBURST_INC16
  1245. * @retval None
  1246. */
  1247. __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst)
  1248. {
  1249. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1250. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST, Pburst);
  1251. }
  1252. /**
  1253. * @brief Get Peripheral burst transfer configuration.
  1254. * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer
  1255. * @param DMAx DMAx Instance
  1256. * @param Stream This parameter can be one of the following values:
  1257. * @arg @ref LL_DMA_STREAM_0
  1258. * @arg @ref LL_DMA_STREAM_1
  1259. * @arg @ref LL_DMA_STREAM_2
  1260. * @arg @ref LL_DMA_STREAM_3
  1261. * @arg @ref LL_DMA_STREAM_4
  1262. * @arg @ref LL_DMA_STREAM_5
  1263. * @arg @ref LL_DMA_STREAM_6
  1264. * @arg @ref LL_DMA_STREAM_7
  1265. * @retval Returned value can be one of the following values:
  1266. * @arg @ref LL_DMA_PBURST_SINGLE
  1267. * @arg @ref LL_DMA_PBURST_INC4
  1268. * @arg @ref LL_DMA_PBURST_INC8
  1269. * @arg @ref LL_DMA_PBURST_INC16
  1270. */
  1271. __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
  1272. {
  1273. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1274. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST));
  1275. }
  1276. /**
  1277. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  1278. * @rmtoll CR CT LL_DMA_SetCurrentTargetMem
  1279. * @param DMAx DMAx Instance
  1280. * @param Stream This parameter can be one of the following values:
  1281. * @arg @ref LL_DMA_STREAM_0
  1282. * @arg @ref LL_DMA_STREAM_1
  1283. * @arg @ref LL_DMA_STREAM_2
  1284. * @arg @ref LL_DMA_STREAM_3
  1285. * @arg @ref LL_DMA_STREAM_4
  1286. * @arg @ref LL_DMA_STREAM_5
  1287. * @arg @ref LL_DMA_STREAM_6
  1288. * @arg @ref LL_DMA_STREAM_7
  1289. * @param CurrentMemory This parameter can be one of the following values:
  1290. * @arg @ref LL_DMA_CURRENTTARGETMEM0
  1291. * @arg @ref LL_DMA_CURRENTTARGETMEM1
  1292. * @retval None
  1293. */
  1294. __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory)
  1295. {
  1296. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1297. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT, CurrentMemory);
  1298. }
  1299. /**
  1300. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  1301. * @rmtoll CR CT LL_DMA_GetCurrentTargetMem
  1302. * @param DMAx DMAx Instance
  1303. * @param Stream This parameter can be one of the following values:
  1304. * @arg @ref LL_DMA_STREAM_0
  1305. * @arg @ref LL_DMA_STREAM_1
  1306. * @arg @ref LL_DMA_STREAM_2
  1307. * @arg @ref LL_DMA_STREAM_3
  1308. * @arg @ref LL_DMA_STREAM_4
  1309. * @arg @ref LL_DMA_STREAM_5
  1310. * @arg @ref LL_DMA_STREAM_6
  1311. * @arg @ref LL_DMA_STREAM_7
  1312. * @retval Returned value can be one of the following values:
  1313. * @arg @ref LL_DMA_CURRENTTARGETMEM0
  1314. * @arg @ref LL_DMA_CURRENTTARGETMEM1
  1315. */
  1316. __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream)
  1317. {
  1318. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1319. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT));
  1320. }
  1321. /**
  1322. * @brief Enable the double buffer mode.
  1323. * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode
  1324. * @param DMAx DMAx Instance
  1325. * @param Stream This parameter can be one of the following values:
  1326. * @arg @ref LL_DMA_STREAM_0
  1327. * @arg @ref LL_DMA_STREAM_1
  1328. * @arg @ref LL_DMA_STREAM_2
  1329. * @arg @ref LL_DMA_STREAM_3
  1330. * @arg @ref LL_DMA_STREAM_4
  1331. * @arg @ref LL_DMA_STREAM_5
  1332. * @arg @ref LL_DMA_STREAM_6
  1333. * @arg @ref LL_DMA_STREAM_7
  1334. * @retval None
  1335. */
  1336. __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1337. {
  1338. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1339. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
  1340. }
  1341. /**
  1342. * @brief Disable the double buffer mode.
  1343. * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode
  1344. * @param DMAx DMAx Instance
  1345. * @param Stream This parameter can be one of the following values:
  1346. * @arg @ref LL_DMA_STREAM_0
  1347. * @arg @ref LL_DMA_STREAM_1
  1348. * @arg @ref LL_DMA_STREAM_2
  1349. * @arg @ref LL_DMA_STREAM_3
  1350. * @arg @ref LL_DMA_STREAM_4
  1351. * @arg @ref LL_DMA_STREAM_5
  1352. * @arg @ref LL_DMA_STREAM_6
  1353. * @arg @ref LL_DMA_STREAM_7
  1354. * @retval None
  1355. */
  1356. __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1357. {
  1358. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1359. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
  1360. }
  1361. /**
  1362. * @brief Get FIFO status.
  1363. * @rmtoll FCR FS LL_DMA_GetFIFOStatus
  1364. * @param DMAx DMAx Instance
  1365. * @param Stream This parameter can be one of the following values:
  1366. * @arg @ref LL_DMA_STREAM_0
  1367. * @arg @ref LL_DMA_STREAM_1
  1368. * @arg @ref LL_DMA_STREAM_2
  1369. * @arg @ref LL_DMA_STREAM_3
  1370. * @arg @ref LL_DMA_STREAM_4
  1371. * @arg @ref LL_DMA_STREAM_5
  1372. * @arg @ref LL_DMA_STREAM_6
  1373. * @arg @ref LL_DMA_STREAM_7
  1374. * @retval Returned value can be one of the following values:
  1375. * @arg @ref LL_DMA_FIFOSTATUS_0_25
  1376. * @arg @ref LL_DMA_FIFOSTATUS_25_50
  1377. * @arg @ref LL_DMA_FIFOSTATUS_50_75
  1378. * @arg @ref LL_DMA_FIFOSTATUS_75_100
  1379. * @arg @ref LL_DMA_FIFOSTATUS_EMPTY
  1380. * @arg @ref LL_DMA_FIFOSTATUS_FULL
  1381. */
  1382. __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream)
  1383. {
  1384. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1385. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FS));
  1386. }
  1387. /**
  1388. * @brief Disable Fifo mode.
  1389. * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode
  1390. * @param DMAx DMAx Instance
  1391. * @param Stream This parameter can be one of the following values:
  1392. * @arg @ref LL_DMA_STREAM_0
  1393. * @arg @ref LL_DMA_STREAM_1
  1394. * @arg @ref LL_DMA_STREAM_2
  1395. * @arg @ref LL_DMA_STREAM_3
  1396. * @arg @ref LL_DMA_STREAM_4
  1397. * @arg @ref LL_DMA_STREAM_5
  1398. * @arg @ref LL_DMA_STREAM_6
  1399. * @arg @ref LL_DMA_STREAM_7
  1400. * @retval None
  1401. */
  1402. __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1403. {
  1404. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1405. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
  1406. }
  1407. /**
  1408. * @brief Enable Fifo mode.
  1409. * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode
  1410. * @param DMAx DMAx Instance
  1411. * @param Stream This parameter can be one of the following values:
  1412. * @arg @ref LL_DMA_STREAM_0
  1413. * @arg @ref LL_DMA_STREAM_1
  1414. * @arg @ref LL_DMA_STREAM_2
  1415. * @arg @ref LL_DMA_STREAM_3
  1416. * @arg @ref LL_DMA_STREAM_4
  1417. * @arg @ref LL_DMA_STREAM_5
  1418. * @arg @ref LL_DMA_STREAM_6
  1419. * @arg @ref LL_DMA_STREAM_7
  1420. * @retval None
  1421. */
  1422. __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1423. {
  1424. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1425. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
  1426. }
  1427. /**
  1428. * @brief Select FIFO threshold.
  1429. * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold
  1430. * @param DMAx DMAx Instance
  1431. * @param Stream This parameter can be one of the following values:
  1432. * @arg @ref LL_DMA_STREAM_0
  1433. * @arg @ref LL_DMA_STREAM_1
  1434. * @arg @ref LL_DMA_STREAM_2
  1435. * @arg @ref LL_DMA_STREAM_3
  1436. * @arg @ref LL_DMA_STREAM_4
  1437. * @arg @ref LL_DMA_STREAM_5
  1438. * @arg @ref LL_DMA_STREAM_6
  1439. * @arg @ref LL_DMA_STREAM_7
  1440. * @param Threshold This parameter can be one of the following values:
  1441. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1442. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1443. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1444. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1445. * @retval None
  1446. */
  1447. __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold)
  1448. {
  1449. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1450. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH, Threshold);
  1451. }
  1452. /**
  1453. * @brief Get FIFO threshold.
  1454. * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold
  1455. * @param DMAx DMAx Instance
  1456. * @param Stream This parameter can be one of the following values:
  1457. * @arg @ref LL_DMA_STREAM_0
  1458. * @arg @ref LL_DMA_STREAM_1
  1459. * @arg @ref LL_DMA_STREAM_2
  1460. * @arg @ref LL_DMA_STREAM_3
  1461. * @arg @ref LL_DMA_STREAM_4
  1462. * @arg @ref LL_DMA_STREAM_5
  1463. * @arg @ref LL_DMA_STREAM_6
  1464. * @arg @ref LL_DMA_STREAM_7
  1465. * @retval Returned value can be one of the following values:
  1466. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1467. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1468. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1469. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1470. */
  1471. __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream)
  1472. {
  1473. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1474. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH));
  1475. }
  1476. /**
  1477. * @brief Configure the FIFO .
  1478. * @rmtoll FCR FTH LL_DMA_ConfigFifo\n
  1479. * FCR DMDIS LL_DMA_ConfigFifo
  1480. * @param DMAx DMAx Instance
  1481. * @param Stream This parameter can be one of the following values:
  1482. * @arg @ref LL_DMA_STREAM_0
  1483. * @arg @ref LL_DMA_STREAM_1
  1484. * @arg @ref LL_DMA_STREAM_2
  1485. * @arg @ref LL_DMA_STREAM_3
  1486. * @arg @ref LL_DMA_STREAM_4
  1487. * @arg @ref LL_DMA_STREAM_5
  1488. * @arg @ref LL_DMA_STREAM_6
  1489. * @arg @ref LL_DMA_STREAM_7
  1490. * @param FifoMode This parameter can be one of the following values:
  1491. * @arg @ref LL_DMA_FIFOMODE_ENABLE
  1492. * @arg @ref LL_DMA_FIFOMODE_DISABLE
  1493. * @param FifoThreshold This parameter can be one of the following values:
  1494. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1495. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1496. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1497. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1498. * @retval None
  1499. */
  1500. __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold)
  1501. {
  1502. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1503. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH | DMA_SxFCR_DMDIS, FifoMode | FifoThreshold);
  1504. }
  1505. /**
  1506. * @brief Configure the Source and Destination addresses.
  1507. * @note This API must not be called when the DMA stream is enabled.
  1508. * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n
  1509. * PAR PA LL_DMA_ConfigAddresses
  1510. * @param DMAx DMAx Instance
  1511. * @param Stream This parameter can be one of the following values:
  1512. * @arg @ref LL_DMA_STREAM_0
  1513. * @arg @ref LL_DMA_STREAM_1
  1514. * @arg @ref LL_DMA_STREAM_2
  1515. * @arg @ref LL_DMA_STREAM_3
  1516. * @arg @ref LL_DMA_STREAM_4
  1517. * @arg @ref LL_DMA_STREAM_5
  1518. * @arg @ref LL_DMA_STREAM_6
  1519. * @arg @ref LL_DMA_STREAM_7
  1520. * @param SrcAddress Between 0 to 0xFFFFFFFF
  1521. * @param DstAddress Between 0 to 0xFFFFFFFF
  1522. * @param Direction This parameter can be one of the following values:
  1523. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  1524. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  1525. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  1526. * @retval None
  1527. */
  1528. __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction)
  1529. {
  1530. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1531. /* Direction Memory to Periph */
  1532. if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
  1533. {
  1534. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, SrcAddress);
  1535. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, DstAddress);
  1536. }
  1537. /* Direction Periph to Memory and Memory to Memory */
  1538. else
  1539. {
  1540. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, SrcAddress);
  1541. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, DstAddress);
  1542. }
  1543. }
  1544. /**
  1545. * @brief Set the Memory address.
  1546. * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress
  1547. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1548. * @note This API must not be called when the DMA stream is enabled.
  1549. * @param DMAx DMAx Instance
  1550. * @param Stream This parameter can be one of the following values:
  1551. * @arg @ref LL_DMA_STREAM_0
  1552. * @arg @ref LL_DMA_STREAM_1
  1553. * @arg @ref LL_DMA_STREAM_2
  1554. * @arg @ref LL_DMA_STREAM_3
  1555. * @arg @ref LL_DMA_STREAM_4
  1556. * @arg @ref LL_DMA_STREAM_5
  1557. * @arg @ref LL_DMA_STREAM_6
  1558. * @arg @ref LL_DMA_STREAM_7
  1559. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1560. * @retval None
  1561. */
  1562. __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1563. {
  1564. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1565. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
  1566. }
  1567. /**
  1568. * @brief Set the Peripheral address.
  1569. * @rmtoll PAR PA LL_DMA_SetPeriphAddress
  1570. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1571. * @note This API must not be called when the DMA stream is enabled.
  1572. * @param DMAx DMAx Instance
  1573. * @param Stream This parameter can be one of the following values:
  1574. * @arg @ref LL_DMA_STREAM_0
  1575. * @arg @ref LL_DMA_STREAM_1
  1576. * @arg @ref LL_DMA_STREAM_2
  1577. * @arg @ref LL_DMA_STREAM_3
  1578. * @arg @ref LL_DMA_STREAM_4
  1579. * @arg @ref LL_DMA_STREAM_5
  1580. * @arg @ref LL_DMA_STREAM_6
  1581. * @arg @ref LL_DMA_STREAM_7
  1582. * @param PeriphAddress Between 0 to 0xFFFFFFFF
  1583. * @retval None
  1584. */
  1585. __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t PeriphAddress)
  1586. {
  1587. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1588. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, PeriphAddress);
  1589. }
  1590. /**
  1591. * @brief Get the Memory address.
  1592. * @rmtoll M0AR M0A LL_DMA_GetMemoryAddress
  1593. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1594. * @param DMAx DMAx Instance
  1595. * @param Stream This parameter can be one of the following values:
  1596. * @arg @ref LL_DMA_STREAM_0
  1597. * @arg @ref LL_DMA_STREAM_1
  1598. * @arg @ref LL_DMA_STREAM_2
  1599. * @arg @ref LL_DMA_STREAM_3
  1600. * @arg @ref LL_DMA_STREAM_4
  1601. * @arg @ref LL_DMA_STREAM_5
  1602. * @arg @ref LL_DMA_STREAM_6
  1603. * @arg @ref LL_DMA_STREAM_7
  1604. * @retval Between 0 to 0xFFFFFFFF
  1605. */
  1606. __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1607. {
  1608. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1609. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
  1610. }
  1611. /**
  1612. * @brief Get the Peripheral address.
  1613. * @rmtoll PAR PA LL_DMA_GetPeriphAddress
  1614. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1615. * @param DMAx DMAx Instance
  1616. * @param Stream This parameter can be one of the following values:
  1617. * @arg @ref LL_DMA_STREAM_0
  1618. * @arg @ref LL_DMA_STREAM_1
  1619. * @arg @ref LL_DMA_STREAM_2
  1620. * @arg @ref LL_DMA_STREAM_3
  1621. * @arg @ref LL_DMA_STREAM_4
  1622. * @arg @ref LL_DMA_STREAM_5
  1623. * @arg @ref LL_DMA_STREAM_6
  1624. * @arg @ref LL_DMA_STREAM_7
  1625. * @retval Between 0 to 0xFFFFFFFF
  1626. */
  1627. __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1628. {
  1629. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1630. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
  1631. }
  1632. /**
  1633. * @brief Set the Memory to Memory Source address.
  1634. * @rmtoll PAR PA LL_DMA_SetM2MSrcAddress
  1635. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1636. * @note This API must not be called when the DMA stream is enabled.
  1637. * @param DMAx DMAx Instance
  1638. * @param Stream This parameter can be one of the following values:
  1639. * @arg @ref LL_DMA_STREAM_0
  1640. * @arg @ref LL_DMA_STREAM_1
  1641. * @arg @ref LL_DMA_STREAM_2
  1642. * @arg @ref LL_DMA_STREAM_3
  1643. * @arg @ref LL_DMA_STREAM_4
  1644. * @arg @ref LL_DMA_STREAM_5
  1645. * @arg @ref LL_DMA_STREAM_6
  1646. * @arg @ref LL_DMA_STREAM_7
  1647. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1648. * @retval None
  1649. */
  1650. __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1651. {
  1652. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1653. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, MemoryAddress);
  1654. }
  1655. /**
  1656. * @brief Set the Memory to Memory Destination address.
  1657. * @rmtoll M0AR M0A LL_DMA_SetM2MDstAddress
  1658. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1659. * @note This API must not be called when the DMA stream is enabled.
  1660. * @param DMAx DMAx Instance
  1661. * @param Stream This parameter can be one of the following values:
  1662. * @arg @ref LL_DMA_STREAM_0
  1663. * @arg @ref LL_DMA_STREAM_1
  1664. * @arg @ref LL_DMA_STREAM_2
  1665. * @arg @ref LL_DMA_STREAM_3
  1666. * @arg @ref LL_DMA_STREAM_4
  1667. * @arg @ref LL_DMA_STREAM_5
  1668. * @arg @ref LL_DMA_STREAM_6
  1669. * @arg @ref LL_DMA_STREAM_7
  1670. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1671. * @retval None
  1672. */
  1673. __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1674. {
  1675. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1676. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
  1677. }
  1678. /**
  1679. * @brief Get the Memory to Memory Source address.
  1680. * @rmtoll PAR PA LL_DMA_GetM2MSrcAddress
  1681. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1682. * @param DMAx DMAx Instance
  1683. * @param Stream This parameter can be one of the following values:
  1684. * @arg @ref LL_DMA_STREAM_0
  1685. * @arg @ref LL_DMA_STREAM_1
  1686. * @arg @ref LL_DMA_STREAM_2
  1687. * @arg @ref LL_DMA_STREAM_3
  1688. * @arg @ref LL_DMA_STREAM_4
  1689. * @arg @ref LL_DMA_STREAM_5
  1690. * @arg @ref LL_DMA_STREAM_6
  1691. * @arg @ref LL_DMA_STREAM_7
  1692. * @retval Between 0 to 0xFFFFFFFF
  1693. */
  1694. __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1695. {
  1696. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1697. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
  1698. }
  1699. /**
  1700. * @brief Get the Memory to Memory Destination address.
  1701. * @rmtoll M0AR M0A LL_DMA_GetM2MDstAddress
  1702. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1703. * @param DMAx DMAx Instance
  1704. * @param Stream This parameter can be one of the following values:
  1705. * @arg @ref LL_DMA_STREAM_0
  1706. * @arg @ref LL_DMA_STREAM_1
  1707. * @arg @ref LL_DMA_STREAM_2
  1708. * @arg @ref LL_DMA_STREAM_3
  1709. * @arg @ref LL_DMA_STREAM_4
  1710. * @arg @ref LL_DMA_STREAM_5
  1711. * @arg @ref LL_DMA_STREAM_6
  1712. * @arg @ref LL_DMA_STREAM_7
  1713. * @retval Between 0 to 0xFFFFFFFF
  1714. */
  1715. __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1716. {
  1717. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1718. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
  1719. }
  1720. /**
  1721. * @brief Set Memory 1 address (used in case of Double buffer mode).
  1722. * @rmtoll M1AR M1A LL_DMA_SetMemory1Address
  1723. * @param DMAx DMAx Instance
  1724. * @param Stream This parameter can be one of the following values:
  1725. * @arg @ref LL_DMA_STREAM_0
  1726. * @arg @ref LL_DMA_STREAM_1
  1727. * @arg @ref LL_DMA_STREAM_2
  1728. * @arg @ref LL_DMA_STREAM_3
  1729. * @arg @ref LL_DMA_STREAM_4
  1730. * @arg @ref LL_DMA_STREAM_5
  1731. * @arg @ref LL_DMA_STREAM_6
  1732. * @arg @ref LL_DMA_STREAM_7
  1733. * @param Address Between 0 to 0xFFFFFFFF
  1734. * @retval None
  1735. */
  1736. __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address)
  1737. {
  1738. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1739. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR, DMA_SxM1AR_M1A, Address);
  1740. }
  1741. /**
  1742. * @brief Get Memory 1 address (used in case of Double buffer mode).
  1743. * @rmtoll M1AR M1A LL_DMA_GetMemory1Address
  1744. * @param DMAx DMAx Instance
  1745. * @param Stream This parameter can be one of the following values:
  1746. * @arg @ref LL_DMA_STREAM_0
  1747. * @arg @ref LL_DMA_STREAM_1
  1748. * @arg @ref LL_DMA_STREAM_2
  1749. * @arg @ref LL_DMA_STREAM_3
  1750. * @arg @ref LL_DMA_STREAM_4
  1751. * @arg @ref LL_DMA_STREAM_5
  1752. * @arg @ref LL_DMA_STREAM_6
  1753. * @arg @ref LL_DMA_STREAM_7
  1754. * @retval Between 0 to 0xFFFFFFFF
  1755. */
  1756. __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream)
  1757. {
  1758. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1759. return (((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR);
  1760. }
  1761. /**
  1762. * @}
  1763. */
  1764. /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management
  1765. * @{
  1766. */
  1767. /**
  1768. * @brief Get Stream 0 half transfer flag.
  1769. * @rmtoll LISR HTIF0 LL_DMA_IsActiveFlag_HT0
  1770. * @param DMAx DMAx Instance
  1771. * @retval State of bit (1 or 0).
  1772. */
  1773. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx)
  1774. {
  1775. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF0) == (DMA_LISR_HTIF0)) ? 1UL : 0UL);
  1776. }
  1777. /**
  1778. * @brief Get Stream 1 half transfer flag.
  1779. * @rmtoll LISR HTIF1 LL_DMA_IsActiveFlag_HT1
  1780. * @param DMAx DMAx Instance
  1781. * @retval State of bit (1 or 0).
  1782. */
  1783. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx)
  1784. {
  1785. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF1) == (DMA_LISR_HTIF1)) ? 1UL : 0UL);
  1786. }
  1787. /**
  1788. * @brief Get Stream 2 half transfer flag.
  1789. * @rmtoll LISR HTIF2 LL_DMA_IsActiveFlag_HT2
  1790. * @param DMAx DMAx Instance
  1791. * @retval State of bit (1 or 0).
  1792. */
  1793. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx)
  1794. {
  1795. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF2) == (DMA_LISR_HTIF2)) ? 1UL : 0UL);
  1796. }
  1797. /**
  1798. * @brief Get Stream 3 half transfer flag.
  1799. * @rmtoll LISR HTIF3 LL_DMA_IsActiveFlag_HT3
  1800. * @param DMAx DMAx Instance
  1801. * @retval State of bit (1 or 0).
  1802. */
  1803. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx)
  1804. {
  1805. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF3) == (DMA_LISR_HTIF3)) ? 1UL : 0UL);
  1806. }
  1807. /**
  1808. * @brief Get Stream 4 half transfer flag.
  1809. * @rmtoll HISR HTIF4 LL_DMA_IsActiveFlag_HT4
  1810. * @param DMAx DMAx Instance
  1811. * @retval State of bit (1 or 0).
  1812. */
  1813. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx)
  1814. {
  1815. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF4) == (DMA_HISR_HTIF4)) ? 1UL : 0UL);
  1816. }
  1817. /**
  1818. * @brief Get Stream 5 half transfer flag.
  1819. * @rmtoll HISR HTIF0 LL_DMA_IsActiveFlag_HT5
  1820. * @param DMAx DMAx Instance
  1821. * @retval State of bit (1 or 0).
  1822. */
  1823. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx)
  1824. {
  1825. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF5) == (DMA_HISR_HTIF5)) ? 1UL : 0UL);
  1826. }
  1827. /**
  1828. * @brief Get Stream 6 half transfer flag.
  1829. * @rmtoll HISR HTIF6 LL_DMA_IsActiveFlag_HT6
  1830. * @param DMAx DMAx Instance
  1831. * @retval State of bit (1 or 0).
  1832. */
  1833. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx)
  1834. {
  1835. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF6) == (DMA_HISR_HTIF6)) ? 1UL : 0UL);
  1836. }
  1837. /**
  1838. * @brief Get Stream 7 half transfer flag.
  1839. * @rmtoll HISR HTIF7 LL_DMA_IsActiveFlag_HT7
  1840. * @param DMAx DMAx Instance
  1841. * @retval State of bit (1 or 0).
  1842. */
  1843. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx)
  1844. {
  1845. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF7) == (DMA_HISR_HTIF7)) ? 1UL : 0UL);
  1846. }
  1847. /**
  1848. * @brief Get Stream 0 transfer complete flag.
  1849. * @rmtoll LISR TCIF0 LL_DMA_IsActiveFlag_TC0
  1850. * @param DMAx DMAx Instance
  1851. * @retval State of bit (1 or 0).
  1852. */
  1853. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx)
  1854. {
  1855. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF0) == (DMA_LISR_TCIF0)) ? 1UL : 0UL);
  1856. }
  1857. /**
  1858. * @brief Get Stream 1 transfer complete flag.
  1859. * @rmtoll LISR TCIF1 LL_DMA_IsActiveFlag_TC1
  1860. * @param DMAx DMAx Instance
  1861. * @retval State of bit (1 or 0).
  1862. */
  1863. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx)
  1864. {
  1865. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF1) == (DMA_LISR_TCIF1)) ? 1UL : 0UL);
  1866. }
  1867. /**
  1868. * @brief Get Stream 2 transfer complete flag.
  1869. * @rmtoll LISR TCIF2 LL_DMA_IsActiveFlag_TC2
  1870. * @param DMAx DMAx Instance
  1871. * @retval State of bit (1 or 0).
  1872. */
  1873. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx)
  1874. {
  1875. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF2) == (DMA_LISR_TCIF2)) ? 1UL : 0UL);
  1876. }
  1877. /**
  1878. * @brief Get Stream 3 transfer complete flag.
  1879. * @rmtoll LISR TCIF3 LL_DMA_IsActiveFlag_TC3
  1880. * @param DMAx DMAx Instance
  1881. * @retval State of bit (1 or 0).
  1882. */
  1883. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx)
  1884. {
  1885. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF3) == (DMA_LISR_TCIF3)) ? 1UL : 0UL);
  1886. }
  1887. /**
  1888. * @brief Get Stream 4 transfer complete flag.
  1889. * @rmtoll HISR TCIF4 LL_DMA_IsActiveFlag_TC4
  1890. * @param DMAx DMAx Instance
  1891. * @retval State of bit (1 or 0).
  1892. */
  1893. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx)
  1894. {
  1895. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF4) == (DMA_HISR_TCIF4)) ? 1UL : 0UL);
  1896. }
  1897. /**
  1898. * @brief Get Stream 5 transfer complete flag.
  1899. * @rmtoll HISR TCIF0 LL_DMA_IsActiveFlag_TC5
  1900. * @param DMAx DMAx Instance
  1901. * @retval State of bit (1 or 0).
  1902. */
  1903. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx)
  1904. {
  1905. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF5) == (DMA_HISR_TCIF5)) ? 1UL : 0UL);
  1906. }
  1907. /**
  1908. * @brief Get Stream 6 transfer complete flag.
  1909. * @rmtoll HISR TCIF6 LL_DMA_IsActiveFlag_TC6
  1910. * @param DMAx DMAx Instance
  1911. * @retval State of bit (1 or 0).
  1912. */
  1913. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx)
  1914. {
  1915. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF6) == (DMA_HISR_TCIF6)) ? 1UL : 0UL);
  1916. }
  1917. /**
  1918. * @brief Get Stream 7 transfer complete flag.
  1919. * @rmtoll HISR TCIF7 LL_DMA_IsActiveFlag_TC7
  1920. * @param DMAx DMAx Instance
  1921. * @retval State of bit (1 or 0).
  1922. */
  1923. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx)
  1924. {
  1925. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF7) == (DMA_HISR_TCIF7)) ? 1UL : 0UL);
  1926. }
  1927. /**
  1928. * @brief Get Stream 0 transfer error flag.
  1929. * @rmtoll LISR TEIF0 LL_DMA_IsActiveFlag_TE0
  1930. * @param DMAx DMAx Instance
  1931. * @retval State of bit (1 or 0).
  1932. */
  1933. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx)
  1934. {
  1935. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF0) == (DMA_LISR_TEIF0)) ? 1UL : 0UL);
  1936. }
  1937. /**
  1938. * @brief Get Stream 1 transfer error flag.
  1939. * @rmtoll LISR TEIF1 LL_DMA_IsActiveFlag_TE1
  1940. * @param DMAx DMAx Instance
  1941. * @retval State of bit (1 or 0).
  1942. */
  1943. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx)
  1944. {
  1945. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF1) == (DMA_LISR_TEIF1)) ? 1UL : 0UL);
  1946. }
  1947. /**
  1948. * @brief Get Stream 2 transfer error flag.
  1949. * @rmtoll LISR TEIF2 LL_DMA_IsActiveFlag_TE2
  1950. * @param DMAx DMAx Instance
  1951. * @retval State of bit (1 or 0).
  1952. */
  1953. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx)
  1954. {
  1955. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF2) == (DMA_LISR_TEIF2)) ? 1UL : 0UL);
  1956. }
  1957. /**
  1958. * @brief Get Stream 3 transfer error flag.
  1959. * @rmtoll LISR TEIF3 LL_DMA_IsActiveFlag_TE3
  1960. * @param DMAx DMAx Instance
  1961. * @retval State of bit (1 or 0).
  1962. */
  1963. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx)
  1964. {
  1965. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF3) == (DMA_LISR_TEIF3)) ? 1UL : 0UL);
  1966. }
  1967. /**
  1968. * @brief Get Stream 4 transfer error flag.
  1969. * @rmtoll HISR TEIF4 LL_DMA_IsActiveFlag_TE4
  1970. * @param DMAx DMAx Instance
  1971. * @retval State of bit (1 or 0).
  1972. */
  1973. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx)
  1974. {
  1975. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF4) == (DMA_HISR_TEIF4)) ? 1UL : 0UL);
  1976. }
  1977. /**
  1978. * @brief Get Stream 5 transfer error flag.
  1979. * @rmtoll HISR TEIF0 LL_DMA_IsActiveFlag_TE5
  1980. * @param DMAx DMAx Instance
  1981. * @retval State of bit (1 or 0).
  1982. */
  1983. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx)
  1984. {
  1985. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF5) == (DMA_HISR_TEIF5)) ? 1UL : 0UL);
  1986. }
  1987. /**
  1988. * @brief Get Stream 6 transfer error flag.
  1989. * @rmtoll HISR TEIF6 LL_DMA_IsActiveFlag_TE6
  1990. * @param DMAx DMAx Instance
  1991. * @retval State of bit (1 or 0).
  1992. */
  1993. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx)
  1994. {
  1995. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF6) == (DMA_HISR_TEIF6)) ? 1UL : 0UL);
  1996. }
  1997. /**
  1998. * @brief Get Stream 7 transfer error flag.
  1999. * @rmtoll HISR TEIF7 LL_DMA_IsActiveFlag_TE7
  2000. * @param DMAx DMAx Instance
  2001. * @retval State of bit (1 or 0).
  2002. */
  2003. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx)
  2004. {
  2005. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF7) == (DMA_HISR_TEIF7)) ? 1UL : 0UL);
  2006. }
  2007. /**
  2008. * @brief Get Stream 0 direct mode error flag.
  2009. * @rmtoll LISR DMEIF0 LL_DMA_IsActiveFlag_DME0
  2010. * @param DMAx DMAx Instance
  2011. * @retval State of bit (1 or 0).
  2012. */
  2013. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx)
  2014. {
  2015. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF0) == (DMA_LISR_DMEIF0)) ? 1UL : 0UL);
  2016. }
  2017. /**
  2018. * @brief Get Stream 1 direct mode error flag.
  2019. * @rmtoll LISR DMEIF1 LL_DMA_IsActiveFlag_DME1
  2020. * @param DMAx DMAx Instance
  2021. * @retval State of bit (1 or 0).
  2022. */
  2023. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx)
  2024. {
  2025. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF1) == (DMA_LISR_DMEIF1)) ? 1UL : 0UL);
  2026. }
  2027. /**
  2028. * @brief Get Stream 2 direct mode error flag.
  2029. * @rmtoll LISR DMEIF2 LL_DMA_IsActiveFlag_DME2
  2030. * @param DMAx DMAx Instance
  2031. * @retval State of bit (1 or 0).
  2032. */
  2033. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx)
  2034. {
  2035. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF2) == (DMA_LISR_DMEIF2)) ? 1UL : 0UL);
  2036. }
  2037. /**
  2038. * @brief Get Stream 3 direct mode error flag.
  2039. * @rmtoll LISR DMEIF3 LL_DMA_IsActiveFlag_DME3
  2040. * @param DMAx DMAx Instance
  2041. * @retval State of bit (1 or 0).
  2042. */
  2043. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx)
  2044. {
  2045. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF3) == (DMA_LISR_DMEIF3)) ? 1UL : 0UL);
  2046. }
  2047. /**
  2048. * @brief Get Stream 4 direct mode error flag.
  2049. * @rmtoll HISR DMEIF4 LL_DMA_IsActiveFlag_DME4
  2050. * @param DMAx DMAx Instance
  2051. * @retval State of bit (1 or 0).
  2052. */
  2053. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx)
  2054. {
  2055. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF4) == (DMA_HISR_DMEIF4)) ? 1UL : 0UL);
  2056. }
  2057. /**
  2058. * @brief Get Stream 5 direct mode error flag.
  2059. * @rmtoll HISR DMEIF0 LL_DMA_IsActiveFlag_DME5
  2060. * @param DMAx DMAx Instance
  2061. * @retval State of bit (1 or 0).
  2062. */
  2063. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx)
  2064. {
  2065. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF5) == (DMA_HISR_DMEIF5)) ? 1UL : 0UL);
  2066. }
  2067. /**
  2068. * @brief Get Stream 6 direct mode error flag.
  2069. * @rmtoll HISR DMEIF6 LL_DMA_IsActiveFlag_DME6
  2070. * @param DMAx DMAx Instance
  2071. * @retval State of bit (1 or 0).
  2072. */
  2073. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx)
  2074. {
  2075. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF6) == (DMA_HISR_DMEIF6)) ? 1UL : 0UL);
  2076. }
  2077. /**
  2078. * @brief Get Stream 7 direct mode error flag.
  2079. * @rmtoll HISR DMEIF7 LL_DMA_IsActiveFlag_DME7
  2080. * @param DMAx DMAx Instance
  2081. * @retval State of bit (1 or 0).
  2082. */
  2083. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx)
  2084. {
  2085. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF7) == (DMA_HISR_DMEIF7)) ? 1UL : 0UL);
  2086. }
  2087. /**
  2088. * @brief Get Stream 0 FIFO error flag.
  2089. * @rmtoll LISR FEIF0 LL_DMA_IsActiveFlag_FE0
  2090. * @param DMAx DMAx Instance
  2091. * @retval State of bit (1 or 0).
  2092. */
  2093. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx)
  2094. {
  2095. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF0) == (DMA_LISR_FEIF0)) ? 1UL : 0UL);
  2096. }
  2097. /**
  2098. * @brief Get Stream 1 FIFO error flag.
  2099. * @rmtoll LISR FEIF1 LL_DMA_IsActiveFlag_FE1
  2100. * @param DMAx DMAx Instance
  2101. * @retval State of bit (1 or 0).
  2102. */
  2103. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx)
  2104. {
  2105. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF1) == (DMA_LISR_FEIF1)) ? 1UL : 0UL);
  2106. }
  2107. /**
  2108. * @brief Get Stream 2 FIFO error flag.
  2109. * @rmtoll LISR FEIF2 LL_DMA_IsActiveFlag_FE2
  2110. * @param DMAx DMAx Instance
  2111. * @retval State of bit (1 or 0).
  2112. */
  2113. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx)
  2114. {
  2115. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF2) == (DMA_LISR_FEIF2)) ? 1UL : 0UL);
  2116. }
  2117. /**
  2118. * @brief Get Stream 3 FIFO error flag.
  2119. * @rmtoll LISR FEIF3 LL_DMA_IsActiveFlag_FE3
  2120. * @param DMAx DMAx Instance
  2121. * @retval State of bit (1 or 0).
  2122. */
  2123. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx)
  2124. {
  2125. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF3) == (DMA_LISR_FEIF3)) ? 1UL : 0UL);
  2126. }
  2127. /**
  2128. * @brief Get Stream 4 FIFO error flag.
  2129. * @rmtoll HISR FEIF4 LL_DMA_IsActiveFlag_FE4
  2130. * @param DMAx DMAx Instance
  2131. * @retval State of bit (1 or 0).
  2132. */
  2133. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx)
  2134. {
  2135. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF4) == (DMA_HISR_FEIF4)) ? 1UL : 0UL);
  2136. }
  2137. /**
  2138. * @brief Get Stream 5 FIFO error flag.
  2139. * @rmtoll HISR FEIF0 LL_DMA_IsActiveFlag_FE5
  2140. * @param DMAx DMAx Instance
  2141. * @retval State of bit (1 or 0).
  2142. */
  2143. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx)
  2144. {
  2145. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF5) == (DMA_HISR_FEIF5)) ? 1UL : 0UL);
  2146. }
  2147. /**
  2148. * @brief Get Stream 6 FIFO error flag.
  2149. * @rmtoll HISR FEIF6 LL_DMA_IsActiveFlag_FE6
  2150. * @param DMAx DMAx Instance
  2151. * @retval State of bit (1 or 0).
  2152. */
  2153. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx)
  2154. {
  2155. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF6) == (DMA_HISR_FEIF6)) ? 1UL : 0UL);
  2156. }
  2157. /**
  2158. * @brief Get Stream 7 FIFO error flag.
  2159. * @rmtoll HISR FEIF7 LL_DMA_IsActiveFlag_FE7
  2160. * @param DMAx DMAx Instance
  2161. * @retval State of bit (1 or 0).
  2162. */
  2163. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx)
  2164. {
  2165. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF7) == (DMA_HISR_FEIF7)) ? 1UL : 0UL);
  2166. }
  2167. /**
  2168. * @brief Clear Stream 0 half transfer flag.
  2169. * @rmtoll LIFCR CHTIF0 LL_DMA_ClearFlag_HT0
  2170. * @param DMAx DMAx Instance
  2171. * @retval None
  2172. */
  2173. __STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx)
  2174. {
  2175. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF0);
  2176. }
  2177. /**
  2178. * @brief Clear Stream 1 half transfer flag.
  2179. * @rmtoll LIFCR CHTIF1 LL_DMA_ClearFlag_HT1
  2180. * @param DMAx DMAx Instance
  2181. * @retval None
  2182. */
  2183. __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx)
  2184. {
  2185. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF1);
  2186. }
  2187. /**
  2188. * @brief Clear Stream 2 half transfer flag.
  2189. * @rmtoll LIFCR CHTIF2 LL_DMA_ClearFlag_HT2
  2190. * @param DMAx DMAx Instance
  2191. * @retval None
  2192. */
  2193. __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx)
  2194. {
  2195. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF2);
  2196. }
  2197. /**
  2198. * @brief Clear Stream 3 half transfer flag.
  2199. * @rmtoll LIFCR CHTIF3 LL_DMA_ClearFlag_HT3
  2200. * @param DMAx DMAx Instance
  2201. * @retval None
  2202. */
  2203. __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx)
  2204. {
  2205. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF3);
  2206. }
  2207. /**
  2208. * @brief Clear Stream 4 half transfer flag.
  2209. * @rmtoll HIFCR CHTIF4 LL_DMA_ClearFlag_HT4
  2210. * @param DMAx DMAx Instance
  2211. * @retval None
  2212. */
  2213. __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx)
  2214. {
  2215. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF4);
  2216. }
  2217. /**
  2218. * @brief Clear Stream 5 half transfer flag.
  2219. * @rmtoll HIFCR CHTIF5 LL_DMA_ClearFlag_HT5
  2220. * @param DMAx DMAx Instance
  2221. * @retval None
  2222. */
  2223. __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx)
  2224. {
  2225. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF5);
  2226. }
  2227. /**
  2228. * @brief Clear Stream 6 half transfer flag.
  2229. * @rmtoll HIFCR CHTIF6 LL_DMA_ClearFlag_HT6
  2230. * @param DMAx DMAx Instance
  2231. * @retval None
  2232. */
  2233. __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx)
  2234. {
  2235. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF6);
  2236. }
  2237. /**
  2238. * @brief Clear Stream 7 half transfer flag.
  2239. * @rmtoll HIFCR CHTIF7 LL_DMA_ClearFlag_HT7
  2240. * @param DMAx DMAx Instance
  2241. * @retval None
  2242. */
  2243. __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx)
  2244. {
  2245. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF7);
  2246. }
  2247. /**
  2248. * @brief Clear Stream 0 transfer complete flag.
  2249. * @rmtoll LIFCR CTCIF0 LL_DMA_ClearFlag_TC0
  2250. * @param DMAx DMAx Instance
  2251. * @retval None
  2252. */
  2253. __STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx)
  2254. {
  2255. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF0);
  2256. }
  2257. /**
  2258. * @brief Clear Stream 1 transfer complete flag.
  2259. * @rmtoll LIFCR CTCIF1 LL_DMA_ClearFlag_TC1
  2260. * @param DMAx DMAx Instance
  2261. * @retval None
  2262. */
  2263. __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx)
  2264. {
  2265. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF1);
  2266. }
  2267. /**
  2268. * @brief Clear Stream 2 transfer complete flag.
  2269. * @rmtoll LIFCR CTCIF2 LL_DMA_ClearFlag_TC2
  2270. * @param DMAx DMAx Instance
  2271. * @retval None
  2272. */
  2273. __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx)
  2274. {
  2275. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF2);
  2276. }
  2277. /**
  2278. * @brief Clear Stream 3 transfer complete flag.
  2279. * @rmtoll LIFCR CTCIF3 LL_DMA_ClearFlag_TC3
  2280. * @param DMAx DMAx Instance
  2281. * @retval None
  2282. */
  2283. __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx)
  2284. {
  2285. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF3);
  2286. }
  2287. /**
  2288. * @brief Clear Stream 4 transfer complete flag.
  2289. * @rmtoll HIFCR CTCIF4 LL_DMA_ClearFlag_TC4
  2290. * @param DMAx DMAx Instance
  2291. * @retval None
  2292. */
  2293. __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx)
  2294. {
  2295. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF4);
  2296. }
  2297. /**
  2298. * @brief Clear Stream 5 transfer complete flag.
  2299. * @rmtoll HIFCR CTCIF5 LL_DMA_ClearFlag_TC5
  2300. * @param DMAx DMAx Instance
  2301. * @retval None
  2302. */
  2303. __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx)
  2304. {
  2305. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF5);
  2306. }
  2307. /**
  2308. * @brief Clear Stream 6 transfer complete flag.
  2309. * @rmtoll HIFCR CTCIF6 LL_DMA_ClearFlag_TC6
  2310. * @param DMAx DMAx Instance
  2311. * @retval None
  2312. */
  2313. __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx)
  2314. {
  2315. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF6);
  2316. }
  2317. /**
  2318. * @brief Clear Stream 7 transfer complete flag.
  2319. * @rmtoll HIFCR CTCIF7 LL_DMA_ClearFlag_TC7
  2320. * @param DMAx DMAx Instance
  2321. * @retval None
  2322. */
  2323. __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx)
  2324. {
  2325. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF7);
  2326. }
  2327. /**
  2328. * @brief Clear Stream 0 transfer error flag.
  2329. * @rmtoll LIFCR CTEIF0 LL_DMA_ClearFlag_TE0
  2330. * @param DMAx DMAx Instance
  2331. * @retval None
  2332. */
  2333. __STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx)
  2334. {
  2335. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF0);
  2336. }
  2337. /**
  2338. * @brief Clear Stream 1 transfer error flag.
  2339. * @rmtoll LIFCR CTEIF1 LL_DMA_ClearFlag_TE1
  2340. * @param DMAx DMAx Instance
  2341. * @retval None
  2342. */
  2343. __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx)
  2344. {
  2345. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF1);
  2346. }
  2347. /**
  2348. * @brief Clear Stream 2 transfer error flag.
  2349. * @rmtoll LIFCR CTEIF2 LL_DMA_ClearFlag_TE2
  2350. * @param DMAx DMAx Instance
  2351. * @retval None
  2352. */
  2353. __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx)
  2354. {
  2355. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF2);
  2356. }
  2357. /**
  2358. * @brief Clear Stream 3 transfer error flag.
  2359. * @rmtoll LIFCR CTEIF3 LL_DMA_ClearFlag_TE3
  2360. * @param DMAx DMAx Instance
  2361. * @retval None
  2362. */
  2363. __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx)
  2364. {
  2365. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF3);
  2366. }
  2367. /**
  2368. * @brief Clear Stream 4 transfer error flag.
  2369. * @rmtoll HIFCR CTEIF4 LL_DMA_ClearFlag_TE4
  2370. * @param DMAx DMAx Instance
  2371. * @retval None
  2372. */
  2373. __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx)
  2374. {
  2375. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF4);
  2376. }
  2377. /**
  2378. * @brief Clear Stream 5 transfer error flag.
  2379. * @rmtoll HIFCR CTEIF5 LL_DMA_ClearFlag_TE5
  2380. * @param DMAx DMAx Instance
  2381. * @retval None
  2382. */
  2383. __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx)
  2384. {
  2385. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF5);
  2386. }
  2387. /**
  2388. * @brief Clear Stream 6 transfer error flag.
  2389. * @rmtoll HIFCR CTEIF6 LL_DMA_ClearFlag_TE6
  2390. * @param DMAx DMAx Instance
  2391. * @retval None
  2392. */
  2393. __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx)
  2394. {
  2395. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF6);
  2396. }
  2397. /**
  2398. * @brief Clear Stream 7 transfer error flag.
  2399. * @rmtoll HIFCR CTEIF7 LL_DMA_ClearFlag_TE7
  2400. * @param DMAx DMAx Instance
  2401. * @retval None
  2402. */
  2403. __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx)
  2404. {
  2405. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF7);
  2406. }
  2407. /**
  2408. * @brief Clear Stream 0 direct mode error flag.
  2409. * @rmtoll LIFCR CDMEIF0 LL_DMA_ClearFlag_DME0
  2410. * @param DMAx DMAx Instance
  2411. * @retval None
  2412. */
  2413. __STATIC_INLINE void LL_DMA_ClearFlag_DME0(DMA_TypeDef *DMAx)
  2414. {
  2415. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF0);
  2416. }
  2417. /**
  2418. * @brief Clear Stream 1 direct mode error flag.
  2419. * @rmtoll LIFCR CDMEIF1 LL_DMA_ClearFlag_DME1
  2420. * @param DMAx DMAx Instance
  2421. * @retval None
  2422. */
  2423. __STATIC_INLINE void LL_DMA_ClearFlag_DME1(DMA_TypeDef *DMAx)
  2424. {
  2425. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF1);
  2426. }
  2427. /**
  2428. * @brief Clear Stream 2 direct mode error flag.
  2429. * @rmtoll LIFCR CDMEIF2 LL_DMA_ClearFlag_DME2
  2430. * @param DMAx DMAx Instance
  2431. * @retval None
  2432. */
  2433. __STATIC_INLINE void LL_DMA_ClearFlag_DME2(DMA_TypeDef *DMAx)
  2434. {
  2435. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF2);
  2436. }
  2437. /**
  2438. * @brief Clear Stream 3 direct mode error flag.
  2439. * @rmtoll LIFCR CDMEIF3 LL_DMA_ClearFlag_DME3
  2440. * @param DMAx DMAx Instance
  2441. * @retval None
  2442. */
  2443. __STATIC_INLINE void LL_DMA_ClearFlag_DME3(DMA_TypeDef *DMAx)
  2444. {
  2445. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF3);
  2446. }
  2447. /**
  2448. * @brief Clear Stream 4 direct mode error flag.
  2449. * @rmtoll HIFCR CDMEIF4 LL_DMA_ClearFlag_DME4
  2450. * @param DMAx DMAx Instance
  2451. * @retval None
  2452. */
  2453. __STATIC_INLINE void LL_DMA_ClearFlag_DME4(DMA_TypeDef *DMAx)
  2454. {
  2455. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF4);
  2456. }
  2457. /**
  2458. * @brief Clear Stream 5 direct mode error flag.
  2459. * @rmtoll HIFCR CDMEIF5 LL_DMA_ClearFlag_DME5
  2460. * @param DMAx DMAx Instance
  2461. * @retval None
  2462. */
  2463. __STATIC_INLINE void LL_DMA_ClearFlag_DME5(DMA_TypeDef *DMAx)
  2464. {
  2465. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF5);
  2466. }
  2467. /**
  2468. * @brief Clear Stream 6 direct mode error flag.
  2469. * @rmtoll HIFCR CDMEIF6 LL_DMA_ClearFlag_DME6
  2470. * @param DMAx DMAx Instance
  2471. * @retval None
  2472. */
  2473. __STATIC_INLINE void LL_DMA_ClearFlag_DME6(DMA_TypeDef *DMAx)
  2474. {
  2475. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF6);
  2476. }
  2477. /**
  2478. * @brief Clear Stream 7 direct mode error flag.
  2479. * @rmtoll HIFCR CDMEIF7 LL_DMA_ClearFlag_DME7
  2480. * @param DMAx DMAx Instance
  2481. * @retval None
  2482. */
  2483. __STATIC_INLINE void LL_DMA_ClearFlag_DME7(DMA_TypeDef *DMAx)
  2484. {
  2485. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF7);
  2486. }
  2487. /**
  2488. * @brief Clear Stream 0 FIFO error flag.
  2489. * @rmtoll LIFCR CFEIF0 LL_DMA_ClearFlag_FE0
  2490. * @param DMAx DMAx Instance
  2491. * @retval None
  2492. */
  2493. __STATIC_INLINE void LL_DMA_ClearFlag_FE0(DMA_TypeDef *DMAx)
  2494. {
  2495. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF0);
  2496. }
  2497. /**
  2498. * @brief Clear Stream 1 FIFO error flag.
  2499. * @rmtoll LIFCR CFEIF1 LL_DMA_ClearFlag_FE1
  2500. * @param DMAx DMAx Instance
  2501. * @retval None
  2502. */
  2503. __STATIC_INLINE void LL_DMA_ClearFlag_FE1(DMA_TypeDef *DMAx)
  2504. {
  2505. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF1);
  2506. }
  2507. /**
  2508. * @brief Clear Stream 2 FIFO error flag.
  2509. * @rmtoll LIFCR CFEIF2 LL_DMA_ClearFlag_FE2
  2510. * @param DMAx DMAx Instance
  2511. * @retval None
  2512. */
  2513. __STATIC_INLINE void LL_DMA_ClearFlag_FE2(DMA_TypeDef *DMAx)
  2514. {
  2515. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF2);
  2516. }
  2517. /**
  2518. * @brief Clear Stream 3 FIFO error flag.
  2519. * @rmtoll LIFCR CFEIF3 LL_DMA_ClearFlag_FE3
  2520. * @param DMAx DMAx Instance
  2521. * @retval None
  2522. */
  2523. __STATIC_INLINE void LL_DMA_ClearFlag_FE3(DMA_TypeDef *DMAx)
  2524. {
  2525. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF3);
  2526. }
  2527. /**
  2528. * @brief Clear Stream 4 FIFO error flag.
  2529. * @rmtoll HIFCR CFEIF4 LL_DMA_ClearFlag_FE4
  2530. * @param DMAx DMAx Instance
  2531. * @retval None
  2532. */
  2533. __STATIC_INLINE void LL_DMA_ClearFlag_FE4(DMA_TypeDef *DMAx)
  2534. {
  2535. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF4);
  2536. }
  2537. /**
  2538. * @brief Clear Stream 5 FIFO error flag.
  2539. * @rmtoll HIFCR CFEIF5 LL_DMA_ClearFlag_FE5
  2540. * @param DMAx DMAx Instance
  2541. * @retval None
  2542. */
  2543. __STATIC_INLINE void LL_DMA_ClearFlag_FE5(DMA_TypeDef *DMAx)
  2544. {
  2545. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF5);
  2546. }
  2547. /**
  2548. * @brief Clear Stream 6 FIFO error flag.
  2549. * @rmtoll HIFCR CFEIF6 LL_DMA_ClearFlag_FE6
  2550. * @param DMAx DMAx Instance
  2551. * @retval None
  2552. */
  2553. __STATIC_INLINE void LL_DMA_ClearFlag_FE6(DMA_TypeDef *DMAx)
  2554. {
  2555. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF6);
  2556. }
  2557. /**
  2558. * @brief Clear Stream 7 FIFO error flag.
  2559. * @rmtoll HIFCR CFEIF7 LL_DMA_ClearFlag_FE7
  2560. * @param DMAx DMAx Instance
  2561. * @retval None
  2562. */
  2563. __STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx)
  2564. {
  2565. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF7);
  2566. }
  2567. /**
  2568. * @}
  2569. */
  2570. /** @defgroup DMA_LL_EF_IT_Management IT_Management
  2571. * @{
  2572. */
  2573. /**
  2574. * @brief Enable Half transfer interrupt.
  2575. * @rmtoll CR HTIE LL_DMA_EnableIT_HT
  2576. * @param DMAx DMAx Instance
  2577. * @param Stream This parameter can be one of the following values:
  2578. * @arg @ref LL_DMA_STREAM_0
  2579. * @arg @ref LL_DMA_STREAM_1
  2580. * @arg @ref LL_DMA_STREAM_2
  2581. * @arg @ref LL_DMA_STREAM_3
  2582. * @arg @ref LL_DMA_STREAM_4
  2583. * @arg @ref LL_DMA_STREAM_5
  2584. * @arg @ref LL_DMA_STREAM_6
  2585. * @arg @ref LL_DMA_STREAM_7
  2586. * @retval None
  2587. */
  2588. __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2589. {
  2590. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2591. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
  2592. }
  2593. /**
  2594. * @brief Enable Transfer error interrupt.
  2595. * @rmtoll CR TEIE LL_DMA_EnableIT_TE
  2596. * @param DMAx DMAx Instance
  2597. * @param Stream This parameter can be one of the following values:
  2598. * @arg @ref LL_DMA_STREAM_0
  2599. * @arg @ref LL_DMA_STREAM_1
  2600. * @arg @ref LL_DMA_STREAM_2
  2601. * @arg @ref LL_DMA_STREAM_3
  2602. * @arg @ref LL_DMA_STREAM_4
  2603. * @arg @ref LL_DMA_STREAM_5
  2604. * @arg @ref LL_DMA_STREAM_6
  2605. * @arg @ref LL_DMA_STREAM_7
  2606. * @retval None
  2607. */
  2608. __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2609. {
  2610. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2611. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
  2612. }
  2613. /**
  2614. * @brief Enable Transfer complete interrupt.
  2615. * @rmtoll CR TCIE LL_DMA_EnableIT_TC
  2616. * @param DMAx DMAx Instance
  2617. * @param Stream This parameter can be one of the following values:
  2618. * @arg @ref LL_DMA_STREAM_0
  2619. * @arg @ref LL_DMA_STREAM_1
  2620. * @arg @ref LL_DMA_STREAM_2
  2621. * @arg @ref LL_DMA_STREAM_3
  2622. * @arg @ref LL_DMA_STREAM_4
  2623. * @arg @ref LL_DMA_STREAM_5
  2624. * @arg @ref LL_DMA_STREAM_6
  2625. * @arg @ref LL_DMA_STREAM_7
  2626. * @retval None
  2627. */
  2628. __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2629. {
  2630. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2631. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
  2632. }
  2633. /**
  2634. * @brief Enable Direct mode error interrupt.
  2635. * @rmtoll CR DMEIE LL_DMA_EnableIT_DME
  2636. * @param DMAx DMAx Instance
  2637. * @param Stream This parameter can be one of the following values:
  2638. * @arg @ref LL_DMA_STREAM_0
  2639. * @arg @ref LL_DMA_STREAM_1
  2640. * @arg @ref LL_DMA_STREAM_2
  2641. * @arg @ref LL_DMA_STREAM_3
  2642. * @arg @ref LL_DMA_STREAM_4
  2643. * @arg @ref LL_DMA_STREAM_5
  2644. * @arg @ref LL_DMA_STREAM_6
  2645. * @arg @ref LL_DMA_STREAM_7
  2646. * @retval None
  2647. */
  2648. __STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2649. {
  2650. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2651. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
  2652. }
  2653. /**
  2654. * @brief Enable FIFO error interrupt.
  2655. * @rmtoll FCR FEIE LL_DMA_EnableIT_FE
  2656. * @param DMAx DMAx Instance
  2657. * @param Stream This parameter can be one of the following values:
  2658. * @arg @ref LL_DMA_STREAM_0
  2659. * @arg @ref LL_DMA_STREAM_1
  2660. * @arg @ref LL_DMA_STREAM_2
  2661. * @arg @ref LL_DMA_STREAM_3
  2662. * @arg @ref LL_DMA_STREAM_4
  2663. * @arg @ref LL_DMA_STREAM_5
  2664. * @arg @ref LL_DMA_STREAM_6
  2665. * @arg @ref LL_DMA_STREAM_7
  2666. * @retval None
  2667. */
  2668. __STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2669. {
  2670. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2671. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
  2672. }
  2673. /**
  2674. * @brief Disable Half transfer interrupt.
  2675. * @rmtoll CR HTIE LL_DMA_DisableIT_HT
  2676. * @param DMAx DMAx Instance
  2677. * @param Stream This parameter can be one of the following values:
  2678. * @arg @ref LL_DMA_STREAM_0
  2679. * @arg @ref LL_DMA_STREAM_1
  2680. * @arg @ref LL_DMA_STREAM_2
  2681. * @arg @ref LL_DMA_STREAM_3
  2682. * @arg @ref LL_DMA_STREAM_4
  2683. * @arg @ref LL_DMA_STREAM_5
  2684. * @arg @ref LL_DMA_STREAM_6
  2685. * @arg @ref LL_DMA_STREAM_7
  2686. * @retval None
  2687. */
  2688. __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2689. {
  2690. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2691. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
  2692. }
  2693. /**
  2694. * @brief Disable Transfer error interrupt.
  2695. * @rmtoll CR TEIE LL_DMA_DisableIT_TE
  2696. * @param DMAx DMAx Instance
  2697. * @param Stream This parameter can be one of the following values:
  2698. * @arg @ref LL_DMA_STREAM_0
  2699. * @arg @ref LL_DMA_STREAM_1
  2700. * @arg @ref LL_DMA_STREAM_2
  2701. * @arg @ref LL_DMA_STREAM_3
  2702. * @arg @ref LL_DMA_STREAM_4
  2703. * @arg @ref LL_DMA_STREAM_5
  2704. * @arg @ref LL_DMA_STREAM_6
  2705. * @arg @ref LL_DMA_STREAM_7
  2706. * @retval None
  2707. */
  2708. __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2709. {
  2710. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2711. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
  2712. }
  2713. /**
  2714. * @brief Disable Transfer complete interrupt.
  2715. * @rmtoll CR TCIE LL_DMA_DisableIT_TC
  2716. * @param DMAx DMAx Instance
  2717. * @param Stream This parameter can be one of the following values:
  2718. * @arg @ref LL_DMA_STREAM_0
  2719. * @arg @ref LL_DMA_STREAM_1
  2720. * @arg @ref LL_DMA_STREAM_2
  2721. * @arg @ref LL_DMA_STREAM_3
  2722. * @arg @ref LL_DMA_STREAM_4
  2723. * @arg @ref LL_DMA_STREAM_5
  2724. * @arg @ref LL_DMA_STREAM_6
  2725. * @arg @ref LL_DMA_STREAM_7
  2726. * @retval None
  2727. */
  2728. __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2729. {
  2730. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2731. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
  2732. }
  2733. /**
  2734. * @brief Disable Direct mode error interrupt.
  2735. * @rmtoll CR DMEIE LL_DMA_DisableIT_DME
  2736. * @param DMAx DMAx Instance
  2737. * @param Stream This parameter can be one of the following values:
  2738. * @arg @ref LL_DMA_STREAM_0
  2739. * @arg @ref LL_DMA_STREAM_1
  2740. * @arg @ref LL_DMA_STREAM_2
  2741. * @arg @ref LL_DMA_STREAM_3
  2742. * @arg @ref LL_DMA_STREAM_4
  2743. * @arg @ref LL_DMA_STREAM_5
  2744. * @arg @ref LL_DMA_STREAM_6
  2745. * @arg @ref LL_DMA_STREAM_7
  2746. * @retval None
  2747. */
  2748. __STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2749. {
  2750. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2751. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
  2752. }
  2753. /**
  2754. * @brief Disable FIFO error interrupt.
  2755. * @rmtoll FCR FEIE LL_DMA_DisableIT_FE
  2756. * @param DMAx DMAx Instance
  2757. * @param Stream This parameter can be one of the following values:
  2758. * @arg @ref LL_DMA_STREAM_0
  2759. * @arg @ref LL_DMA_STREAM_1
  2760. * @arg @ref LL_DMA_STREAM_2
  2761. * @arg @ref LL_DMA_STREAM_3
  2762. * @arg @ref LL_DMA_STREAM_4
  2763. * @arg @ref LL_DMA_STREAM_5
  2764. * @arg @ref LL_DMA_STREAM_6
  2765. * @arg @ref LL_DMA_STREAM_7
  2766. * @retval None
  2767. */
  2768. __STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2769. {
  2770. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2771. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
  2772. }
  2773. /**
  2774. * @brief Check if Half transfer interrup is enabled.
  2775. * @rmtoll CR HTIE LL_DMA_IsEnabledIT_HT
  2776. * @param DMAx DMAx Instance
  2777. * @param Stream This parameter can be one of the following values:
  2778. * @arg @ref LL_DMA_STREAM_0
  2779. * @arg @ref LL_DMA_STREAM_1
  2780. * @arg @ref LL_DMA_STREAM_2
  2781. * @arg @ref LL_DMA_STREAM_3
  2782. * @arg @ref LL_DMA_STREAM_4
  2783. * @arg @ref LL_DMA_STREAM_5
  2784. * @arg @ref LL_DMA_STREAM_6
  2785. * @arg @ref LL_DMA_STREAM_7
  2786. * @retval State of bit (1 or 0).
  2787. */
  2788. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2789. {
  2790. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2791. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE) == DMA_SxCR_HTIE) ? 1UL : 0UL);
  2792. }
  2793. /**
  2794. * @brief Check if Transfer error nterrup is enabled.
  2795. * @rmtoll CR TEIE LL_DMA_IsEnabledIT_TE
  2796. * @param DMAx DMAx Instance
  2797. * @param Stream This parameter can be one of the following values:
  2798. * @arg @ref LL_DMA_STREAM_0
  2799. * @arg @ref LL_DMA_STREAM_1
  2800. * @arg @ref LL_DMA_STREAM_2
  2801. * @arg @ref LL_DMA_STREAM_3
  2802. * @arg @ref LL_DMA_STREAM_4
  2803. * @arg @ref LL_DMA_STREAM_5
  2804. * @arg @ref LL_DMA_STREAM_6
  2805. * @arg @ref LL_DMA_STREAM_7
  2806. * @retval State of bit (1 or 0).
  2807. */
  2808. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2809. {
  2810. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2811. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE) == DMA_SxCR_TEIE) ? 1UL : 0UL);
  2812. }
  2813. /**
  2814. * @brief Check if Transfer complete interrup is enabled.
  2815. * @rmtoll CR TCIE LL_DMA_IsEnabledIT_TC
  2816. * @param DMAx DMAx Instance
  2817. * @param Stream This parameter can be one of the following values:
  2818. * @arg @ref LL_DMA_STREAM_0
  2819. * @arg @ref LL_DMA_STREAM_1
  2820. * @arg @ref LL_DMA_STREAM_2
  2821. * @arg @ref LL_DMA_STREAM_3
  2822. * @arg @ref LL_DMA_STREAM_4
  2823. * @arg @ref LL_DMA_STREAM_5
  2824. * @arg @ref LL_DMA_STREAM_6
  2825. * @arg @ref LL_DMA_STREAM_7
  2826. * @retval State of bit (1 or 0).
  2827. */
  2828. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2829. {
  2830. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2831. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE) == DMA_SxCR_TCIE) ? 1UL : 0UL);
  2832. }
  2833. /**
  2834. * @brief Check if Direct mode error interrupt is enabled.
  2835. * @rmtoll CR DMEIE LL_DMA_IsEnabledIT_DME
  2836. * @param DMAx DMAx Instance
  2837. * @param Stream This parameter can be one of the following values:
  2838. * @arg @ref LL_DMA_STREAM_0
  2839. * @arg @ref LL_DMA_STREAM_1
  2840. * @arg @ref LL_DMA_STREAM_2
  2841. * @arg @ref LL_DMA_STREAM_3
  2842. * @arg @ref LL_DMA_STREAM_4
  2843. * @arg @ref LL_DMA_STREAM_5
  2844. * @arg @ref LL_DMA_STREAM_6
  2845. * @arg @ref LL_DMA_STREAM_7
  2846. * @retval State of bit (1 or 0).
  2847. */
  2848. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2849. {
  2850. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2851. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE) == DMA_SxCR_DMEIE) ? 1UL : 0UL);
  2852. }
  2853. /**
  2854. * @brief Check if FIFO error interrup is enabled.
  2855. * @rmtoll FCR FEIE LL_DMA_IsEnabledIT_FE
  2856. * @param DMAx DMAx Instance
  2857. * @param Stream This parameter can be one of the following values:
  2858. * @arg @ref LL_DMA_STREAM_0
  2859. * @arg @ref LL_DMA_STREAM_1
  2860. * @arg @ref LL_DMA_STREAM_2
  2861. * @arg @ref LL_DMA_STREAM_3
  2862. * @arg @ref LL_DMA_STREAM_4
  2863. * @arg @ref LL_DMA_STREAM_5
  2864. * @arg @ref LL_DMA_STREAM_6
  2865. * @arg @ref LL_DMA_STREAM_7
  2866. * @retval State of bit (1 or 0).
  2867. */
  2868. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2869. {
  2870. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2871. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE) == DMA_SxFCR_FEIE) ? 1UL : 0UL);
  2872. }
  2873. /**
  2874. * @}
  2875. */
  2876. #if defined(USE_FULL_LL_DRIVER)
  2877. /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
  2878. * @{
  2879. */
  2880. uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct);
  2881. uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream);
  2882. void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
  2883. /**
  2884. * @}
  2885. */
  2886. #endif /* USE_FULL_LL_DRIVER */
  2887. /**
  2888. * @}
  2889. */
  2890. /**
  2891. * @}
  2892. */
  2893. #endif /* DMA1 || DMA2 */
  2894. /**
  2895. * @}
  2896. */
  2897. #ifdef __cplusplus
  2898. }
  2899. #endif
  2900. #endif /* __STM32H7xx_LL_DMA_H */
  2901. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/