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.
 
 
 

3203 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_PSSI
  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. * @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
  1037. * @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
  1038. * @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
  1039. * @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
  1040. * @note (*) Availability depends on devices.
  1041. * @retval None
  1042. */
  1043. __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Request)
  1044. {
  1045. 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);
  1046. }
  1047. /**
  1048. * @brief Get DMA request for DMA Channels on DMAMUX Channel x.
  1049. * @note DMAMUX channel 0 to 7 are mapped to DMA1 stream 0 to 7.
  1050. * DMAMUX channel 8 to 15 are mapped to DMA2 stream 0 to 7.
  1051. * @rmtoll CxCR DMAREQ_ID LL_DMA_GetPeriphRequest
  1052. * @param DMAx DMAx Instance
  1053. * @param Stream This parameter can be one of the following values:
  1054. * @arg @ref LL_DMA_STREAM_0
  1055. * @arg @ref LL_DMA_STREAM_1
  1056. * @arg @ref LL_DMA_STREAM_2
  1057. * @arg @ref LL_DMA_STREAM_3
  1058. * @arg @ref LL_DMA_STREAM_4
  1059. * @arg @ref LL_DMA_STREAM_5
  1060. * @arg @ref LL_DMA_STREAM_6
  1061. * @arg @ref LL_DMA_STREAM_7
  1062. * @retval Returned value can be one of the following values:
  1063. * @arg @ref LL_DMAMUX1_REQ_MEM2MEM
  1064. * @arg @ref LL_DMAMUX1_REQ_GENERATOR0
  1065. * @arg @ref LL_DMAMUX1_REQ_GENERATOR1
  1066. * @arg @ref LL_DMAMUX1_REQ_GENERATOR2
  1067. * @arg @ref LL_DMAMUX1_REQ_GENERATOR3
  1068. * @arg @ref LL_DMAMUX1_REQ_GENERATOR4
  1069. * @arg @ref LL_DMAMUX1_REQ_GENERATOR5
  1070. * @arg @ref LL_DMAMUX1_REQ_GENERATOR6
  1071. * @arg @ref LL_DMAMUX1_REQ_GENERATOR7
  1072. * @arg @ref LL_DMAMUX1_REQ_ADC1
  1073. * @arg @ref LL_DMAMUX1_REQ_ADC2
  1074. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH1
  1075. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH2
  1076. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH3
  1077. * @arg @ref LL_DMAMUX1_REQ_TIM1_CH4
  1078. * @arg @ref LL_DMAMUX1_REQ_TIM1_UP
  1079. * @arg @ref LL_DMAMUX1_REQ_TIM1_TRIG
  1080. * @arg @ref LL_DMAMUX1_REQ_TIM1_COM
  1081. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH1
  1082. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH2
  1083. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH3
  1084. * @arg @ref LL_DMAMUX1_REQ_TIM2_CH4
  1085. * @arg @ref LL_DMAMUX1_REQ_TIM2_UP
  1086. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH1
  1087. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH2
  1088. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH3
  1089. * @arg @ref LL_DMAMUX1_REQ_TIM3_CH4
  1090. * @arg @ref LL_DMAMUX1_REQ_TIM3_UP
  1091. * @arg @ref LL_DMAMUX1_REQ_TIM3_TRIG
  1092. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH1
  1093. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH2
  1094. * @arg @ref LL_DMAMUX1_REQ_TIM4_CH3
  1095. * @arg @ref LL_DMAMUX1_REQ_TIM4_UP
  1096. * @arg @ref LL_DMAMUX1_REQ_I2C1_RX
  1097. * @arg @ref LL_DMAMUX1_REQ_I2C1_TX
  1098. * @arg @ref LL_DMAMUX1_REQ_I2C2_RX
  1099. * @arg @ref LL_DMAMUX1_REQ_I2C2_TX
  1100. * @arg @ref LL_DMAMUX1_REQ_SPI1_RX
  1101. * @arg @ref LL_DMAMUX1_REQ_SPI1_TX
  1102. * @arg @ref LL_DMAMUX1_REQ_SPI2_RX
  1103. * @arg @ref LL_DMAMUX1_REQ_SPI2_TX
  1104. * @arg @ref LL_DMAMUX1_REQ_USART1_RX
  1105. * @arg @ref LL_DMAMUX1_REQ_USART1_TX
  1106. * @arg @ref LL_DMAMUX1_REQ_USART2_RX
  1107. * @arg @ref LL_DMAMUX1_REQ_USART2_TX
  1108. * @arg @ref LL_DMAMUX1_REQ_USART3_RX
  1109. * @arg @ref LL_DMAMUX1_REQ_USART3_TX
  1110. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH1
  1111. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH2
  1112. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH3
  1113. * @arg @ref LL_DMAMUX1_REQ_TIM8_CH4
  1114. * @arg @ref LL_DMAMUX1_REQ_TIM8_UP
  1115. * @arg @ref LL_DMAMUX1_REQ_TIM8_TRIG
  1116. * @arg @ref LL_DMAMUX1_REQ_TIM8_COM
  1117. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH1
  1118. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH2
  1119. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH3
  1120. * @arg @ref LL_DMAMUX1_REQ_TIM5_CH4
  1121. * @arg @ref LL_DMAMUX1_REQ_TIM5_UP
  1122. * @arg @ref LL_DMAMUX1_REQ_TIM5_TRIG
  1123. * @arg @ref LL_DMAMUX1_REQ_SPI3_RX
  1124. * @arg @ref LL_DMAMUX1_REQ_SPI3_TX
  1125. * @arg @ref LL_DMAMUX1_REQ_UART4_RX
  1126. * @arg @ref LL_DMAMUX1_REQ_UART4_TX
  1127. * @arg @ref LL_DMAMUX1_REQ_UART5_RX
  1128. * @arg @ref LL_DMAMUX1_REQ_UART5_TX
  1129. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH1
  1130. * @arg @ref LL_DMAMUX1_REQ_DAC1_CH2
  1131. * @arg @ref LL_DMAMUX1_REQ_TIM6_UP
  1132. * @arg @ref LL_DMAMUX1_REQ_TIM7_UP
  1133. * @arg @ref LL_DMAMUX1_REQ_USART6_RX
  1134. * @arg @ref LL_DMAMUX1_REQ_USART6_TX
  1135. * @arg @ref LL_DMAMUX1_REQ_I2C3_RX
  1136. * @arg @ref LL_DMAMUX1_REQ_I2C3_TX
  1137. * @arg @ref LL_DMAMUX1_REQ_DCMI_PSSI
  1138. * @arg @ref LL_DMAMUX1_REQ_CRYP_IN
  1139. * @arg @ref LL_DMAMUX1_REQ_CRYP_OUT
  1140. * @arg @ref LL_DMAMUX1_REQ_HASH_IN
  1141. * @arg @ref LL_DMAMUX1_REQ_UART7_RX
  1142. * @arg @ref LL_DMAMUX1_REQ_UART7_TX
  1143. * @arg @ref LL_DMAMUX1_REQ_UART8_RX
  1144. * @arg @ref LL_DMAMUX1_REQ_UART8_TX
  1145. * @arg @ref LL_DMAMUX1_REQ_SPI4_RX
  1146. * @arg @ref LL_DMAMUX1_REQ_SPI4_TX
  1147. * @arg @ref LL_DMAMUX1_REQ_SPI5_RX
  1148. * @arg @ref LL_DMAMUX1_REQ_SPI5_TX
  1149. * @arg @ref LL_DMAMUX1_REQ_SAI1_A
  1150. * @arg @ref LL_DMAMUX1_REQ_SAI1_B
  1151. * @arg @ref LL_DMAMUX1_REQ_SAI2_A
  1152. * @arg @ref LL_DMAMUX1_REQ_SAI2_B
  1153. * @arg @ref LL_DMAMUX1_REQ_SWPMI_RX
  1154. * @arg @ref LL_DMAMUX1_REQ_SWPMI_TX
  1155. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_DT
  1156. * @arg @ref LL_DMAMUX1_REQ_SPDIF_RX_CS
  1157. * @arg @ref LL_DMAMUX1_REQ_HRTIM_MASTER (*)
  1158. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_A (*)
  1159. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_B (*)
  1160. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_C (*)
  1161. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_D (*)
  1162. * @arg @ref LL_DMAMUX1_REQ_HRTIM_TIMER_E (*)
  1163. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT0
  1164. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT1
  1165. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT2
  1166. * @arg @ref LL_DMAMUX1_REQ_DFSDM1_FLT3
  1167. * @arg @ref LL_DMAMUX1_REQ_TIM15_CH1
  1168. * @arg @ref LL_DMAMUX1_REQ_TIM15_UP
  1169. * @arg @ref LL_DMAMUX1_REQ_TIM15_TRIG
  1170. * @arg @ref LL_DMAMUX1_REQ_TIM15_COM
  1171. * @arg @ref LL_DMAMUX1_REQ_TIM16_CH1
  1172. * @arg @ref LL_DMAMUX1_REQ_TIM16_UP
  1173. * @arg @ref LL_DMAMUX1_REQ_TIM17_CH1
  1174. * @arg @ref LL_DMAMUX1_REQ_TIM17_UP
  1175. * @arg @ref LL_DMAMUX1_REQ_SAI3_A (*)
  1176. * @arg @ref LL_DMAMUX1_REQ_SAI3_B (*)
  1177. * @arg @ref LL_DMAMUX1_REQ_ADC3 (*)
  1178. * @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
  1179. * @arg @ref LL_DMAMUX1_REQ_UART9_RX (*)
  1180. * @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
  1181. * @arg @ref LL_DMAMUX1_REQ_USART10_RX (*)
  1182. * @note (*) Availability depends on devices.
  1183. */
  1184. __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Stream)
  1185. {
  1186. 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));
  1187. }
  1188. /**
  1189. * @brief Set Memory burst transfer configuration.
  1190. * @rmtoll CR MBURST LL_DMA_SetMemoryBurstxfer
  1191. * @param DMAx DMAx Instance
  1192. * @param Stream This parameter can be one of the following values:
  1193. * @arg @ref LL_DMA_STREAM_0
  1194. * @arg @ref LL_DMA_STREAM_1
  1195. * @arg @ref LL_DMA_STREAM_2
  1196. * @arg @ref LL_DMA_STREAM_3
  1197. * @arg @ref LL_DMA_STREAM_4
  1198. * @arg @ref LL_DMA_STREAM_5
  1199. * @arg @ref LL_DMA_STREAM_6
  1200. * @arg @ref LL_DMA_STREAM_7
  1201. * @param Mburst This parameter can be one of the following values:
  1202. * @arg @ref LL_DMA_MBURST_SINGLE
  1203. * @arg @ref LL_DMA_MBURST_INC4
  1204. * @arg @ref LL_DMA_MBURST_INC8
  1205. * @arg @ref LL_DMA_MBURST_INC16
  1206. * @retval None
  1207. */
  1208. __STATIC_INLINE void LL_DMA_SetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Mburst)
  1209. {
  1210. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1211. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST, Mburst);
  1212. }
  1213. /**
  1214. * @brief Get Memory burst transfer configuration.
  1215. * @rmtoll CR MBURST LL_DMA_GetMemoryBurstxfer
  1216. * @param DMAx DMAx Instance
  1217. * @param Stream This parameter can be one of the following values:
  1218. * @arg @ref LL_DMA_STREAM_0
  1219. * @arg @ref LL_DMA_STREAM_1
  1220. * @arg @ref LL_DMA_STREAM_2
  1221. * @arg @ref LL_DMA_STREAM_3
  1222. * @arg @ref LL_DMA_STREAM_4
  1223. * @arg @ref LL_DMA_STREAM_5
  1224. * @arg @ref LL_DMA_STREAM_6
  1225. * @arg @ref LL_DMA_STREAM_7
  1226. * @retval Returned value can be one of the following values:
  1227. * @arg @ref LL_DMA_MBURST_SINGLE
  1228. * @arg @ref LL_DMA_MBURST_INC4
  1229. * @arg @ref LL_DMA_MBURST_INC8
  1230. * @arg @ref LL_DMA_MBURST_INC16
  1231. */
  1232. __STATIC_INLINE uint32_t LL_DMA_GetMemoryBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
  1233. {
  1234. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1235. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_MBURST));
  1236. }
  1237. /**
  1238. * @brief Set Peripheral burst transfer configuration.
  1239. * @rmtoll CR PBURST LL_DMA_SetPeriphBurstxfer
  1240. * @param DMAx DMAx Instance
  1241. * @param Stream This parameter can be one of the following values:
  1242. * @arg @ref LL_DMA_STREAM_0
  1243. * @arg @ref LL_DMA_STREAM_1
  1244. * @arg @ref LL_DMA_STREAM_2
  1245. * @arg @ref LL_DMA_STREAM_3
  1246. * @arg @ref LL_DMA_STREAM_4
  1247. * @arg @ref LL_DMA_STREAM_5
  1248. * @arg @ref LL_DMA_STREAM_6
  1249. * @arg @ref LL_DMA_STREAM_7
  1250. * @param Pburst This parameter can be one of the following values:
  1251. * @arg @ref LL_DMA_PBURST_SINGLE
  1252. * @arg @ref LL_DMA_PBURST_INC4
  1253. * @arg @ref LL_DMA_PBURST_INC8
  1254. * @arg @ref LL_DMA_PBURST_INC16
  1255. * @retval None
  1256. */
  1257. __STATIC_INLINE void LL_DMA_SetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Pburst)
  1258. {
  1259. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1260. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST, Pburst);
  1261. }
  1262. /**
  1263. * @brief Get Peripheral burst transfer configuration.
  1264. * @rmtoll CR PBURST LL_DMA_GetPeriphBurstxfer
  1265. * @param DMAx DMAx Instance
  1266. * @param Stream This parameter can be one of the following values:
  1267. * @arg @ref LL_DMA_STREAM_0
  1268. * @arg @ref LL_DMA_STREAM_1
  1269. * @arg @ref LL_DMA_STREAM_2
  1270. * @arg @ref LL_DMA_STREAM_3
  1271. * @arg @ref LL_DMA_STREAM_4
  1272. * @arg @ref LL_DMA_STREAM_5
  1273. * @arg @ref LL_DMA_STREAM_6
  1274. * @arg @ref LL_DMA_STREAM_7
  1275. * @retval Returned value can be one of the following values:
  1276. * @arg @ref LL_DMA_PBURST_SINGLE
  1277. * @arg @ref LL_DMA_PBURST_INC4
  1278. * @arg @ref LL_DMA_PBURST_INC8
  1279. * @arg @ref LL_DMA_PBURST_INC16
  1280. */
  1281. __STATIC_INLINE uint32_t LL_DMA_GetPeriphBurstxfer(DMA_TypeDef *DMAx, uint32_t Stream)
  1282. {
  1283. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1284. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_PBURST));
  1285. }
  1286. /**
  1287. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  1288. * @rmtoll CR CT LL_DMA_SetCurrentTargetMem
  1289. * @param DMAx DMAx Instance
  1290. * @param Stream This parameter can be one of the following values:
  1291. * @arg @ref LL_DMA_STREAM_0
  1292. * @arg @ref LL_DMA_STREAM_1
  1293. * @arg @ref LL_DMA_STREAM_2
  1294. * @arg @ref LL_DMA_STREAM_3
  1295. * @arg @ref LL_DMA_STREAM_4
  1296. * @arg @ref LL_DMA_STREAM_5
  1297. * @arg @ref LL_DMA_STREAM_6
  1298. * @arg @ref LL_DMA_STREAM_7
  1299. * @param CurrentMemory This parameter can be one of the following values:
  1300. * @arg @ref LL_DMA_CURRENTTARGETMEM0
  1301. * @arg @ref LL_DMA_CURRENTTARGETMEM1
  1302. * @retval None
  1303. */
  1304. __STATIC_INLINE void LL_DMA_SetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t CurrentMemory)
  1305. {
  1306. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1307. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT, CurrentMemory);
  1308. }
  1309. /**
  1310. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  1311. * @rmtoll CR CT LL_DMA_GetCurrentTargetMem
  1312. * @param DMAx DMAx Instance
  1313. * @param Stream This parameter can be one of the following values:
  1314. * @arg @ref LL_DMA_STREAM_0
  1315. * @arg @ref LL_DMA_STREAM_1
  1316. * @arg @ref LL_DMA_STREAM_2
  1317. * @arg @ref LL_DMA_STREAM_3
  1318. * @arg @ref LL_DMA_STREAM_4
  1319. * @arg @ref LL_DMA_STREAM_5
  1320. * @arg @ref LL_DMA_STREAM_6
  1321. * @arg @ref LL_DMA_STREAM_7
  1322. * @retval Returned value can be one of the following values:
  1323. * @arg @ref LL_DMA_CURRENTTARGETMEM0
  1324. * @arg @ref LL_DMA_CURRENTTARGETMEM1
  1325. */
  1326. __STATIC_INLINE uint32_t LL_DMA_GetCurrentTargetMem(DMA_TypeDef *DMAx, uint32_t Stream)
  1327. {
  1328. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1329. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_CT));
  1330. }
  1331. /**
  1332. * @brief Enable the double buffer mode.
  1333. * @rmtoll CR DBM LL_DMA_EnableDoubleBufferMode
  1334. * @param DMAx DMAx Instance
  1335. * @param Stream This parameter can be one of the following values:
  1336. * @arg @ref LL_DMA_STREAM_0
  1337. * @arg @ref LL_DMA_STREAM_1
  1338. * @arg @ref LL_DMA_STREAM_2
  1339. * @arg @ref LL_DMA_STREAM_3
  1340. * @arg @ref LL_DMA_STREAM_4
  1341. * @arg @ref LL_DMA_STREAM_5
  1342. * @arg @ref LL_DMA_STREAM_6
  1343. * @arg @ref LL_DMA_STREAM_7
  1344. * @retval None
  1345. */
  1346. __STATIC_INLINE void LL_DMA_EnableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1347. {
  1348. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1349. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
  1350. }
  1351. /**
  1352. * @brief Disable the double buffer mode.
  1353. * @rmtoll CR DBM LL_DMA_DisableDoubleBufferMode
  1354. * @param DMAx DMAx Instance
  1355. * @param Stream This parameter can be one of the following values:
  1356. * @arg @ref LL_DMA_STREAM_0
  1357. * @arg @ref LL_DMA_STREAM_1
  1358. * @arg @ref LL_DMA_STREAM_2
  1359. * @arg @ref LL_DMA_STREAM_3
  1360. * @arg @ref LL_DMA_STREAM_4
  1361. * @arg @ref LL_DMA_STREAM_5
  1362. * @arg @ref LL_DMA_STREAM_6
  1363. * @arg @ref LL_DMA_STREAM_7
  1364. * @retval None
  1365. */
  1366. __STATIC_INLINE void LL_DMA_DisableDoubleBufferMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1367. {
  1368. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1369. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DBM);
  1370. }
  1371. /**
  1372. * @brief Get FIFO status.
  1373. * @rmtoll FCR FS LL_DMA_GetFIFOStatus
  1374. * @param DMAx DMAx Instance
  1375. * @param Stream This parameter can be one of the following values:
  1376. * @arg @ref LL_DMA_STREAM_0
  1377. * @arg @ref LL_DMA_STREAM_1
  1378. * @arg @ref LL_DMA_STREAM_2
  1379. * @arg @ref LL_DMA_STREAM_3
  1380. * @arg @ref LL_DMA_STREAM_4
  1381. * @arg @ref LL_DMA_STREAM_5
  1382. * @arg @ref LL_DMA_STREAM_6
  1383. * @arg @ref LL_DMA_STREAM_7
  1384. * @retval Returned value can be one of the following values:
  1385. * @arg @ref LL_DMA_FIFOSTATUS_0_25
  1386. * @arg @ref LL_DMA_FIFOSTATUS_25_50
  1387. * @arg @ref LL_DMA_FIFOSTATUS_50_75
  1388. * @arg @ref LL_DMA_FIFOSTATUS_75_100
  1389. * @arg @ref LL_DMA_FIFOSTATUS_EMPTY
  1390. * @arg @ref LL_DMA_FIFOSTATUS_FULL
  1391. */
  1392. __STATIC_INLINE uint32_t LL_DMA_GetFIFOStatus(DMA_TypeDef *DMAx, uint32_t Stream)
  1393. {
  1394. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1395. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FS));
  1396. }
  1397. /**
  1398. * @brief Disable Fifo mode.
  1399. * @rmtoll FCR DMDIS LL_DMA_DisableFifoMode
  1400. * @param DMAx DMAx Instance
  1401. * @param Stream This parameter can be one of the following values:
  1402. * @arg @ref LL_DMA_STREAM_0
  1403. * @arg @ref LL_DMA_STREAM_1
  1404. * @arg @ref LL_DMA_STREAM_2
  1405. * @arg @ref LL_DMA_STREAM_3
  1406. * @arg @ref LL_DMA_STREAM_4
  1407. * @arg @ref LL_DMA_STREAM_5
  1408. * @arg @ref LL_DMA_STREAM_6
  1409. * @arg @ref LL_DMA_STREAM_7
  1410. * @retval None
  1411. */
  1412. __STATIC_INLINE void LL_DMA_DisableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1413. {
  1414. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1415. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
  1416. }
  1417. /**
  1418. * @brief Enable Fifo mode.
  1419. * @rmtoll FCR DMDIS LL_DMA_EnableFifoMode
  1420. * @param DMAx DMAx Instance
  1421. * @param Stream This parameter can be one of the following values:
  1422. * @arg @ref LL_DMA_STREAM_0
  1423. * @arg @ref LL_DMA_STREAM_1
  1424. * @arg @ref LL_DMA_STREAM_2
  1425. * @arg @ref LL_DMA_STREAM_3
  1426. * @arg @ref LL_DMA_STREAM_4
  1427. * @arg @ref LL_DMA_STREAM_5
  1428. * @arg @ref LL_DMA_STREAM_6
  1429. * @arg @ref LL_DMA_STREAM_7
  1430. * @retval None
  1431. */
  1432. __STATIC_INLINE void LL_DMA_EnableFifoMode(DMA_TypeDef *DMAx, uint32_t Stream)
  1433. {
  1434. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1435. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_DMDIS);
  1436. }
  1437. /**
  1438. * @brief Select FIFO threshold.
  1439. * @rmtoll FCR FTH LL_DMA_SetFIFOThreshold
  1440. * @param DMAx DMAx Instance
  1441. * @param Stream This parameter can be one of the following values:
  1442. * @arg @ref LL_DMA_STREAM_0
  1443. * @arg @ref LL_DMA_STREAM_1
  1444. * @arg @ref LL_DMA_STREAM_2
  1445. * @arg @ref LL_DMA_STREAM_3
  1446. * @arg @ref LL_DMA_STREAM_4
  1447. * @arg @ref LL_DMA_STREAM_5
  1448. * @arg @ref LL_DMA_STREAM_6
  1449. * @arg @ref LL_DMA_STREAM_7
  1450. * @param Threshold This parameter can be one of the following values:
  1451. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1452. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1453. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1454. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1455. * @retval None
  1456. */
  1457. __STATIC_INLINE void LL_DMA_SetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Threshold)
  1458. {
  1459. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1460. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH, Threshold);
  1461. }
  1462. /**
  1463. * @brief Get FIFO threshold.
  1464. * @rmtoll FCR FTH LL_DMA_GetFIFOThreshold
  1465. * @param DMAx DMAx Instance
  1466. * @param Stream This parameter can be one of the following values:
  1467. * @arg @ref LL_DMA_STREAM_0
  1468. * @arg @ref LL_DMA_STREAM_1
  1469. * @arg @ref LL_DMA_STREAM_2
  1470. * @arg @ref LL_DMA_STREAM_3
  1471. * @arg @ref LL_DMA_STREAM_4
  1472. * @arg @ref LL_DMA_STREAM_5
  1473. * @arg @ref LL_DMA_STREAM_6
  1474. * @arg @ref LL_DMA_STREAM_7
  1475. * @retval Returned value can be one of the following values:
  1476. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1477. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1478. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1479. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1480. */
  1481. __STATIC_INLINE uint32_t LL_DMA_GetFIFOThreshold(DMA_TypeDef *DMAx, uint32_t Stream)
  1482. {
  1483. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1484. return (READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH));
  1485. }
  1486. /**
  1487. * @brief Configure the FIFO .
  1488. * @rmtoll FCR FTH LL_DMA_ConfigFifo\n
  1489. * FCR DMDIS LL_DMA_ConfigFifo
  1490. * @param DMAx DMAx Instance
  1491. * @param Stream This parameter can be one of the following values:
  1492. * @arg @ref LL_DMA_STREAM_0
  1493. * @arg @ref LL_DMA_STREAM_1
  1494. * @arg @ref LL_DMA_STREAM_2
  1495. * @arg @ref LL_DMA_STREAM_3
  1496. * @arg @ref LL_DMA_STREAM_4
  1497. * @arg @ref LL_DMA_STREAM_5
  1498. * @arg @ref LL_DMA_STREAM_6
  1499. * @arg @ref LL_DMA_STREAM_7
  1500. * @param FifoMode This parameter can be one of the following values:
  1501. * @arg @ref LL_DMA_FIFOMODE_ENABLE
  1502. * @arg @ref LL_DMA_FIFOMODE_DISABLE
  1503. * @param FifoThreshold This parameter can be one of the following values:
  1504. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_4
  1505. * @arg @ref LL_DMA_FIFOTHRESHOLD_1_2
  1506. * @arg @ref LL_DMA_FIFOTHRESHOLD_3_4
  1507. * @arg @ref LL_DMA_FIFOTHRESHOLD_FULL
  1508. * @retval None
  1509. */
  1510. __STATIC_INLINE void LL_DMA_ConfigFifo(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t FifoMode, uint32_t FifoThreshold)
  1511. {
  1512. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1513. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FTH | DMA_SxFCR_DMDIS, FifoMode | FifoThreshold);
  1514. }
  1515. /**
  1516. * @brief Configure the Source and Destination addresses.
  1517. * @note This API must not be called when the DMA stream is enabled.
  1518. * @rmtoll M0AR M0A LL_DMA_ConfigAddresses\n
  1519. * PAR PA LL_DMA_ConfigAddresses
  1520. * @param DMAx DMAx Instance
  1521. * @param Stream This parameter can be one of the following values:
  1522. * @arg @ref LL_DMA_STREAM_0
  1523. * @arg @ref LL_DMA_STREAM_1
  1524. * @arg @ref LL_DMA_STREAM_2
  1525. * @arg @ref LL_DMA_STREAM_3
  1526. * @arg @ref LL_DMA_STREAM_4
  1527. * @arg @ref LL_DMA_STREAM_5
  1528. * @arg @ref LL_DMA_STREAM_6
  1529. * @arg @ref LL_DMA_STREAM_7
  1530. * @param SrcAddress Between 0 to 0xFFFFFFFF
  1531. * @param DstAddress Between 0 to 0xFFFFFFFF
  1532. * @param Direction This parameter can be one of the following values:
  1533. * @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
  1534. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
  1535. * @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
  1536. * @retval None
  1537. */
  1538. __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction)
  1539. {
  1540. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1541. /* Direction Memory to Periph */
  1542. if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
  1543. {
  1544. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, SrcAddress);
  1545. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, DstAddress);
  1546. }
  1547. /* Direction Periph to Memory and Memory to Memory */
  1548. else
  1549. {
  1550. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, SrcAddress);
  1551. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, DstAddress);
  1552. }
  1553. }
  1554. /**
  1555. * @brief Set the Memory address.
  1556. * @rmtoll M0AR M0A LL_DMA_SetMemoryAddress
  1557. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1558. * @note This API must not be called when the DMA stream is enabled.
  1559. * @param DMAx DMAx Instance
  1560. * @param Stream This parameter can be one of the following values:
  1561. * @arg @ref LL_DMA_STREAM_0
  1562. * @arg @ref LL_DMA_STREAM_1
  1563. * @arg @ref LL_DMA_STREAM_2
  1564. * @arg @ref LL_DMA_STREAM_3
  1565. * @arg @ref LL_DMA_STREAM_4
  1566. * @arg @ref LL_DMA_STREAM_5
  1567. * @arg @ref LL_DMA_STREAM_6
  1568. * @arg @ref LL_DMA_STREAM_7
  1569. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1570. * @retval None
  1571. */
  1572. __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1573. {
  1574. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1575. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
  1576. }
  1577. /**
  1578. * @brief Set the Peripheral address.
  1579. * @rmtoll PAR PA LL_DMA_SetPeriphAddress
  1580. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1581. * @note This API must not be called when the DMA stream is enabled.
  1582. * @param DMAx DMAx Instance
  1583. * @param Stream This parameter can be one of the following values:
  1584. * @arg @ref LL_DMA_STREAM_0
  1585. * @arg @ref LL_DMA_STREAM_1
  1586. * @arg @ref LL_DMA_STREAM_2
  1587. * @arg @ref LL_DMA_STREAM_3
  1588. * @arg @ref LL_DMA_STREAM_4
  1589. * @arg @ref LL_DMA_STREAM_5
  1590. * @arg @ref LL_DMA_STREAM_6
  1591. * @arg @ref LL_DMA_STREAM_7
  1592. * @param PeriphAddress Between 0 to 0xFFFFFFFF
  1593. * @retval None
  1594. */
  1595. __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t PeriphAddress)
  1596. {
  1597. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1598. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, PeriphAddress);
  1599. }
  1600. /**
  1601. * @brief Get the Memory address.
  1602. * @rmtoll M0AR M0A LL_DMA_GetMemoryAddress
  1603. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1604. * @param DMAx DMAx Instance
  1605. * @param Stream This parameter can be one of the following values:
  1606. * @arg @ref LL_DMA_STREAM_0
  1607. * @arg @ref LL_DMA_STREAM_1
  1608. * @arg @ref LL_DMA_STREAM_2
  1609. * @arg @ref LL_DMA_STREAM_3
  1610. * @arg @ref LL_DMA_STREAM_4
  1611. * @arg @ref LL_DMA_STREAM_5
  1612. * @arg @ref LL_DMA_STREAM_6
  1613. * @arg @ref LL_DMA_STREAM_7
  1614. * @retval Between 0 to 0xFFFFFFFF
  1615. */
  1616. __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1617. {
  1618. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1619. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
  1620. }
  1621. /**
  1622. * @brief Get the Peripheral address.
  1623. * @rmtoll PAR PA LL_DMA_GetPeriphAddress
  1624. * @note Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
  1625. * @param DMAx DMAx Instance
  1626. * @param Stream This parameter can be one of the following values:
  1627. * @arg @ref LL_DMA_STREAM_0
  1628. * @arg @ref LL_DMA_STREAM_1
  1629. * @arg @ref LL_DMA_STREAM_2
  1630. * @arg @ref LL_DMA_STREAM_3
  1631. * @arg @ref LL_DMA_STREAM_4
  1632. * @arg @ref LL_DMA_STREAM_5
  1633. * @arg @ref LL_DMA_STREAM_6
  1634. * @arg @ref LL_DMA_STREAM_7
  1635. * @retval Between 0 to 0xFFFFFFFF
  1636. */
  1637. __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1638. {
  1639. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1640. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
  1641. }
  1642. /**
  1643. * @brief Set the Memory to Memory Source address.
  1644. * @rmtoll PAR PA LL_DMA_SetM2MSrcAddress
  1645. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1646. * @note This API must not be called when the DMA stream is enabled.
  1647. * @param DMAx DMAx Instance
  1648. * @param Stream This parameter can be one of the following values:
  1649. * @arg @ref LL_DMA_STREAM_0
  1650. * @arg @ref LL_DMA_STREAM_1
  1651. * @arg @ref LL_DMA_STREAM_2
  1652. * @arg @ref LL_DMA_STREAM_3
  1653. * @arg @ref LL_DMA_STREAM_4
  1654. * @arg @ref LL_DMA_STREAM_5
  1655. * @arg @ref LL_DMA_STREAM_6
  1656. * @arg @ref LL_DMA_STREAM_7
  1657. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1658. * @retval None
  1659. */
  1660. __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1661. {
  1662. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1663. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR, MemoryAddress);
  1664. }
  1665. /**
  1666. * @brief Set the Memory to Memory Destination address.
  1667. * @rmtoll M0AR M0A LL_DMA_SetM2MDstAddress
  1668. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1669. * @note This API must not be called when the DMA stream is enabled.
  1670. * @param DMAx DMAx Instance
  1671. * @param Stream This parameter can be one of the following values:
  1672. * @arg @ref LL_DMA_STREAM_0
  1673. * @arg @ref LL_DMA_STREAM_1
  1674. * @arg @ref LL_DMA_STREAM_2
  1675. * @arg @ref LL_DMA_STREAM_3
  1676. * @arg @ref LL_DMA_STREAM_4
  1677. * @arg @ref LL_DMA_STREAM_5
  1678. * @arg @ref LL_DMA_STREAM_6
  1679. * @arg @ref LL_DMA_STREAM_7
  1680. * @param MemoryAddress Between 0 to 0xFFFFFFFF
  1681. * @retval None
  1682. */
  1683. __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t MemoryAddress)
  1684. {
  1685. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1686. WRITE_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR, MemoryAddress);
  1687. }
  1688. /**
  1689. * @brief Get the Memory to Memory Source address.
  1690. * @rmtoll PAR PA LL_DMA_GetM2MSrcAddress
  1691. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1692. * @param DMAx DMAx Instance
  1693. * @param Stream This parameter can be one of the following values:
  1694. * @arg @ref LL_DMA_STREAM_0
  1695. * @arg @ref LL_DMA_STREAM_1
  1696. * @arg @ref LL_DMA_STREAM_2
  1697. * @arg @ref LL_DMA_STREAM_3
  1698. * @arg @ref LL_DMA_STREAM_4
  1699. * @arg @ref LL_DMA_STREAM_5
  1700. * @arg @ref LL_DMA_STREAM_6
  1701. * @arg @ref LL_DMA_STREAM_7
  1702. * @retval Between 0 to 0xFFFFFFFF
  1703. */
  1704. __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1705. {
  1706. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1707. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->PAR));
  1708. }
  1709. /**
  1710. * @brief Get the Memory to Memory Destination address.
  1711. * @rmtoll M0AR M0A LL_DMA_GetM2MDstAddress
  1712. * @note Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
  1713. * @param DMAx DMAx Instance
  1714. * @param Stream This parameter can be one of the following values:
  1715. * @arg @ref LL_DMA_STREAM_0
  1716. * @arg @ref LL_DMA_STREAM_1
  1717. * @arg @ref LL_DMA_STREAM_2
  1718. * @arg @ref LL_DMA_STREAM_3
  1719. * @arg @ref LL_DMA_STREAM_4
  1720. * @arg @ref LL_DMA_STREAM_5
  1721. * @arg @ref LL_DMA_STREAM_6
  1722. * @arg @ref LL_DMA_STREAM_7
  1723. * @retval Between 0 to 0xFFFFFFFF
  1724. */
  1725. __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef *DMAx, uint32_t Stream)
  1726. {
  1727. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1728. return (READ_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M0AR));
  1729. }
  1730. /**
  1731. * @brief Set Memory 1 address (used in case of Double buffer mode).
  1732. * @rmtoll M1AR M1A LL_DMA_SetMemory1Address
  1733. * @param DMAx DMAx Instance
  1734. * @param Stream This parameter can be one of the following values:
  1735. * @arg @ref LL_DMA_STREAM_0
  1736. * @arg @ref LL_DMA_STREAM_1
  1737. * @arg @ref LL_DMA_STREAM_2
  1738. * @arg @ref LL_DMA_STREAM_3
  1739. * @arg @ref LL_DMA_STREAM_4
  1740. * @arg @ref LL_DMA_STREAM_5
  1741. * @arg @ref LL_DMA_STREAM_6
  1742. * @arg @ref LL_DMA_STREAM_7
  1743. * @param Address Between 0 to 0xFFFFFFFF
  1744. * @retval None
  1745. */
  1746. __STATIC_INLINE void LL_DMA_SetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream, uint32_t Address)
  1747. {
  1748. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1749. MODIFY_REG(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR, DMA_SxM1AR_M1A, Address);
  1750. }
  1751. /**
  1752. * @brief Get Memory 1 address (used in case of Double buffer mode).
  1753. * @rmtoll M1AR M1A LL_DMA_GetMemory1Address
  1754. * @param DMAx DMAx Instance
  1755. * @param Stream This parameter can be one of the following values:
  1756. * @arg @ref LL_DMA_STREAM_0
  1757. * @arg @ref LL_DMA_STREAM_1
  1758. * @arg @ref LL_DMA_STREAM_2
  1759. * @arg @ref LL_DMA_STREAM_3
  1760. * @arg @ref LL_DMA_STREAM_4
  1761. * @arg @ref LL_DMA_STREAM_5
  1762. * @arg @ref LL_DMA_STREAM_6
  1763. * @arg @ref LL_DMA_STREAM_7
  1764. * @retval Between 0 to 0xFFFFFFFF
  1765. */
  1766. __STATIC_INLINE uint32_t LL_DMA_GetMemory1Address(DMA_TypeDef *DMAx, uint32_t Stream)
  1767. {
  1768. register uint32_t dma_base_addr = (uint32_t)DMAx;
  1769. return (((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->M1AR);
  1770. }
  1771. /**
  1772. * @}
  1773. */
  1774. /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management
  1775. * @{
  1776. */
  1777. /**
  1778. * @brief Get Stream 0 half transfer flag.
  1779. * @rmtoll LISR HTIF0 LL_DMA_IsActiveFlag_HT0
  1780. * @param DMAx DMAx Instance
  1781. * @retval State of bit (1 or 0).
  1782. */
  1783. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT0(DMA_TypeDef *DMAx)
  1784. {
  1785. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF0) == (DMA_LISR_HTIF0)) ? 1UL : 0UL);
  1786. }
  1787. /**
  1788. * @brief Get Stream 1 half transfer flag.
  1789. * @rmtoll LISR HTIF1 LL_DMA_IsActiveFlag_HT1
  1790. * @param DMAx DMAx Instance
  1791. * @retval State of bit (1 or 0).
  1792. */
  1793. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef *DMAx)
  1794. {
  1795. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF1) == (DMA_LISR_HTIF1)) ? 1UL : 0UL);
  1796. }
  1797. /**
  1798. * @brief Get Stream 2 half transfer flag.
  1799. * @rmtoll LISR HTIF2 LL_DMA_IsActiveFlag_HT2
  1800. * @param DMAx DMAx Instance
  1801. * @retval State of bit (1 or 0).
  1802. */
  1803. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef *DMAx)
  1804. {
  1805. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF2) == (DMA_LISR_HTIF2)) ? 1UL : 0UL);
  1806. }
  1807. /**
  1808. * @brief Get Stream 3 half transfer flag.
  1809. * @rmtoll LISR HTIF3 LL_DMA_IsActiveFlag_HT3
  1810. * @param DMAx DMAx Instance
  1811. * @retval State of bit (1 or 0).
  1812. */
  1813. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef *DMAx)
  1814. {
  1815. return ((READ_BIT(DMAx->LISR, DMA_LISR_HTIF3) == (DMA_LISR_HTIF3)) ? 1UL : 0UL);
  1816. }
  1817. /**
  1818. * @brief Get Stream 4 half transfer flag.
  1819. * @rmtoll HISR HTIF4 LL_DMA_IsActiveFlag_HT4
  1820. * @param DMAx DMAx Instance
  1821. * @retval State of bit (1 or 0).
  1822. */
  1823. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef *DMAx)
  1824. {
  1825. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF4) == (DMA_HISR_HTIF4)) ? 1UL : 0UL);
  1826. }
  1827. /**
  1828. * @brief Get Stream 5 half transfer flag.
  1829. * @rmtoll HISR HTIF0 LL_DMA_IsActiveFlag_HT5
  1830. * @param DMAx DMAx Instance
  1831. * @retval State of bit (1 or 0).
  1832. */
  1833. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef *DMAx)
  1834. {
  1835. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF5) == (DMA_HISR_HTIF5)) ? 1UL : 0UL);
  1836. }
  1837. /**
  1838. * @brief Get Stream 6 half transfer flag.
  1839. * @rmtoll HISR HTIF6 LL_DMA_IsActiveFlag_HT6
  1840. * @param DMAx DMAx Instance
  1841. * @retval State of bit (1 or 0).
  1842. */
  1843. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef *DMAx)
  1844. {
  1845. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF6) == (DMA_HISR_HTIF6)) ? 1UL : 0UL);
  1846. }
  1847. /**
  1848. * @brief Get Stream 7 half transfer flag.
  1849. * @rmtoll HISR HTIF7 LL_DMA_IsActiveFlag_HT7
  1850. * @param DMAx DMAx Instance
  1851. * @retval State of bit (1 or 0).
  1852. */
  1853. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef *DMAx)
  1854. {
  1855. return ((READ_BIT(DMAx->HISR, DMA_HISR_HTIF7) == (DMA_HISR_HTIF7)) ? 1UL : 0UL);
  1856. }
  1857. /**
  1858. * @brief Get Stream 0 transfer complete flag.
  1859. * @rmtoll LISR TCIF0 LL_DMA_IsActiveFlag_TC0
  1860. * @param DMAx DMAx Instance
  1861. * @retval State of bit (1 or 0).
  1862. */
  1863. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC0(DMA_TypeDef *DMAx)
  1864. {
  1865. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF0) == (DMA_LISR_TCIF0)) ? 1UL : 0UL);
  1866. }
  1867. /**
  1868. * @brief Get Stream 1 transfer complete flag.
  1869. * @rmtoll LISR TCIF1 LL_DMA_IsActiveFlag_TC1
  1870. * @param DMAx DMAx Instance
  1871. * @retval State of bit (1 or 0).
  1872. */
  1873. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef *DMAx)
  1874. {
  1875. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF1) == (DMA_LISR_TCIF1)) ? 1UL : 0UL);
  1876. }
  1877. /**
  1878. * @brief Get Stream 2 transfer complete flag.
  1879. * @rmtoll LISR TCIF2 LL_DMA_IsActiveFlag_TC2
  1880. * @param DMAx DMAx Instance
  1881. * @retval State of bit (1 or 0).
  1882. */
  1883. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef *DMAx)
  1884. {
  1885. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF2) == (DMA_LISR_TCIF2)) ? 1UL : 0UL);
  1886. }
  1887. /**
  1888. * @brief Get Stream 3 transfer complete flag.
  1889. * @rmtoll LISR TCIF3 LL_DMA_IsActiveFlag_TC3
  1890. * @param DMAx DMAx Instance
  1891. * @retval State of bit (1 or 0).
  1892. */
  1893. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef *DMAx)
  1894. {
  1895. return ((READ_BIT(DMAx->LISR, DMA_LISR_TCIF3) == (DMA_LISR_TCIF3)) ? 1UL : 0UL);
  1896. }
  1897. /**
  1898. * @brief Get Stream 4 transfer complete flag.
  1899. * @rmtoll HISR TCIF4 LL_DMA_IsActiveFlag_TC4
  1900. * @param DMAx DMAx Instance
  1901. * @retval State of bit (1 or 0).
  1902. */
  1903. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef *DMAx)
  1904. {
  1905. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF4) == (DMA_HISR_TCIF4)) ? 1UL : 0UL);
  1906. }
  1907. /**
  1908. * @brief Get Stream 5 transfer complete flag.
  1909. * @rmtoll HISR TCIF0 LL_DMA_IsActiveFlag_TC5
  1910. * @param DMAx DMAx Instance
  1911. * @retval State of bit (1 or 0).
  1912. */
  1913. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef *DMAx)
  1914. {
  1915. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF5) == (DMA_HISR_TCIF5)) ? 1UL : 0UL);
  1916. }
  1917. /**
  1918. * @brief Get Stream 6 transfer complete flag.
  1919. * @rmtoll HISR TCIF6 LL_DMA_IsActiveFlag_TC6
  1920. * @param DMAx DMAx Instance
  1921. * @retval State of bit (1 or 0).
  1922. */
  1923. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef *DMAx)
  1924. {
  1925. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF6) == (DMA_HISR_TCIF6)) ? 1UL : 0UL);
  1926. }
  1927. /**
  1928. * @brief Get Stream 7 transfer complete flag.
  1929. * @rmtoll HISR TCIF7 LL_DMA_IsActiveFlag_TC7
  1930. * @param DMAx DMAx Instance
  1931. * @retval State of bit (1 or 0).
  1932. */
  1933. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef *DMAx)
  1934. {
  1935. return ((READ_BIT(DMAx->HISR, DMA_HISR_TCIF7) == (DMA_HISR_TCIF7)) ? 1UL : 0UL);
  1936. }
  1937. /**
  1938. * @brief Get Stream 0 transfer error flag.
  1939. * @rmtoll LISR TEIF0 LL_DMA_IsActiveFlag_TE0
  1940. * @param DMAx DMAx Instance
  1941. * @retval State of bit (1 or 0).
  1942. */
  1943. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE0(DMA_TypeDef *DMAx)
  1944. {
  1945. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF0) == (DMA_LISR_TEIF0)) ? 1UL : 0UL);
  1946. }
  1947. /**
  1948. * @brief Get Stream 1 transfer error flag.
  1949. * @rmtoll LISR TEIF1 LL_DMA_IsActiveFlag_TE1
  1950. * @param DMAx DMAx Instance
  1951. * @retval State of bit (1 or 0).
  1952. */
  1953. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef *DMAx)
  1954. {
  1955. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF1) == (DMA_LISR_TEIF1)) ? 1UL : 0UL);
  1956. }
  1957. /**
  1958. * @brief Get Stream 2 transfer error flag.
  1959. * @rmtoll LISR TEIF2 LL_DMA_IsActiveFlag_TE2
  1960. * @param DMAx DMAx Instance
  1961. * @retval State of bit (1 or 0).
  1962. */
  1963. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef *DMAx)
  1964. {
  1965. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF2) == (DMA_LISR_TEIF2)) ? 1UL : 0UL);
  1966. }
  1967. /**
  1968. * @brief Get Stream 3 transfer error flag.
  1969. * @rmtoll LISR TEIF3 LL_DMA_IsActiveFlag_TE3
  1970. * @param DMAx DMAx Instance
  1971. * @retval State of bit (1 or 0).
  1972. */
  1973. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef *DMAx)
  1974. {
  1975. return ((READ_BIT(DMAx->LISR, DMA_LISR_TEIF3) == (DMA_LISR_TEIF3)) ? 1UL : 0UL);
  1976. }
  1977. /**
  1978. * @brief Get Stream 4 transfer error flag.
  1979. * @rmtoll HISR TEIF4 LL_DMA_IsActiveFlag_TE4
  1980. * @param DMAx DMAx Instance
  1981. * @retval State of bit (1 or 0).
  1982. */
  1983. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef *DMAx)
  1984. {
  1985. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF4) == (DMA_HISR_TEIF4)) ? 1UL : 0UL);
  1986. }
  1987. /**
  1988. * @brief Get Stream 5 transfer error flag.
  1989. * @rmtoll HISR TEIF0 LL_DMA_IsActiveFlag_TE5
  1990. * @param DMAx DMAx Instance
  1991. * @retval State of bit (1 or 0).
  1992. */
  1993. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef *DMAx)
  1994. {
  1995. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF5) == (DMA_HISR_TEIF5)) ? 1UL : 0UL);
  1996. }
  1997. /**
  1998. * @brief Get Stream 6 transfer error flag.
  1999. * @rmtoll HISR TEIF6 LL_DMA_IsActiveFlag_TE6
  2000. * @param DMAx DMAx Instance
  2001. * @retval State of bit (1 or 0).
  2002. */
  2003. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef *DMAx)
  2004. {
  2005. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF6) == (DMA_HISR_TEIF6)) ? 1UL : 0UL);
  2006. }
  2007. /**
  2008. * @brief Get Stream 7 transfer error flag.
  2009. * @rmtoll HISR TEIF7 LL_DMA_IsActiveFlag_TE7
  2010. * @param DMAx DMAx Instance
  2011. * @retval State of bit (1 or 0).
  2012. */
  2013. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef *DMAx)
  2014. {
  2015. return ((READ_BIT(DMAx->HISR, DMA_HISR_TEIF7) == (DMA_HISR_TEIF7)) ? 1UL : 0UL);
  2016. }
  2017. /**
  2018. * @brief Get Stream 0 direct mode error flag.
  2019. * @rmtoll LISR DMEIF0 LL_DMA_IsActiveFlag_DME0
  2020. * @param DMAx DMAx Instance
  2021. * @retval State of bit (1 or 0).
  2022. */
  2023. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME0(DMA_TypeDef *DMAx)
  2024. {
  2025. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF0) == (DMA_LISR_DMEIF0)) ? 1UL : 0UL);
  2026. }
  2027. /**
  2028. * @brief Get Stream 1 direct mode error flag.
  2029. * @rmtoll LISR DMEIF1 LL_DMA_IsActiveFlag_DME1
  2030. * @param DMAx DMAx Instance
  2031. * @retval State of bit (1 or 0).
  2032. */
  2033. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME1(DMA_TypeDef *DMAx)
  2034. {
  2035. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF1) == (DMA_LISR_DMEIF1)) ? 1UL : 0UL);
  2036. }
  2037. /**
  2038. * @brief Get Stream 2 direct mode error flag.
  2039. * @rmtoll LISR DMEIF2 LL_DMA_IsActiveFlag_DME2
  2040. * @param DMAx DMAx Instance
  2041. * @retval State of bit (1 or 0).
  2042. */
  2043. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME2(DMA_TypeDef *DMAx)
  2044. {
  2045. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF2) == (DMA_LISR_DMEIF2)) ? 1UL : 0UL);
  2046. }
  2047. /**
  2048. * @brief Get Stream 3 direct mode error flag.
  2049. * @rmtoll LISR DMEIF3 LL_DMA_IsActiveFlag_DME3
  2050. * @param DMAx DMAx Instance
  2051. * @retval State of bit (1 or 0).
  2052. */
  2053. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME3(DMA_TypeDef *DMAx)
  2054. {
  2055. return ((READ_BIT(DMAx->LISR, DMA_LISR_DMEIF3) == (DMA_LISR_DMEIF3)) ? 1UL : 0UL);
  2056. }
  2057. /**
  2058. * @brief Get Stream 4 direct mode error flag.
  2059. * @rmtoll HISR DMEIF4 LL_DMA_IsActiveFlag_DME4
  2060. * @param DMAx DMAx Instance
  2061. * @retval State of bit (1 or 0).
  2062. */
  2063. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME4(DMA_TypeDef *DMAx)
  2064. {
  2065. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF4) == (DMA_HISR_DMEIF4)) ? 1UL : 0UL);
  2066. }
  2067. /**
  2068. * @brief Get Stream 5 direct mode error flag.
  2069. * @rmtoll HISR DMEIF0 LL_DMA_IsActiveFlag_DME5
  2070. * @param DMAx DMAx Instance
  2071. * @retval State of bit (1 or 0).
  2072. */
  2073. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME5(DMA_TypeDef *DMAx)
  2074. {
  2075. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF5) == (DMA_HISR_DMEIF5)) ? 1UL : 0UL);
  2076. }
  2077. /**
  2078. * @brief Get Stream 6 direct mode error flag.
  2079. * @rmtoll HISR DMEIF6 LL_DMA_IsActiveFlag_DME6
  2080. * @param DMAx DMAx Instance
  2081. * @retval State of bit (1 or 0).
  2082. */
  2083. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME6(DMA_TypeDef *DMAx)
  2084. {
  2085. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF6) == (DMA_HISR_DMEIF6)) ? 1UL : 0UL);
  2086. }
  2087. /**
  2088. * @brief Get Stream 7 direct mode error flag.
  2089. * @rmtoll HISR DMEIF7 LL_DMA_IsActiveFlag_DME7
  2090. * @param DMAx DMAx Instance
  2091. * @retval State of bit (1 or 0).
  2092. */
  2093. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_DME7(DMA_TypeDef *DMAx)
  2094. {
  2095. return ((READ_BIT(DMAx->HISR, DMA_HISR_DMEIF7) == (DMA_HISR_DMEIF7)) ? 1UL : 0UL);
  2096. }
  2097. /**
  2098. * @brief Get Stream 0 FIFO error flag.
  2099. * @rmtoll LISR FEIF0 LL_DMA_IsActiveFlag_FE0
  2100. * @param DMAx DMAx Instance
  2101. * @retval State of bit (1 or 0).
  2102. */
  2103. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE0(DMA_TypeDef *DMAx)
  2104. {
  2105. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF0) == (DMA_LISR_FEIF0)) ? 1UL : 0UL);
  2106. }
  2107. /**
  2108. * @brief Get Stream 1 FIFO error flag.
  2109. * @rmtoll LISR FEIF1 LL_DMA_IsActiveFlag_FE1
  2110. * @param DMAx DMAx Instance
  2111. * @retval State of bit (1 or 0).
  2112. */
  2113. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE1(DMA_TypeDef *DMAx)
  2114. {
  2115. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF1) == (DMA_LISR_FEIF1)) ? 1UL : 0UL);
  2116. }
  2117. /**
  2118. * @brief Get Stream 2 FIFO error flag.
  2119. * @rmtoll LISR FEIF2 LL_DMA_IsActiveFlag_FE2
  2120. * @param DMAx DMAx Instance
  2121. * @retval State of bit (1 or 0).
  2122. */
  2123. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE2(DMA_TypeDef *DMAx)
  2124. {
  2125. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF2) == (DMA_LISR_FEIF2)) ? 1UL : 0UL);
  2126. }
  2127. /**
  2128. * @brief Get Stream 3 FIFO error flag.
  2129. * @rmtoll LISR FEIF3 LL_DMA_IsActiveFlag_FE3
  2130. * @param DMAx DMAx Instance
  2131. * @retval State of bit (1 or 0).
  2132. */
  2133. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE3(DMA_TypeDef *DMAx)
  2134. {
  2135. return ((READ_BIT(DMAx->LISR, DMA_LISR_FEIF3) == (DMA_LISR_FEIF3)) ? 1UL : 0UL);
  2136. }
  2137. /**
  2138. * @brief Get Stream 4 FIFO error flag.
  2139. * @rmtoll HISR FEIF4 LL_DMA_IsActiveFlag_FE4
  2140. * @param DMAx DMAx Instance
  2141. * @retval State of bit (1 or 0).
  2142. */
  2143. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE4(DMA_TypeDef *DMAx)
  2144. {
  2145. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF4) == (DMA_HISR_FEIF4)) ? 1UL : 0UL);
  2146. }
  2147. /**
  2148. * @brief Get Stream 5 FIFO error flag.
  2149. * @rmtoll HISR FEIF0 LL_DMA_IsActiveFlag_FE5
  2150. * @param DMAx DMAx Instance
  2151. * @retval State of bit (1 or 0).
  2152. */
  2153. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE5(DMA_TypeDef *DMAx)
  2154. {
  2155. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF5) == (DMA_HISR_FEIF5)) ? 1UL : 0UL);
  2156. }
  2157. /**
  2158. * @brief Get Stream 6 FIFO error flag.
  2159. * @rmtoll HISR FEIF6 LL_DMA_IsActiveFlag_FE6
  2160. * @param DMAx DMAx Instance
  2161. * @retval State of bit (1 or 0).
  2162. */
  2163. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE6(DMA_TypeDef *DMAx)
  2164. {
  2165. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF6) == (DMA_HISR_FEIF6)) ? 1UL : 0UL);
  2166. }
  2167. /**
  2168. * @brief Get Stream 7 FIFO error flag.
  2169. * @rmtoll HISR FEIF7 LL_DMA_IsActiveFlag_FE7
  2170. * @param DMAx DMAx Instance
  2171. * @retval State of bit (1 or 0).
  2172. */
  2173. __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_FE7(DMA_TypeDef *DMAx)
  2174. {
  2175. return ((READ_BIT(DMAx->HISR, DMA_HISR_FEIF7) == (DMA_HISR_FEIF7)) ? 1UL : 0UL);
  2176. }
  2177. /**
  2178. * @brief Clear Stream 0 half transfer flag.
  2179. * @rmtoll LIFCR CHTIF0 LL_DMA_ClearFlag_HT0
  2180. * @param DMAx DMAx Instance
  2181. * @retval None
  2182. */
  2183. __STATIC_INLINE void LL_DMA_ClearFlag_HT0(DMA_TypeDef *DMAx)
  2184. {
  2185. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF0);
  2186. }
  2187. /**
  2188. * @brief Clear Stream 1 half transfer flag.
  2189. * @rmtoll LIFCR CHTIF1 LL_DMA_ClearFlag_HT1
  2190. * @param DMAx DMAx Instance
  2191. * @retval None
  2192. */
  2193. __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef *DMAx)
  2194. {
  2195. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF1);
  2196. }
  2197. /**
  2198. * @brief Clear Stream 2 half transfer flag.
  2199. * @rmtoll LIFCR CHTIF2 LL_DMA_ClearFlag_HT2
  2200. * @param DMAx DMAx Instance
  2201. * @retval None
  2202. */
  2203. __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef *DMAx)
  2204. {
  2205. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF2);
  2206. }
  2207. /**
  2208. * @brief Clear Stream 3 half transfer flag.
  2209. * @rmtoll LIFCR CHTIF3 LL_DMA_ClearFlag_HT3
  2210. * @param DMAx DMAx Instance
  2211. * @retval None
  2212. */
  2213. __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef *DMAx)
  2214. {
  2215. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CHTIF3);
  2216. }
  2217. /**
  2218. * @brief Clear Stream 4 half transfer flag.
  2219. * @rmtoll HIFCR CHTIF4 LL_DMA_ClearFlag_HT4
  2220. * @param DMAx DMAx Instance
  2221. * @retval None
  2222. */
  2223. __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef *DMAx)
  2224. {
  2225. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF4);
  2226. }
  2227. /**
  2228. * @brief Clear Stream 5 half transfer flag.
  2229. * @rmtoll HIFCR CHTIF5 LL_DMA_ClearFlag_HT5
  2230. * @param DMAx DMAx Instance
  2231. * @retval None
  2232. */
  2233. __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef *DMAx)
  2234. {
  2235. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF5);
  2236. }
  2237. /**
  2238. * @brief Clear Stream 6 half transfer flag.
  2239. * @rmtoll HIFCR CHTIF6 LL_DMA_ClearFlag_HT6
  2240. * @param DMAx DMAx Instance
  2241. * @retval None
  2242. */
  2243. __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef *DMAx)
  2244. {
  2245. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF6);
  2246. }
  2247. /**
  2248. * @brief Clear Stream 7 half transfer flag.
  2249. * @rmtoll HIFCR CHTIF7 LL_DMA_ClearFlag_HT7
  2250. * @param DMAx DMAx Instance
  2251. * @retval None
  2252. */
  2253. __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef *DMAx)
  2254. {
  2255. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CHTIF7);
  2256. }
  2257. /**
  2258. * @brief Clear Stream 0 transfer complete flag.
  2259. * @rmtoll LIFCR CTCIF0 LL_DMA_ClearFlag_TC0
  2260. * @param DMAx DMAx Instance
  2261. * @retval None
  2262. */
  2263. __STATIC_INLINE void LL_DMA_ClearFlag_TC0(DMA_TypeDef *DMAx)
  2264. {
  2265. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF0);
  2266. }
  2267. /**
  2268. * @brief Clear Stream 1 transfer complete flag.
  2269. * @rmtoll LIFCR CTCIF1 LL_DMA_ClearFlag_TC1
  2270. * @param DMAx DMAx Instance
  2271. * @retval None
  2272. */
  2273. __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef *DMAx)
  2274. {
  2275. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF1);
  2276. }
  2277. /**
  2278. * @brief Clear Stream 2 transfer complete flag.
  2279. * @rmtoll LIFCR CTCIF2 LL_DMA_ClearFlag_TC2
  2280. * @param DMAx DMAx Instance
  2281. * @retval None
  2282. */
  2283. __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef *DMAx)
  2284. {
  2285. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF2);
  2286. }
  2287. /**
  2288. * @brief Clear Stream 3 transfer complete flag.
  2289. * @rmtoll LIFCR CTCIF3 LL_DMA_ClearFlag_TC3
  2290. * @param DMAx DMAx Instance
  2291. * @retval None
  2292. */
  2293. __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef *DMAx)
  2294. {
  2295. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTCIF3);
  2296. }
  2297. /**
  2298. * @brief Clear Stream 4 transfer complete flag.
  2299. * @rmtoll HIFCR CTCIF4 LL_DMA_ClearFlag_TC4
  2300. * @param DMAx DMAx Instance
  2301. * @retval None
  2302. */
  2303. __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef *DMAx)
  2304. {
  2305. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF4);
  2306. }
  2307. /**
  2308. * @brief Clear Stream 5 transfer complete flag.
  2309. * @rmtoll HIFCR CTCIF5 LL_DMA_ClearFlag_TC5
  2310. * @param DMAx DMAx Instance
  2311. * @retval None
  2312. */
  2313. __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef *DMAx)
  2314. {
  2315. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF5);
  2316. }
  2317. /**
  2318. * @brief Clear Stream 6 transfer complete flag.
  2319. * @rmtoll HIFCR CTCIF6 LL_DMA_ClearFlag_TC6
  2320. * @param DMAx DMAx Instance
  2321. * @retval None
  2322. */
  2323. __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef *DMAx)
  2324. {
  2325. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF6);
  2326. }
  2327. /**
  2328. * @brief Clear Stream 7 transfer complete flag.
  2329. * @rmtoll HIFCR CTCIF7 LL_DMA_ClearFlag_TC7
  2330. * @param DMAx DMAx Instance
  2331. * @retval None
  2332. */
  2333. __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef *DMAx)
  2334. {
  2335. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTCIF7);
  2336. }
  2337. /**
  2338. * @brief Clear Stream 0 transfer error flag.
  2339. * @rmtoll LIFCR CTEIF0 LL_DMA_ClearFlag_TE0
  2340. * @param DMAx DMAx Instance
  2341. * @retval None
  2342. */
  2343. __STATIC_INLINE void LL_DMA_ClearFlag_TE0(DMA_TypeDef *DMAx)
  2344. {
  2345. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF0);
  2346. }
  2347. /**
  2348. * @brief Clear Stream 1 transfer error flag.
  2349. * @rmtoll LIFCR CTEIF1 LL_DMA_ClearFlag_TE1
  2350. * @param DMAx DMAx Instance
  2351. * @retval None
  2352. */
  2353. __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef *DMAx)
  2354. {
  2355. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF1);
  2356. }
  2357. /**
  2358. * @brief Clear Stream 2 transfer error flag.
  2359. * @rmtoll LIFCR CTEIF2 LL_DMA_ClearFlag_TE2
  2360. * @param DMAx DMAx Instance
  2361. * @retval None
  2362. */
  2363. __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef *DMAx)
  2364. {
  2365. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF2);
  2366. }
  2367. /**
  2368. * @brief Clear Stream 3 transfer error flag.
  2369. * @rmtoll LIFCR CTEIF3 LL_DMA_ClearFlag_TE3
  2370. * @param DMAx DMAx Instance
  2371. * @retval None
  2372. */
  2373. __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef *DMAx)
  2374. {
  2375. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CTEIF3);
  2376. }
  2377. /**
  2378. * @brief Clear Stream 4 transfer error flag.
  2379. * @rmtoll HIFCR CTEIF4 LL_DMA_ClearFlag_TE4
  2380. * @param DMAx DMAx Instance
  2381. * @retval None
  2382. */
  2383. __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef *DMAx)
  2384. {
  2385. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF4);
  2386. }
  2387. /**
  2388. * @brief Clear Stream 5 transfer error flag.
  2389. * @rmtoll HIFCR CTEIF5 LL_DMA_ClearFlag_TE5
  2390. * @param DMAx DMAx Instance
  2391. * @retval None
  2392. */
  2393. __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef *DMAx)
  2394. {
  2395. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF5);
  2396. }
  2397. /**
  2398. * @brief Clear Stream 6 transfer error flag.
  2399. * @rmtoll HIFCR CTEIF6 LL_DMA_ClearFlag_TE6
  2400. * @param DMAx DMAx Instance
  2401. * @retval None
  2402. */
  2403. __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef *DMAx)
  2404. {
  2405. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF6);
  2406. }
  2407. /**
  2408. * @brief Clear Stream 7 transfer error flag.
  2409. * @rmtoll HIFCR CTEIF7 LL_DMA_ClearFlag_TE7
  2410. * @param DMAx DMAx Instance
  2411. * @retval None
  2412. */
  2413. __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef *DMAx)
  2414. {
  2415. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CTEIF7);
  2416. }
  2417. /**
  2418. * @brief Clear Stream 0 direct mode error flag.
  2419. * @rmtoll LIFCR CDMEIF0 LL_DMA_ClearFlag_DME0
  2420. * @param DMAx DMAx Instance
  2421. * @retval None
  2422. */
  2423. __STATIC_INLINE void LL_DMA_ClearFlag_DME0(DMA_TypeDef *DMAx)
  2424. {
  2425. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF0);
  2426. }
  2427. /**
  2428. * @brief Clear Stream 1 direct mode error flag.
  2429. * @rmtoll LIFCR CDMEIF1 LL_DMA_ClearFlag_DME1
  2430. * @param DMAx DMAx Instance
  2431. * @retval None
  2432. */
  2433. __STATIC_INLINE void LL_DMA_ClearFlag_DME1(DMA_TypeDef *DMAx)
  2434. {
  2435. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF1);
  2436. }
  2437. /**
  2438. * @brief Clear Stream 2 direct mode error flag.
  2439. * @rmtoll LIFCR CDMEIF2 LL_DMA_ClearFlag_DME2
  2440. * @param DMAx DMAx Instance
  2441. * @retval None
  2442. */
  2443. __STATIC_INLINE void LL_DMA_ClearFlag_DME2(DMA_TypeDef *DMAx)
  2444. {
  2445. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF2);
  2446. }
  2447. /**
  2448. * @brief Clear Stream 3 direct mode error flag.
  2449. * @rmtoll LIFCR CDMEIF3 LL_DMA_ClearFlag_DME3
  2450. * @param DMAx DMAx Instance
  2451. * @retval None
  2452. */
  2453. __STATIC_INLINE void LL_DMA_ClearFlag_DME3(DMA_TypeDef *DMAx)
  2454. {
  2455. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CDMEIF3);
  2456. }
  2457. /**
  2458. * @brief Clear Stream 4 direct mode error flag.
  2459. * @rmtoll HIFCR CDMEIF4 LL_DMA_ClearFlag_DME4
  2460. * @param DMAx DMAx Instance
  2461. * @retval None
  2462. */
  2463. __STATIC_INLINE void LL_DMA_ClearFlag_DME4(DMA_TypeDef *DMAx)
  2464. {
  2465. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF4);
  2466. }
  2467. /**
  2468. * @brief Clear Stream 5 direct mode error flag.
  2469. * @rmtoll HIFCR CDMEIF5 LL_DMA_ClearFlag_DME5
  2470. * @param DMAx DMAx Instance
  2471. * @retval None
  2472. */
  2473. __STATIC_INLINE void LL_DMA_ClearFlag_DME5(DMA_TypeDef *DMAx)
  2474. {
  2475. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF5);
  2476. }
  2477. /**
  2478. * @brief Clear Stream 6 direct mode error flag.
  2479. * @rmtoll HIFCR CDMEIF6 LL_DMA_ClearFlag_DME6
  2480. * @param DMAx DMAx Instance
  2481. * @retval None
  2482. */
  2483. __STATIC_INLINE void LL_DMA_ClearFlag_DME6(DMA_TypeDef *DMAx)
  2484. {
  2485. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF6);
  2486. }
  2487. /**
  2488. * @brief Clear Stream 7 direct mode error flag.
  2489. * @rmtoll HIFCR CDMEIF7 LL_DMA_ClearFlag_DME7
  2490. * @param DMAx DMAx Instance
  2491. * @retval None
  2492. */
  2493. __STATIC_INLINE void LL_DMA_ClearFlag_DME7(DMA_TypeDef *DMAx)
  2494. {
  2495. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CDMEIF7);
  2496. }
  2497. /**
  2498. * @brief Clear Stream 0 FIFO error flag.
  2499. * @rmtoll LIFCR CFEIF0 LL_DMA_ClearFlag_FE0
  2500. * @param DMAx DMAx Instance
  2501. * @retval None
  2502. */
  2503. __STATIC_INLINE void LL_DMA_ClearFlag_FE0(DMA_TypeDef *DMAx)
  2504. {
  2505. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF0);
  2506. }
  2507. /**
  2508. * @brief Clear Stream 1 FIFO error flag.
  2509. * @rmtoll LIFCR CFEIF1 LL_DMA_ClearFlag_FE1
  2510. * @param DMAx DMAx Instance
  2511. * @retval None
  2512. */
  2513. __STATIC_INLINE void LL_DMA_ClearFlag_FE1(DMA_TypeDef *DMAx)
  2514. {
  2515. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF1);
  2516. }
  2517. /**
  2518. * @brief Clear Stream 2 FIFO error flag.
  2519. * @rmtoll LIFCR CFEIF2 LL_DMA_ClearFlag_FE2
  2520. * @param DMAx DMAx Instance
  2521. * @retval None
  2522. */
  2523. __STATIC_INLINE void LL_DMA_ClearFlag_FE2(DMA_TypeDef *DMAx)
  2524. {
  2525. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF2);
  2526. }
  2527. /**
  2528. * @brief Clear Stream 3 FIFO error flag.
  2529. * @rmtoll LIFCR CFEIF3 LL_DMA_ClearFlag_FE3
  2530. * @param DMAx DMAx Instance
  2531. * @retval None
  2532. */
  2533. __STATIC_INLINE void LL_DMA_ClearFlag_FE3(DMA_TypeDef *DMAx)
  2534. {
  2535. WRITE_REG(DMAx->LIFCR, DMA_LIFCR_CFEIF3);
  2536. }
  2537. /**
  2538. * @brief Clear Stream 4 FIFO error flag.
  2539. * @rmtoll HIFCR CFEIF4 LL_DMA_ClearFlag_FE4
  2540. * @param DMAx DMAx Instance
  2541. * @retval None
  2542. */
  2543. __STATIC_INLINE void LL_DMA_ClearFlag_FE4(DMA_TypeDef *DMAx)
  2544. {
  2545. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF4);
  2546. }
  2547. /**
  2548. * @brief Clear Stream 5 FIFO error flag.
  2549. * @rmtoll HIFCR CFEIF5 LL_DMA_ClearFlag_FE5
  2550. * @param DMAx DMAx Instance
  2551. * @retval None
  2552. */
  2553. __STATIC_INLINE void LL_DMA_ClearFlag_FE5(DMA_TypeDef *DMAx)
  2554. {
  2555. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF5);
  2556. }
  2557. /**
  2558. * @brief Clear Stream 6 FIFO error flag.
  2559. * @rmtoll HIFCR CFEIF6 LL_DMA_ClearFlag_FE6
  2560. * @param DMAx DMAx Instance
  2561. * @retval None
  2562. */
  2563. __STATIC_INLINE void LL_DMA_ClearFlag_FE6(DMA_TypeDef *DMAx)
  2564. {
  2565. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF6);
  2566. }
  2567. /**
  2568. * @brief Clear Stream 7 FIFO error flag.
  2569. * @rmtoll HIFCR CFEIF7 LL_DMA_ClearFlag_FE7
  2570. * @param DMAx DMAx Instance
  2571. * @retval None
  2572. */
  2573. __STATIC_INLINE void LL_DMA_ClearFlag_FE7(DMA_TypeDef *DMAx)
  2574. {
  2575. WRITE_REG(DMAx->HIFCR, DMA_HIFCR_CFEIF7);
  2576. }
  2577. /**
  2578. * @}
  2579. */
  2580. /** @defgroup DMA_LL_EF_IT_Management IT_Management
  2581. * @{
  2582. */
  2583. /**
  2584. * @brief Enable Half transfer interrupt.
  2585. * @rmtoll CR HTIE LL_DMA_EnableIT_HT
  2586. * @param DMAx DMAx Instance
  2587. * @param Stream This parameter can be one of the following values:
  2588. * @arg @ref LL_DMA_STREAM_0
  2589. * @arg @ref LL_DMA_STREAM_1
  2590. * @arg @ref LL_DMA_STREAM_2
  2591. * @arg @ref LL_DMA_STREAM_3
  2592. * @arg @ref LL_DMA_STREAM_4
  2593. * @arg @ref LL_DMA_STREAM_5
  2594. * @arg @ref LL_DMA_STREAM_6
  2595. * @arg @ref LL_DMA_STREAM_7
  2596. * @retval None
  2597. */
  2598. __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2599. {
  2600. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2601. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
  2602. }
  2603. /**
  2604. * @brief Enable Transfer error interrupt.
  2605. * @rmtoll CR TEIE LL_DMA_EnableIT_TE
  2606. * @param DMAx DMAx Instance
  2607. * @param Stream This parameter can be one of the following values:
  2608. * @arg @ref LL_DMA_STREAM_0
  2609. * @arg @ref LL_DMA_STREAM_1
  2610. * @arg @ref LL_DMA_STREAM_2
  2611. * @arg @ref LL_DMA_STREAM_3
  2612. * @arg @ref LL_DMA_STREAM_4
  2613. * @arg @ref LL_DMA_STREAM_5
  2614. * @arg @ref LL_DMA_STREAM_6
  2615. * @arg @ref LL_DMA_STREAM_7
  2616. * @retval None
  2617. */
  2618. __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2619. {
  2620. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2621. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
  2622. }
  2623. /**
  2624. * @brief Enable Transfer complete interrupt.
  2625. * @rmtoll CR TCIE LL_DMA_EnableIT_TC
  2626. * @param DMAx DMAx Instance
  2627. * @param Stream This parameter can be one of the following values:
  2628. * @arg @ref LL_DMA_STREAM_0
  2629. * @arg @ref LL_DMA_STREAM_1
  2630. * @arg @ref LL_DMA_STREAM_2
  2631. * @arg @ref LL_DMA_STREAM_3
  2632. * @arg @ref LL_DMA_STREAM_4
  2633. * @arg @ref LL_DMA_STREAM_5
  2634. * @arg @ref LL_DMA_STREAM_6
  2635. * @arg @ref LL_DMA_STREAM_7
  2636. * @retval None
  2637. */
  2638. __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2639. {
  2640. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2641. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
  2642. }
  2643. /**
  2644. * @brief Enable Direct mode error interrupt.
  2645. * @rmtoll CR DMEIE LL_DMA_EnableIT_DME
  2646. * @param DMAx DMAx Instance
  2647. * @param Stream This parameter can be one of the following values:
  2648. * @arg @ref LL_DMA_STREAM_0
  2649. * @arg @ref LL_DMA_STREAM_1
  2650. * @arg @ref LL_DMA_STREAM_2
  2651. * @arg @ref LL_DMA_STREAM_3
  2652. * @arg @ref LL_DMA_STREAM_4
  2653. * @arg @ref LL_DMA_STREAM_5
  2654. * @arg @ref LL_DMA_STREAM_6
  2655. * @arg @ref LL_DMA_STREAM_7
  2656. * @retval None
  2657. */
  2658. __STATIC_INLINE void LL_DMA_EnableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2659. {
  2660. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2661. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
  2662. }
  2663. /**
  2664. * @brief Enable FIFO error interrupt.
  2665. * @rmtoll FCR FEIE LL_DMA_EnableIT_FE
  2666. * @param DMAx DMAx Instance
  2667. * @param Stream This parameter can be one of the following values:
  2668. * @arg @ref LL_DMA_STREAM_0
  2669. * @arg @ref LL_DMA_STREAM_1
  2670. * @arg @ref LL_DMA_STREAM_2
  2671. * @arg @ref LL_DMA_STREAM_3
  2672. * @arg @ref LL_DMA_STREAM_4
  2673. * @arg @ref LL_DMA_STREAM_5
  2674. * @arg @ref LL_DMA_STREAM_6
  2675. * @arg @ref LL_DMA_STREAM_7
  2676. * @retval None
  2677. */
  2678. __STATIC_INLINE void LL_DMA_EnableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2679. {
  2680. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2681. SET_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
  2682. }
  2683. /**
  2684. * @brief Disable Half transfer interrupt.
  2685. * @rmtoll CR HTIE LL_DMA_DisableIT_HT
  2686. * @param DMAx DMAx Instance
  2687. * @param Stream This parameter can be one of the following values:
  2688. * @arg @ref LL_DMA_STREAM_0
  2689. * @arg @ref LL_DMA_STREAM_1
  2690. * @arg @ref LL_DMA_STREAM_2
  2691. * @arg @ref LL_DMA_STREAM_3
  2692. * @arg @ref LL_DMA_STREAM_4
  2693. * @arg @ref LL_DMA_STREAM_5
  2694. * @arg @ref LL_DMA_STREAM_6
  2695. * @arg @ref LL_DMA_STREAM_7
  2696. * @retval None
  2697. */
  2698. __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2699. {
  2700. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2701. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE);
  2702. }
  2703. /**
  2704. * @brief Disable Transfer error interrupt.
  2705. * @rmtoll CR TEIE LL_DMA_DisableIT_TE
  2706. * @param DMAx DMAx Instance
  2707. * @param Stream This parameter can be one of the following values:
  2708. * @arg @ref LL_DMA_STREAM_0
  2709. * @arg @ref LL_DMA_STREAM_1
  2710. * @arg @ref LL_DMA_STREAM_2
  2711. * @arg @ref LL_DMA_STREAM_3
  2712. * @arg @ref LL_DMA_STREAM_4
  2713. * @arg @ref LL_DMA_STREAM_5
  2714. * @arg @ref LL_DMA_STREAM_6
  2715. * @arg @ref LL_DMA_STREAM_7
  2716. * @retval None
  2717. */
  2718. __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2719. {
  2720. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2721. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE);
  2722. }
  2723. /**
  2724. * @brief Disable Transfer complete interrupt.
  2725. * @rmtoll CR TCIE LL_DMA_DisableIT_TC
  2726. * @param DMAx DMAx Instance
  2727. * @param Stream This parameter can be one of the following values:
  2728. * @arg @ref LL_DMA_STREAM_0
  2729. * @arg @ref LL_DMA_STREAM_1
  2730. * @arg @ref LL_DMA_STREAM_2
  2731. * @arg @ref LL_DMA_STREAM_3
  2732. * @arg @ref LL_DMA_STREAM_4
  2733. * @arg @ref LL_DMA_STREAM_5
  2734. * @arg @ref LL_DMA_STREAM_6
  2735. * @arg @ref LL_DMA_STREAM_7
  2736. * @retval None
  2737. */
  2738. __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2739. {
  2740. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2741. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE);
  2742. }
  2743. /**
  2744. * @brief Disable Direct mode error interrupt.
  2745. * @rmtoll CR DMEIE LL_DMA_DisableIT_DME
  2746. * @param DMAx DMAx Instance
  2747. * @param Stream This parameter can be one of the following values:
  2748. * @arg @ref LL_DMA_STREAM_0
  2749. * @arg @ref LL_DMA_STREAM_1
  2750. * @arg @ref LL_DMA_STREAM_2
  2751. * @arg @ref LL_DMA_STREAM_3
  2752. * @arg @ref LL_DMA_STREAM_4
  2753. * @arg @ref LL_DMA_STREAM_5
  2754. * @arg @ref LL_DMA_STREAM_6
  2755. * @arg @ref LL_DMA_STREAM_7
  2756. * @retval None
  2757. */
  2758. __STATIC_INLINE void LL_DMA_DisableIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2759. {
  2760. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2761. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE);
  2762. }
  2763. /**
  2764. * @brief Disable FIFO error interrupt.
  2765. * @rmtoll FCR FEIE LL_DMA_DisableIT_FE
  2766. * @param DMAx DMAx Instance
  2767. * @param Stream This parameter can be one of the following values:
  2768. * @arg @ref LL_DMA_STREAM_0
  2769. * @arg @ref LL_DMA_STREAM_1
  2770. * @arg @ref LL_DMA_STREAM_2
  2771. * @arg @ref LL_DMA_STREAM_3
  2772. * @arg @ref LL_DMA_STREAM_4
  2773. * @arg @ref LL_DMA_STREAM_5
  2774. * @arg @ref LL_DMA_STREAM_6
  2775. * @arg @ref LL_DMA_STREAM_7
  2776. * @retval None
  2777. */
  2778. __STATIC_INLINE void LL_DMA_DisableIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2779. {
  2780. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2781. CLEAR_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE);
  2782. }
  2783. /**
  2784. * @brief Check if Half transfer interrup is enabled.
  2785. * @rmtoll CR HTIE LL_DMA_IsEnabledIT_HT
  2786. * @param DMAx DMAx Instance
  2787. * @param Stream This parameter can be one of the following values:
  2788. * @arg @ref LL_DMA_STREAM_0
  2789. * @arg @ref LL_DMA_STREAM_1
  2790. * @arg @ref LL_DMA_STREAM_2
  2791. * @arg @ref LL_DMA_STREAM_3
  2792. * @arg @ref LL_DMA_STREAM_4
  2793. * @arg @ref LL_DMA_STREAM_5
  2794. * @arg @ref LL_DMA_STREAM_6
  2795. * @arg @ref LL_DMA_STREAM_7
  2796. * @retval State of bit (1 or 0).
  2797. */
  2798. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Stream)
  2799. {
  2800. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2801. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_HTIE) == DMA_SxCR_HTIE) ? 1UL : 0UL);
  2802. }
  2803. /**
  2804. * @brief Check if Transfer error nterrup is enabled.
  2805. * @rmtoll CR TEIE LL_DMA_IsEnabledIT_TE
  2806. * @param DMAx DMAx Instance
  2807. * @param Stream This parameter can be one of the following values:
  2808. * @arg @ref LL_DMA_STREAM_0
  2809. * @arg @ref LL_DMA_STREAM_1
  2810. * @arg @ref LL_DMA_STREAM_2
  2811. * @arg @ref LL_DMA_STREAM_3
  2812. * @arg @ref LL_DMA_STREAM_4
  2813. * @arg @ref LL_DMA_STREAM_5
  2814. * @arg @ref LL_DMA_STREAM_6
  2815. * @arg @ref LL_DMA_STREAM_7
  2816. * @retval State of bit (1 or 0).
  2817. */
  2818. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Stream)
  2819. {
  2820. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2821. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TEIE) == DMA_SxCR_TEIE) ? 1UL : 0UL);
  2822. }
  2823. /**
  2824. * @brief Check if Transfer complete interrup is enabled.
  2825. * @rmtoll CR TCIE LL_DMA_IsEnabledIT_TC
  2826. * @param DMAx DMAx Instance
  2827. * @param Stream This parameter can be one of the following values:
  2828. * @arg @ref LL_DMA_STREAM_0
  2829. * @arg @ref LL_DMA_STREAM_1
  2830. * @arg @ref LL_DMA_STREAM_2
  2831. * @arg @ref LL_DMA_STREAM_3
  2832. * @arg @ref LL_DMA_STREAM_4
  2833. * @arg @ref LL_DMA_STREAM_5
  2834. * @arg @ref LL_DMA_STREAM_6
  2835. * @arg @ref LL_DMA_STREAM_7
  2836. * @retval State of bit (1 or 0).
  2837. */
  2838. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Stream)
  2839. {
  2840. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2841. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_TCIE) == DMA_SxCR_TCIE) ? 1UL : 0UL);
  2842. }
  2843. /**
  2844. * @brief Check if Direct mode error interrupt is enabled.
  2845. * @rmtoll CR DMEIE LL_DMA_IsEnabledIT_DME
  2846. * @param DMAx DMAx Instance
  2847. * @param Stream This parameter can be one of the following values:
  2848. * @arg @ref LL_DMA_STREAM_0
  2849. * @arg @ref LL_DMA_STREAM_1
  2850. * @arg @ref LL_DMA_STREAM_2
  2851. * @arg @ref LL_DMA_STREAM_3
  2852. * @arg @ref LL_DMA_STREAM_4
  2853. * @arg @ref LL_DMA_STREAM_5
  2854. * @arg @ref LL_DMA_STREAM_6
  2855. * @arg @ref LL_DMA_STREAM_7
  2856. * @retval State of bit (1 or 0).
  2857. */
  2858. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_DME(DMA_TypeDef *DMAx, uint32_t Stream)
  2859. {
  2860. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2861. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->CR, DMA_SxCR_DMEIE) == DMA_SxCR_DMEIE) ? 1UL : 0UL);
  2862. }
  2863. /**
  2864. * @brief Check if FIFO error interrup is enabled.
  2865. * @rmtoll FCR FEIE LL_DMA_IsEnabledIT_FE
  2866. * @param DMAx DMAx Instance
  2867. * @param Stream This parameter can be one of the following values:
  2868. * @arg @ref LL_DMA_STREAM_0
  2869. * @arg @ref LL_DMA_STREAM_1
  2870. * @arg @ref LL_DMA_STREAM_2
  2871. * @arg @ref LL_DMA_STREAM_3
  2872. * @arg @ref LL_DMA_STREAM_4
  2873. * @arg @ref LL_DMA_STREAM_5
  2874. * @arg @ref LL_DMA_STREAM_6
  2875. * @arg @ref LL_DMA_STREAM_7
  2876. * @retval State of bit (1 or 0).
  2877. */
  2878. __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_FE(DMA_TypeDef *DMAx, uint32_t Stream)
  2879. {
  2880. register uint32_t dma_base_addr = (uint32_t)DMAx;
  2881. return ((READ_BIT(((DMA_Stream_TypeDef *)(dma_base_addr + LL_DMA_STR_OFFSET_TAB[Stream]))->FCR, DMA_SxFCR_FEIE) == DMA_SxFCR_FEIE) ? 1UL : 0UL);
  2882. }
  2883. /**
  2884. * @}
  2885. */
  2886. #if defined(USE_FULL_LL_DRIVER)
  2887. /** @defgroup DMA_LL_EF_Init Initialization and de-initialization functions
  2888. * @{
  2889. */
  2890. uint32_t LL_DMA_Init(DMA_TypeDef *DMAx, uint32_t Stream, LL_DMA_InitTypeDef *DMA_InitStruct);
  2891. uint32_t LL_DMA_DeInit(DMA_TypeDef *DMAx, uint32_t Stream);
  2892. void LL_DMA_StructInit(LL_DMA_InitTypeDef *DMA_InitStruct);
  2893. /**
  2894. * @}
  2895. */
  2896. #endif /* USE_FULL_LL_DRIVER */
  2897. /**
  2898. * @}
  2899. */
  2900. /**
  2901. * @}
  2902. */
  2903. #endif /* DMA1 || DMA2 */
  2904. /**
  2905. * @}
  2906. */
  2907. #ifdef __cplusplus
  2908. }
  2909. #endif
  2910. #endif /* __STM32H7xx_LL_DMA_H */
  2911. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/