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.
 
 
 

2416 lines
94 KiB

  1. /**
  2. ******************************************************************************
  3. * @file stm32h7xx_ll_bdma.h
  4. * @author MCD Application Team
  5. * @brief Header file of BDMA 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_BDMA_H
  21. #define STM32H7xx_LL_BDMA_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 (BDMA) || defined (BDMA1) || defined (BDMA2)
  32. /** @defgroup BDMA_LL BDMA
  33. * @{
  34. */
  35. /* Private types -------------------------------------------------------------*/
  36. /* Private variables ---------------------------------------------------------*/
  37. /** @defgroup BDMA_LL_Private_Variables BDMA Private Variables
  38. * @{
  39. */
  40. /* Array used to get the BDMA channel register offset versus channel index LL_BDMA_CHANNEL_x */
  41. static const uint8_t LL_BDMA_CH_OFFSET_TAB[] =
  42. {
  43. (uint8_t)(BDMA_Channel0_BASE - BDMA_BASE),
  44. (uint8_t)(BDMA_Channel1_BASE - BDMA_BASE),
  45. (uint8_t)(BDMA_Channel2_BASE - BDMA_BASE),
  46. (uint8_t)(BDMA_Channel3_BASE - BDMA_BASE),
  47. (uint8_t)(BDMA_Channel4_BASE - BDMA_BASE),
  48. (uint8_t)(BDMA_Channel5_BASE - BDMA_BASE),
  49. (uint8_t)(BDMA_Channel6_BASE - BDMA_BASE),
  50. (uint8_t)(BDMA_Channel7_BASE - BDMA_BASE)
  51. };
  52. /**
  53. * @}
  54. */
  55. /* Private constants ---------------------------------------------------------*/
  56. /* Private macros ------------------------------------------------------------*/
  57. #if !defined(UNUSED)
  58. #define UNUSED(x) ((void)(x))
  59. #endif
  60. /* Exported types ------------------------------------------------------------*/
  61. #if defined(USE_FULL_LL_DRIVER)
  62. /** @defgroup BDMA_LL_ES_INIT BDMA Exported Init structure
  63. * @{
  64. */
  65. typedef struct
  66. {
  67. uint32_t PeriphOrM2MSrcAddress; /*!< Specifies the peripheral base address for BDMA transfer
  68. or as Source base address in case of memory to memory transfer direction.
  69. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
  70. uint32_t MemoryOrM2MDstAddress; /*!< Specifies the memory base address for DMA transfer
  71. or as Destination base address in case of memory to memory transfer direction.
  72. This parameter must be a value between Min_Data = 0 and Max_Data = 0xFFFFFFFF. */
  73. uint32_t Direction; /*!< Specifies if the data will be transferred from memory to peripheral,
  74. from memory to memory or from peripheral to memory.
  75. This parameter can be a value of @ref BDMA_LL_EC_DIRECTION
  76. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetDataTransferDirection(). */
  77. uint32_t Mode; /*!< Specifies the normal or circular operation mode.
  78. This parameter can be a value of @ref BDMA_LL_EC_MODE
  79. @note: The circular buffer mode cannot be used if the memory to memory
  80. data transfer direction is configured on the selected Channel
  81. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetMode(). */
  82. uint32_t PeriphOrM2MSrcIncMode; /*!< Specifies whether the Peripheral address or Source address in case of memory to memory transfer direction
  83. is incremented or not.
  84. This parameter can be a value of @ref BDMA_LL_EC_PERIPH
  85. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphIncMode(). */
  86. uint32_t MemoryOrM2MDstIncMode; /*!< Specifies whether the Memory address or Destination address in case of memory to memory transfer direction
  87. is incremented or not.
  88. This parameter can be a value of @ref BDMA_LL_EC_MEMORY
  89. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetMemoryIncMode(). */
  90. uint32_t PeriphOrM2MSrcDataSize; /*!< Specifies the Peripheral data size alignment or Source data size alignment (byte, half word, word)
  91. in case of memory to memory transfer direction.
  92. This parameter can be a value of @ref BDMA_LL_EC_PDATAALIGN
  93. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphSize(). */
  94. uint32_t MemoryOrM2MDstDataSize; /*!< Specifies the Memory data size alignment or Destination data size alignment (byte, half word, word)
  95. in case of memory to memory transfer direction.
  96. This parameter can be a value of @ref BDMA_LL_EC_MDATAALIGN
  97. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetMemorySize(). */
  98. uint32_t NbData; /*!< Specifies the number of data to transfer, in data unit.
  99. The data unit is equal to the source buffer configuration set in PeripheralSize
  100. or MemorySize parameters depending in the transfer direction.
  101. This parameter must be a value between Min_Data = 0 and Max_Data = 0x0000FFFF
  102. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetDataLength(). */
  103. uint32_t PeriphRequest; /*!< Specifies the peripheral request.
  104. This parameter can be a value of @ref DMAMUX_LL_EC_REQUEST
  105. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetPeriphRequest(). */
  106. uint32_t Priority; /*!< Specifies the channel priority level.
  107. This parameter can be a value of @ref BDMA_LL_EC_PRIORITY
  108. This feature can be modified afterwards using unitary function @ref LL_BDMA_SetChannelPriorityLevel(). */
  109. } LL_BDMA_InitTypeDef;
  110. /**
  111. * @}
  112. */
  113. #endif /* USE_FULL_LL_DRIVER */
  114. /* Exported constants --------------------------------------------------------*/
  115. /** @defgroup BDMA_LL_Exported_Constants BDMA Exported Constants
  116. * @{
  117. */
  118. /** @defgroup BDMA_LL_EC_CLEAR_FLAG Clear Flags Defines
  119. * @brief Flags defines which can be used with LL_BDMA_WriteReg function
  120. * @{
  121. */
  122. #define LL_BDMA_IFCR_CGIF1 BDMA_IFCR_CGIF1 /*!< Channel 1 global flag */
  123. #define LL_BDMA_IFCR_CTCIF1 BDMA_IFCR_CTCIF1 /*!< Channel 1 transfer complete flag */
  124. #define LL_BDMA_IFCR_CHTIF1 BDMA_IFCR_CHTIF1 /*!< Channel 1 half transfer flag */
  125. #define LL_BDMA_IFCR_CTEIF1 BDMA_IFCR_CTEIF1 /*!< Channel 1 transfer error flag */
  126. #define LL_BDMA_IFCR_CGIF2 BDMA_IFCR_CGIF2 /*!< Channel 2 global flag */
  127. #define LL_BDMA_IFCR_CTCIF2 BDMA_IFCR_CTCIF2 /*!< Channel 2 transfer complete flag */
  128. #define LL_BDMA_IFCR_CHTIF2 BDMA_IFCR_CHTIF2 /*!< Channel 2 half transfer flag */
  129. #define LL_BDMA_IFCR_CTEIF2 BDMA_IFCR_CTEIF2 /*!< Channel 2 transfer error flag */
  130. #define LL_BDMA_IFCR_CGIF3 BDMA_IFCR_CGIF3 /*!< Channel 3 global flag */
  131. #define LL_BDMA_IFCR_CTCIF3 BDMA_IFCR_CTCIF3 /*!< Channel 3 transfer complete flag */
  132. #define LL_BDMA_IFCR_CHTIF3 BDMA_IFCR_CHTIF3 /*!< Channel 3 half transfer flag */
  133. #define LL_BDMA_IFCR_CTEIF3 BDMA_IFCR_CTEIF3 /*!< Channel 3 transfer error flag */
  134. #define LL_BDMA_IFCR_CGIF4 BDMA_IFCR_CGIF4 /*!< Channel 4 global flag */
  135. #define LL_BDMA_IFCR_CTCIF4 BDMA_IFCR_CTCIF4 /*!< Channel 4 transfer complete flag */
  136. #define LL_BDMA_IFCR_CHTIF4 BDMA_IFCR_CHTIF4 /*!< Channel 4 half transfer flag */
  137. #define LL_BDMA_IFCR_CTEIF4 BDMA_IFCR_CTEIF4 /*!< Channel 4 transfer error flag */
  138. #define LL_BDMA_IFCR_CGIF5 BDMA_IFCR_CGIF5 /*!< Channel 5 global flag */
  139. #define LL_BDMA_IFCR_CTCIF5 BDMA_IFCR_CTCIF5 /*!< Channel 5 transfer complete flag */
  140. #define LL_BDMA_IFCR_CHTIF5 BDMA_IFCR_CHTIF5 /*!< Channel 5 half transfer flag */
  141. #define LL_BDMA_IFCR_CTEIF5 BDMA_IFCR_CTEIF5 /*!< Channel 5 transfer error flag */
  142. #define LL_BDMA_IFCR_CGIF6 BDMA_IFCR_CGIF6 /*!< Channel 6 global flag */
  143. #define LL_BDMA_IFCR_CTCIF6 BDMA_IFCR_CTCIF6 /*!< Channel 6 transfer complete flag */
  144. #define LL_BDMA_IFCR_CHTIF6 BDMA_IFCR_CHTIF6 /*!< Channel 6 half transfer flag */
  145. #define LL_BDMA_IFCR_CTEIF6 BDMA_IFCR_CTEIF6 /*!< Channel 6 transfer error flag */
  146. #define LL_BDMA_IFCR_CGIF7 BDMA_IFCR_CGIF7 /*!< Channel 7 global flag */
  147. #define LL_BDMA_IFCR_CTCIF7 BDMA_IFCR_CTCIF7 /*!< Channel 7 transfer complete flag */
  148. #define LL_BDMA_IFCR_CHTIF7 BDMA_IFCR_CHTIF7 /*!< Channel 7 half transfer flag */
  149. #define LL_BDMA_IFCR_CTEIF7 BDMA_IFCR_CTEIF7 /*!< Channel 7 transfer error flag */
  150. /**
  151. * @}
  152. */
  153. /** @defgroup BDMA_LL_EC_GET_FLAG Get Flags Defines
  154. * @brief Flags defines which can be used with LL_BDMA_ReadReg function
  155. * @{
  156. */
  157. #define LL_BDMA_ISR_GIF0 BDMA_ISR_GIF0 /*!< Channel 1 global flag */
  158. #define LL_BDMA_ISR_TCIF0 BDMA_ISR_TCIF0 /*!< Channel 1 transfer complete flag */
  159. #define LL_BDMA_ISR_HTIF0 BDMA_ISR_HTIF0 /*!< Channel 1 half transfer flag */
  160. #define LL_BDMA_ISR_TEIF0 BDMA_ISR_TEIF0 /*!< Channel 1 transfer error flag */
  161. #define LL_BDMA_ISR_GIF1 BDMA_ISR_GIF1 /*!< Channel 1 global flag */
  162. #define LL_BDMA_ISR_TCIF1 BDMA_ISR_TCIF1 /*!< Channel 1 transfer complete flag */
  163. #define LL_BDMA_ISR_HTIF1 BDMA_ISR_HTIF1 /*!< Channel 1 half transfer flag */
  164. #define LL_BDMA_ISR_TEIF1 BDMA_ISR_TEIF1 /*!< Channel 1 transfer error flag */
  165. #define LL_BDMA_ISR_GIF2 BDMA_ISR_GIF2 /*!< Channel 2 global flag */
  166. #define LL_BDMA_ISR_TCIF2 BDMA_ISR_TCIF2 /*!< Channel 2 transfer complete flag */
  167. #define LL_BDMA_ISR_HTIF2 BDMA_ISR_HTIF2 /*!< Channel 2 half transfer flag */
  168. #define LL_BDMA_ISR_TEIF2 BDMA_ISR_TEIF2 /*!< Channel 2 transfer error flag */
  169. #define LL_BDMA_ISR_GIF3 BDMA_ISR_GIF3 /*!< Channel 3 global flag */
  170. #define LL_BDMA_ISR_TCIF3 BDMA_ISR_TCIF3 /*!< Channel 3 transfer complete flag */
  171. #define LL_BDMA_ISR_HTIF3 BDMA_ISR_HTIF3 /*!< Channel 3 half transfer flag */
  172. #define LL_BDMA_ISR_TEIF3 BDMA_ISR_TEIF3 /*!< Channel 3 transfer error flag */
  173. #define LL_BDMA_ISR_GIF4 BDMA_ISR_GIF4 /*!< Channel 4 global flag */
  174. #define LL_BDMA_ISR_TCIF4 BDMA_ISR_TCIF4 /*!< Channel 4 transfer complete flag */
  175. #define LL_BDMA_ISR_HTIF4 BDMA_ISR_HTIF4 /*!< Channel 4 half transfer flag */
  176. #define LL_BDMA_ISR_TEIF4 BDMA_ISR_TEIF4 /*!< Channel 4 transfer error flag */
  177. #define LL_BDMA_ISR_GIF5 BDMA_ISR_GIF5 /*!< Channel 5 global flag */
  178. #define LL_BDMA_ISR_TCIF5 BDMA_ISR_TCIF5 /*!< Channel 5 transfer complete flag */
  179. #define LL_BDMA_ISR_HTIF5 BDMA_ISR_HTIF5 /*!< Channel 5 half transfer flag */
  180. #define LL_BDMA_ISR_TEIF5 BDMA_ISR_TEIF5 /*!< Channel 5 transfer error flag */
  181. #define LL_BDMA_ISR_GIF6 BDMA_ISR_GIF6 /*!< Channel 6 global flag */
  182. #define LL_BDMA_ISR_TCIF6 BDMA_ISR_TCIF6 /*!< Channel 6 transfer complete flag */
  183. #define LL_BDMA_ISR_HTIF6 BDMA_ISR_HTIF6 /*!< Channel 6 half transfer flag */
  184. #define LL_BDMA_ISR_TEIF6 BDMA_ISR_TEIF6 /*!< Channel 6 transfer error flag */
  185. #define LL_BDMA_ISR_GIF7 BDMA_ISR_GIF7 /*!< Channel 7 global flag */
  186. #define LL_BDMA_ISR_TCIF7 BDMA_ISR_TCIF7 /*!< Channel 7 transfer complete flag */
  187. #define LL_BDMA_ISR_HTIF7 BDMA_ISR_HTIF7 /*!< Channel 7 half transfer flag */
  188. #define LL_BDMA_ISR_TEIF7 BDMA_ISR_TEIF7 /*!< Channel 7 transfer error flag */
  189. /**
  190. * @}
  191. */
  192. /** @defgroup BDMA_LL_EC_IT IT Defines
  193. * @brief IT defines which can be used with LL_BDMA_ReadReg and LL_BDMA_WriteReg functions
  194. * @{
  195. */
  196. #define LL_BDMA_CCR_TCIE BDMA_CCR_TCIE /*!< Transfer complete interrupt */
  197. #define LL_BDMA_CCR_HTIE BDMA_CCR_HTIE /*!< Half Transfer interrupt */
  198. #define LL_BDMA_CCR_TEIE BDMA_CCR_TEIE /*!< Transfer error interrupt */
  199. /**
  200. * @}
  201. */
  202. /** @defgroup BDMA_LL_EC_CHANNEL CHANNEL
  203. * @{
  204. */
  205. #define LL_BDMA_CHANNEL_0 0x00000000U /*!< DMA Channel 0 */
  206. #define LL_BDMA_CHANNEL_1 0x00000001U /*!< BDMA Channel 1 */
  207. #define LL_BDMA_CHANNEL_2 0x00000002U /*!< BDMA Channel 2 */
  208. #define LL_BDMA_CHANNEL_3 0x00000003U /*!< BDMA Channel 3 */
  209. #define LL_BDMA_CHANNEL_4 0x00000004U /*!< BDMA Channel 4 */
  210. #define LL_BDMA_CHANNEL_5 0x00000005U /*!< BDMA Channel 5 */
  211. #define LL_BDMA_CHANNEL_6 0x00000006U /*!< BDMA Channel 6 */
  212. #define LL_BDMA_CHANNEL_7 0x00000007U /*!< BDMA Channel 7 */
  213. #if defined(USE_FULL_LL_DRIVER)
  214. #define LL_BDMA_CHANNEL_ALL 0xFFFF0000U /*!< BDMA Channel all (used only for function @ref LL_BDMA_DeInit(). */
  215. #endif /*USE_FULL_LL_DRIVER*/
  216. /**
  217. * @}
  218. */
  219. /** @defgroup BDMA_LL_EC_DIRECTION Transfer Direction
  220. * @{
  221. */
  222. #define LL_BDMA_DIRECTION_PERIPH_TO_MEMORY 0x00000000U /*!< Peripheral to memory direction */
  223. #define LL_BDMA_DIRECTION_MEMORY_TO_PERIPH BDMA_CCR_DIR /*!< Memory to peripheral direction */
  224. #define LL_BDMA_DIRECTION_MEMORY_TO_MEMORY BDMA_CCR_MEM2MEM /*!< Memory to memory direction */
  225. /**
  226. * @}
  227. */
  228. /** @defgroup BDMA_LL_EC_MODE Transfer mode
  229. * @{
  230. */
  231. #define LL_BDMA_MODE_NORMAL 0x00000000U /*!< Normal Mode */
  232. #define LL_BDMA_MODE_CIRCULAR BDMA_CCR_CIRC /*!< Circular Mode */
  233. /**
  234. * @}
  235. */
  236. /** @defgroup DMA_LL_EC_DOUBLEBUFFER_MODE DOUBLE BUFFER MODE
  237. * @{
  238. */
  239. #define LL_BDMA_DOUBLEBUFFER_MODE_DISABLE 0x00000000U /*!< Disable double buffering mode */
  240. #define LL_BDMA_DOUBLEBUFFER_MODE_ENABLE BDMA_CCR_DBM /*!< Enable double buffering mode */
  241. /**
  242. * @}
  243. */
  244. /** @defgroup BDMA_LL_EC_PERIPH Peripheral increment mode
  245. * @{
  246. */
  247. #define LL_BDMA_PERIPH_INCREMENT BDMA_CCR_PINC /*!< Peripheral increment mode Enable */
  248. #define LL_BDMA_PERIPH_NOINCREMENT 0x00000000U /*!< Peripheral increment mode Disable */
  249. /**
  250. * @}
  251. */
  252. /** @defgroup BDMA_LL_EC_MEMORY Memory increment mode
  253. * @{
  254. */
  255. #define LL_BDMA_MEMORY_INCREMENT BDMA_CCR_MINC /*!< Memory increment mode Enable */
  256. #define LL_BDMA_MEMORY_NOINCREMENT 0x00000000U /*!< Memory increment mode Disable */
  257. /**
  258. * @}
  259. */
  260. /** @defgroup BDMA_LL_EC_PDATAALIGN Peripheral data alignment
  261. * @{
  262. */
  263. #define LL_BDMA_PDATAALIGN_BYTE 0x00000000U /*!< Peripheral data alignment : Byte */
  264. #define LL_BDMA_PDATAALIGN_HALFWORD BDMA_CCR_PSIZE_0 /*!< Peripheral data alignment : HalfWord */
  265. #define LL_BDMA_PDATAALIGN_WORD BDMA_CCR_PSIZE_1 /*!< Peripheral data alignment : Word */
  266. /**
  267. * @}
  268. */
  269. /** @defgroup BDMA_LL_EC_MDATAALIGN Memory data alignment
  270. * @{
  271. */
  272. #define LL_BDMA_MDATAALIGN_BYTE 0x00000000U /*!< Memory data alignment : Byte */
  273. #define LL_BDMA_MDATAALIGN_HALFWORD BDMA_CCR_MSIZE_0 /*!< Memory data alignment : HalfWord */
  274. #define LL_BDMA_MDATAALIGN_WORD BDMA_CCR_MSIZE_1 /*!< Memory data alignment : Word */
  275. /**
  276. * @}
  277. */
  278. /** @defgroup BDMA_LL_EC_PRIORITY Transfer Priority level
  279. * @{
  280. */
  281. #define LL_BDMA_PRIORITY_LOW 0x00000000U /*!< Priority level : Low */
  282. #define LL_BDMA_PRIORITY_MEDIUM BDMA_CCR_PL_0 /*!< Priority level : Medium */
  283. #define LL_BDMA_PRIORITY_HIGH BDMA_CCR_PL_1 /*!< Priority level : High */
  284. #define LL_BDMA_PRIORITY_VERYHIGH BDMA_CCR_PL /*!< Priority level : Very_High */
  285. /**
  286. * @}
  287. */
  288. /** @defgroup DMA_LL_EC_CURRENTTARGETMEM CURRENTTARGETMEM
  289. * @{
  290. */
  291. #define LL_BDMA_CURRENTTARGETMEM0 0x00000000U /*!< Set CurrentTarget Memory to Memory 0 */
  292. #define LL_BDMA_CURRENTTARGETMEM1 BDMA_CCR_CT /*!< Set CurrentTarget Memory to Memory 1 */
  293. /**
  294. * @}
  295. */
  296. /* Exported macro ------------------------------------------------------------*/
  297. /** @defgroup BDMA_LL_Exported_Macros BDMA Exported Macros
  298. * @{
  299. */
  300. /** @defgroup BDMA_LL_EM_WRITE_READ Common Write and read registers macros
  301. * @{
  302. */
  303. /**
  304. * @brief Write a value in BDMA register
  305. * @param __INSTANCE__ BDMA Instance
  306. * @param __REG__ Register to be written
  307. * @param __VALUE__ Value to be written in the register
  308. * @retval None
  309. */
  310. #define LL_BDMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG((__INSTANCE__)->__REG__, (__VALUE__))
  311. /**
  312. * @brief Read a value in BDMA register
  313. * @param __INSTANCE__ BDMA Instance
  314. * @param __REG__ Register to be read
  315. * @retval Register value
  316. */
  317. #define LL_BDMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
  318. /**
  319. * @}
  320. */
  321. /** @defgroup BDMA_LL_EM_CONVERT_DMAxCHANNELy Convert BDMAxChannely
  322. * @{
  323. */
  324. /**
  325. * @brief Convert BDMAx_Channely into BDMAx
  326. * @param __CHANNEL_INSTANCE__ BDMAx_Channely
  327. * @retval BDMAx
  328. */
  329. #if defined (BDMA1)
  330. #define __LL_BDMA_GET_INSTANCE(__CHANNEL_INSTANCE__) \
  331. (((uint32_t)(__CHANNEL_INSTANCE__) < LL_BDMA_CHANNEL_0) ? BDMA1 : BDMA)
  332. #else
  333. #define __LL_BDMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (BDMA)
  334. #endif /* BDMA1 */
  335. /**
  336. * @brief Convert BDMAx_Channely into LL_BDMA_CHANNEL_y
  337. * @param __CHANNEL_INSTANCE__ BDMAx_Channely
  338. * @retval LL_BDMA_CHANNEL_y
  339. */
  340. #if defined (BDMA1)
  341. #define __LL_BDMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
  342. (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel0)) ? LL_BDMA_CHANNEL_0 : \
  343. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel0)) ? LL_BDMA_CHANNEL_0 : \
  344. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel1)) ? LL_BDMA_CHANNEL_1 : \
  345. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel1)) ? LL_BDMA_CHANNEL_1 : \
  346. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel2)) ? LL_BDMA_CHANNEL_2 : \
  347. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel2)) ? LL_BDMA_CHANNEL_2 : \
  348. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel3)) ? LL_BDMA_CHANNEL_3 : \
  349. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel3)) ? LL_BDMA_CHANNEL_3 : \
  350. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel4)) ? LL_BDMA_CHANNEL_4 : \
  351. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel4)) ? LL_BDMA_CHANNEL_4 : \
  352. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel5)) ? LL_BDMA_CHANNEL_5 : \
  353. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel5)) ? LL_BDMA_CHANNEL_5 : \
  354. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel6)) ? LL_BDMA_CHANNEL_6 : \
  355. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA1_Channel6)) ? LL_BDMA_CHANNEL_6 : \
  356. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel7)) ? LL_BDMA_CHANNEL_7 : \
  357. LL_BDMA_CHANNEL_7)
  358. #else
  359. #define __LL_BDMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
  360. (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel0)) ? LL_BDMA_CHANNEL_0 : \
  361. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel1)) ? LL_BDMA_CHANNEL_1 : \
  362. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel2)) ? LL_BDMA_CHANNEL_2 : \
  363. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel3)) ? LL_BDMA_CHANNEL_3 : \
  364. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel4)) ? LL_BDMA_CHANNEL_4 : \
  365. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel5)) ? LL_BDMA_CHANNEL_5 : \
  366. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel6)) ? LL_BDMA_CHANNEL_6 : \
  367. LL_BDMA_CHANNEL_7)
  368. #endif /* BDMA1 */
  369. /**
  370. * @brief Convert BDMA Instance BDMAx and LL_BDMA_CHANNEL_y into BDMAx_Channely
  371. * @param __BDMA_INSTANCE__ BDMAx
  372. * @param __CHANNEL__ LL_BDMA_CHANNEL_y
  373. * @retval BDMAx_Channely
  374. */
  375. #if defined (BDMA1)
  376. #define __LL_BDMA_GET_CHANNEL_INSTANCE(__BDMA_INSTANCE__, __CHANNEL__) \
  377. ((((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA_Channel0 : \
  378. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA1_Channel0 : \
  379. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA_Channel1 : \
  380. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA1_Channel1 : \
  381. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA_Channel2 : \
  382. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA1_Channel2 : \
  383. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA_Channel3 : \
  384. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA1_Channel3 : \
  385. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA_Channel4 : \
  386. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA1_Channel4 : \
  387. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA_Channel5 : \
  388. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA1_Channel5 : \
  389. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA_Channel6 : \
  390. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA1)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA1_Channel6 : \
  391. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_7))) ? BDMA_Channel7 : \
  392. BDMA1_Channel7)
  393. #else
  394. #define __LL_BDMA_GET_CHANNEL_INSTANCE(__BDMA_INSTANCE__, __CHANNEL__) \
  395. ((((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA_Channel0 : \
  396. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA_Channel1 : \
  397. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA_Channel2 : \
  398. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA_Channel3 : \
  399. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA_Channel4 : \
  400. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA_Channel5 : \
  401. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA_Channel6 : \
  402. BDMA_Channel7)
  403. #endif /* BDMA1 */
  404. /**
  405. * @}
  406. */
  407. /**
  408. * @}
  409. */
  410. /* Exported functions --------------------------------------------------------*/
  411. /** @defgroup BDMA_LL_Exported_Functions BDMA Exported Functions
  412. * @{
  413. */
  414. /** @defgroup BDMA_LL_EF_Configuration Configuration
  415. * @{
  416. */
  417. /**
  418. * @brief Enable BDMA channel.
  419. * @rmtoll CCR EN LL_BDMA_EnableChannel
  420. * @param BDMAx BDMA Instance
  421. * @param Channel This parameter can be one of the following values:
  422. * @arg @ref LL_BDMA_CHANNEL_0
  423. * @arg @ref LL_BDMA_CHANNEL_1
  424. * @arg @ref LL_BDMA_CHANNEL_2
  425. * @arg @ref LL_BDMA_CHANNEL_3
  426. * @arg @ref LL_BDMA_CHANNEL_4
  427. * @arg @ref LL_BDMA_CHANNEL_5
  428. * @arg @ref LL_BDMA_CHANNEL_6
  429. * @arg @ref LL_BDMA_CHANNEL_7
  430. * @retval None
  431. */
  432. __STATIC_INLINE void LL_BDMA_EnableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  433. {
  434. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  435. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN);
  436. }
  437. /**
  438. * @brief Disable BDMA channel.
  439. * @rmtoll CCR EN LL_BDMA_DisableChannel
  440. * @param BDMAx BDMA Instance
  441. * @param Channel This parameter can be one of the following values:
  442. * @arg @ref LL_BDMA_CHANNEL_0
  443. * @arg @ref LL_BDMA_CHANNEL_1
  444. * @arg @ref LL_BDMA_CHANNEL_2
  445. * @arg @ref LL_BDMA_CHANNEL_3
  446. * @arg @ref LL_BDMA_CHANNEL_4
  447. * @arg @ref LL_BDMA_CHANNEL_5
  448. * @arg @ref LL_BDMA_CHANNEL_6
  449. * @arg @ref LL_BDMA_CHANNEL_7
  450. * @retval None
  451. */
  452. __STATIC_INLINE void LL_BDMA_DisableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  453. {
  454. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  455. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN);
  456. }
  457. /**
  458. * @brief Check if BDMA channel is enabled or disabled.
  459. * @rmtoll CCR EN LL_BDMA_IsEnabledChannel
  460. * @param BDMAx BDMA Instance
  461. * @param Channel This parameter can be one of the following values:
  462. * @arg @ref LL_BDMA_CHANNEL_0
  463. * @arg @ref LL_BDMA_CHANNEL_1
  464. * @arg @ref LL_BDMA_CHANNEL_2
  465. * @arg @ref LL_BDMA_CHANNEL_3
  466. * @arg @ref LL_BDMA_CHANNEL_4
  467. * @arg @ref LL_BDMA_CHANNEL_5
  468. * @arg @ref LL_BDMA_CHANNEL_6
  469. * @arg @ref LL_BDMA_CHANNEL_7
  470. * @retval State of bit (1 or 0).
  471. */
  472. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledChannel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  473. {
  474. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  475. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN) == (BDMA_CCR_EN)) ? 1UL : 0UL);
  476. }
  477. /**
  478. * @brief Configure all parameters link to BDMA transfer.
  479. * @rmtoll CCR DIR LL_BDMA_ConfigTransfer\n
  480. * CCR MEM2MEM LL_BDMA_ConfigTransfer\n
  481. * CCR CIRC LL_BDMA_ConfigTransfer\n
  482. * CCR PINC LL_BDMA_ConfigTransfer\n
  483. * CCR MINC LL_BDMA_ConfigTransfer\n
  484. * CCR PSIZE LL_BDMA_ConfigTransfer\n
  485. * CCR MSIZE LL_BDMA_ConfigTransfer\n
  486. * CCR PL LL_BDMA_ConfigTransfer
  487. * @param BDMAx BDMA Instance
  488. * @param Channel This parameter can be one of the following values:
  489. * @arg @ref LL_BDMA_CHANNEL_0
  490. * @arg @ref LL_BDMA_CHANNEL_1
  491. * @arg @ref LL_BDMA_CHANNEL_2
  492. * @arg @ref LL_BDMA_CHANNEL_3
  493. * @arg @ref LL_BDMA_CHANNEL_4
  494. * @arg @ref LL_BDMA_CHANNEL_5
  495. * @arg @ref LL_BDMA_CHANNEL_6
  496. * @arg @ref LL_BDMA_CHANNEL_7
  497. * @param Configuration This parameter must be a combination of all the following values:
  498. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  499. * @arg @ref LL_BDMA_MODE_NORMAL or @ref LL_BDMA_MODE_CIRCULAR
  500. * @arg @ref LL_BDMA_PERIPH_INCREMENT or @ref LL_BDMA_PERIPH_NOINCREMENT
  501. * @arg @ref LL_BDMA_MEMORY_INCREMENT or @ref LL_BDMA_MEMORY_NOINCREMENT
  502. * @arg @ref LL_BDMA_PDATAALIGN_BYTE or @ref LL_BDMA_PDATAALIGN_HALFWORD or @ref LL_BDMA_PDATAALIGN_WORD
  503. * @arg @ref LL_BDMA_MDATAALIGN_BYTE or @ref LL_BDMA_MDATAALIGN_HALFWORD or @ref LL_BDMA_MDATAALIGN_WORD
  504. * @arg @ref LL_BDMA_PRIORITY_LOW or @ref LL_BDMA_PRIORITY_MEDIUM or @ref LL_BDMA_PRIORITY_HIGH or @ref LL_BDMA_PRIORITY_VERYHIGH
  505. * @retval None
  506. */
  507. __STATIC_INLINE void LL_BDMA_ConfigTransfer(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Configuration)
  508. {
  509. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  510. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  511. BDMA_CCR_DIR | BDMA_CCR_MEM2MEM | BDMA_CCR_CIRC | BDMA_CCR_PINC | BDMA_CCR_MINC | BDMA_CCR_PSIZE | BDMA_CCR_MSIZE | BDMA_CCR_PL,
  512. Configuration);
  513. }
  514. /**
  515. * @brief Set Data transfer direction (read from peripheral or from memory).
  516. * @rmtoll CCR DIR LL_BDMA_SetDataTransferDirection\n
  517. * CCR MEM2MEM LL_BDMA_SetDataTransferDirection
  518. * @param BDMAx BDMA Instance
  519. * @param Channel This parameter can be one of the following values:
  520. * @arg @ref LL_BDMA_CHANNEL_0
  521. * @arg @ref LL_BDMA_CHANNEL_1
  522. * @arg @ref LL_BDMA_CHANNEL_2
  523. * @arg @ref LL_BDMA_CHANNEL_3
  524. * @arg @ref LL_BDMA_CHANNEL_4
  525. * @arg @ref LL_BDMA_CHANNEL_5
  526. * @arg @ref LL_BDMA_CHANNEL_6
  527. * @arg @ref LL_BDMA_CHANNEL_7
  528. * @param Direction This parameter can be one of the following values:
  529. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
  530. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
  531. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  532. * @retval None
  533. */
  534. __STATIC_INLINE void LL_BDMA_SetDataTransferDirection(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Direction)
  535. {
  536. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  537. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  538. BDMA_CCR_DIR | BDMA_CCR_MEM2MEM, Direction);
  539. }
  540. /**
  541. * @brief Get Data transfer direction (read from peripheral or from memory).
  542. * @rmtoll CCR DIR LL_BDMA_GetDataTransferDirection\n
  543. * CCR MEM2MEM LL_BDMA_GetDataTransferDirection
  544. * @param BDMAx BDMA Instance
  545. * @param Channel This parameter can be one of the following values:
  546. * @arg @ref LL_BDMA_CHANNEL_0
  547. * @arg @ref LL_BDMA_CHANNEL_1
  548. * @arg @ref LL_BDMA_CHANNEL_2
  549. * @arg @ref LL_BDMA_CHANNEL_3
  550. * @arg @ref LL_BDMA_CHANNEL_4
  551. * @arg @ref LL_BDMA_CHANNEL_5
  552. * @arg @ref LL_BDMA_CHANNEL_6
  553. * @arg @ref LL_BDMA_CHANNEL_7
  554. * @retval Returned value can be one of the following values:
  555. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
  556. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
  557. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  558. */
  559. __STATIC_INLINE uint32_t LL_BDMA_GetDataTransferDirection(BDMA_TypeDef *BDMAx, uint32_t Channel)
  560. {
  561. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  562. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  563. BDMA_CCR_DIR | BDMA_CCR_MEM2MEM));
  564. }
  565. /**
  566. * @brief Set BDMA mode circular or normal.
  567. * @note The circular buffer mode cannot be used if the memory-to-memory
  568. * data transfer is configured on the selected Channel.
  569. * @rmtoll CCR CIRC LL_BDMA_SetMode
  570. * @param BDMAx BDMA Instance
  571. * @param Channel This parameter can be one of the following values:
  572. * @arg @ref LL_BDMA_CHANNEL_0
  573. * @arg @ref LL_BDMA_CHANNEL_1
  574. * @arg @ref LL_BDMA_CHANNEL_2
  575. * @arg @ref LL_BDMA_CHANNEL_3
  576. * @arg @ref LL_BDMA_CHANNEL_4
  577. * @arg @ref LL_BDMA_CHANNEL_5
  578. * @arg @ref LL_BDMA_CHANNEL_6
  579. * @arg @ref LL_BDMA_CHANNEL_7
  580. * @param Mode This parameter can be one of the following values:
  581. * @arg @ref LL_BDMA_MODE_NORMAL
  582. * @arg @ref LL_BDMA_MODE_CIRCULAR
  583. * @retval None
  584. */
  585. __STATIC_INLINE void LL_BDMA_SetMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Mode)
  586. {
  587. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  588. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CIRC,
  589. Mode);
  590. }
  591. /**
  592. * @brief Get BDMA mode circular or normal.
  593. * @rmtoll CCR CIRC LL_BDMA_GetMode
  594. * @param BDMAx BDMA Instance
  595. * @param Channel This parameter can be one of the following values:
  596. * @arg @ref LL_BDMA_CHANNEL_0
  597. * @arg @ref LL_BDMA_CHANNEL_1
  598. * @arg @ref LL_BDMA_CHANNEL_2
  599. * @arg @ref LL_BDMA_CHANNEL_3
  600. * @arg @ref LL_BDMA_CHANNEL_4
  601. * @arg @ref LL_BDMA_CHANNEL_5
  602. * @arg @ref LL_BDMA_CHANNEL_6
  603. * @arg @ref LL_BDMA_CHANNEL_7
  604. * @retval Returned value can be one of the following values:
  605. * @arg @ref LL_BDMA_MODE_NORMAL
  606. * @arg @ref LL_BDMA_MODE_CIRCULAR
  607. */
  608. __STATIC_INLINE uint32_t LL_BDMA_GetMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  609. {
  610. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  611. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  612. BDMA_CCR_CIRC));
  613. }
  614. /**
  615. * @brief Set Peripheral increment mode.
  616. * @rmtoll CCR PINC LL_BDMA_SetPeriphIncMode
  617. * @param BDMAx BDMA Instance
  618. * @param Channel This parameter can be one of the following values:
  619. * @arg @ref LL_BDMA_CHANNEL_0
  620. * @arg @ref LL_BDMA_CHANNEL_1
  621. * @arg @ref LL_BDMA_CHANNEL_2
  622. * @arg @ref LL_BDMA_CHANNEL_3
  623. * @arg @ref LL_BDMA_CHANNEL_4
  624. * @arg @ref LL_BDMA_CHANNEL_5
  625. * @arg @ref LL_BDMA_CHANNEL_6
  626. * @arg @ref LL_BDMA_CHANNEL_7
  627. * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values:
  628. * @arg @ref LL_BDMA_PERIPH_INCREMENT
  629. * @arg @ref LL_BDMA_PERIPH_NOINCREMENT
  630. * @retval None
  631. */
  632. __STATIC_INLINE void LL_BDMA_SetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode)
  633. {
  634. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  635. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PINC,
  636. PeriphOrM2MSrcIncMode);
  637. }
  638. /**
  639. * @brief Get Peripheral increment mode.
  640. * @rmtoll CCR PINC LL_BDMA_GetPeriphIncMode
  641. * @param BDMAx BDMA Instance
  642. * @param Channel This parameter can be one of the following values:
  643. * @arg @ref LL_BDMA_CHANNEL_0
  644. * @arg @ref LL_BDMA_CHANNEL_1
  645. * @arg @ref LL_BDMA_CHANNEL_2
  646. * @arg @ref LL_BDMA_CHANNEL_3
  647. * @arg @ref LL_BDMA_CHANNEL_4
  648. * @arg @ref LL_BDMA_CHANNEL_5
  649. * @arg @ref LL_BDMA_CHANNEL_6
  650. * @arg @ref LL_BDMA_CHANNEL_7
  651. * @retval Returned value can be one of the following values:
  652. * @arg @ref LL_BDMA_PERIPH_INCREMENT
  653. * @arg @ref LL_BDMA_PERIPH_NOINCREMENT
  654. */
  655. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  656. {
  657. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  658. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  659. BDMA_CCR_PINC));
  660. }
  661. /**
  662. * @brief Set Memory increment mode.
  663. * @rmtoll CCR MINC LL_BDMA_SetMemoryIncMode
  664. * @param BDMAx BDMA Instance
  665. * @param Channel This parameter can be one of the following values:
  666. * @arg @ref LL_BDMA_CHANNEL_0
  667. * @arg @ref LL_BDMA_CHANNEL_1
  668. * @arg @ref LL_BDMA_CHANNEL_2
  669. * @arg @ref LL_BDMA_CHANNEL_3
  670. * @arg @ref LL_BDMA_CHANNEL_4
  671. * @arg @ref LL_BDMA_CHANNEL_5
  672. * @arg @ref LL_BDMA_CHANNEL_6
  673. * @arg @ref LL_BDMA_CHANNEL_7
  674. * @param MemoryOrM2MDstIncMode This parameter can be one of the following values:
  675. * @arg @ref LL_BDMA_MEMORY_INCREMENT
  676. * @arg @ref LL_BDMA_MEMORY_NOINCREMENT
  677. * @retval None
  678. */
  679. __STATIC_INLINE void LL_BDMA_SetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode)
  680. {
  681. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  682. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_MINC,
  683. MemoryOrM2MDstIncMode);
  684. }
  685. /**
  686. * @brief Get Memory increment mode.
  687. * @rmtoll CCR MINC LL_BDMA_GetMemoryIncMode
  688. * @param BDMAx BDMA Instance
  689. * @param Channel This parameter can be one of the following values:
  690. * @arg @ref LL_BDMA_CHANNEL_0
  691. * @arg @ref LL_BDMA_CHANNEL_1
  692. * @arg @ref LL_BDMA_CHANNEL_2
  693. * @arg @ref LL_BDMA_CHANNEL_3
  694. * @arg @ref LL_BDMA_CHANNEL_4
  695. * @arg @ref LL_BDMA_CHANNEL_5
  696. * @arg @ref LL_BDMA_CHANNEL_6
  697. * @arg @ref LL_BDMA_CHANNEL_7
  698. * @retval Returned value can be one of the following values:
  699. * @arg @ref LL_BDMA_MEMORY_INCREMENT
  700. * @arg @ref LL_BDMA_MEMORY_NOINCREMENT
  701. */
  702. __STATIC_INLINE uint32_t LL_BDMA_GetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  703. {
  704. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  705. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  706. BDMA_CCR_MINC));
  707. }
  708. /**
  709. * @brief Set Peripheral size.
  710. * @rmtoll CCR PSIZE LL_BDMA_SetPeriphSize
  711. * @param BDMAx BDMA Instance
  712. * @param Channel This parameter can be one of the following values:
  713. * @arg @ref LL_BDMA_CHANNEL_0
  714. * @arg @ref LL_BDMA_CHANNEL_1
  715. * @arg @ref LL_BDMA_CHANNEL_2
  716. * @arg @ref LL_BDMA_CHANNEL_3
  717. * @arg @ref LL_BDMA_CHANNEL_4
  718. * @arg @ref LL_BDMA_CHANNEL_5
  719. * @arg @ref LL_BDMA_CHANNEL_6
  720. * @arg @ref LL_BDMA_CHANNEL_7
  721. * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values:
  722. * @arg @ref LL_BDMA_PDATAALIGN_BYTE
  723. * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD
  724. * @arg @ref LL_BDMA_PDATAALIGN_WORD
  725. * @retval None
  726. */
  727. __STATIC_INLINE void LL_BDMA_SetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize)
  728. {
  729. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  730. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PSIZE,
  731. PeriphOrM2MSrcDataSize);
  732. }
  733. /**
  734. * @brief Get Peripheral size.
  735. * @rmtoll CCR PSIZE LL_BDMA_GetPeriphSize
  736. * @param BDMAx BDMA Instance
  737. * @param Channel This parameter can be one of the following values:
  738. * @arg @ref LL_BDMA_CHANNEL_0
  739. * @arg @ref LL_BDMA_CHANNEL_1
  740. * @arg @ref LL_BDMA_CHANNEL_2
  741. * @arg @ref LL_BDMA_CHANNEL_3
  742. * @arg @ref LL_BDMA_CHANNEL_4
  743. * @arg @ref LL_BDMA_CHANNEL_5
  744. * @arg @ref LL_BDMA_CHANNEL_6
  745. * @arg @ref LL_BDMA_CHANNEL_7
  746. * @retval Returned value can be one of the following values:
  747. * @arg @ref LL_BDMA_PDATAALIGN_BYTE
  748. * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD
  749. * @arg @ref LL_BDMA_PDATAALIGN_WORD
  750. */
  751. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel)
  752. {
  753. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  754. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  755. BDMA_CCR_PSIZE));
  756. }
  757. /**
  758. * @brief Set Memory size.
  759. * @rmtoll CCR MSIZE LL_BDMA_SetMemorySize
  760. * @param BDMAx BDMA Instance
  761. * @param Channel This parameter can be one of the following values:
  762. * @arg @ref LL_BDMA_CHANNEL_0
  763. * @arg @ref LL_BDMA_CHANNEL_1
  764. * @arg @ref LL_BDMA_CHANNEL_2
  765. * @arg @ref LL_BDMA_CHANNEL_3
  766. * @arg @ref LL_BDMA_CHANNEL_4
  767. * @arg @ref LL_BDMA_CHANNEL_5
  768. * @arg @ref LL_BDMA_CHANNEL_6
  769. * @arg @ref LL_BDMA_CHANNEL_7
  770. * @param MemoryOrM2MDstDataSize This parameter can be one of the following values:
  771. * @arg @ref LL_BDMA_MDATAALIGN_BYTE
  772. * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD
  773. * @arg @ref LL_BDMA_MDATAALIGN_WORD
  774. * @retval None
  775. */
  776. __STATIC_INLINE void LL_BDMA_SetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize)
  777. {
  778. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  779. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_MSIZE,
  780. MemoryOrM2MDstDataSize);
  781. }
  782. /**
  783. * @brief Get Memory size.
  784. * @rmtoll CCR MSIZE LL_BDMA_GetMemorySize
  785. * @param BDMAx BDMA Instance
  786. * @param Channel This parameter can be one of the following values:
  787. * @arg @ref LL_BDMA_CHANNEL_0
  788. * @arg @ref LL_BDMA_CHANNEL_1
  789. * @arg @ref LL_BDMA_CHANNEL_2
  790. * @arg @ref LL_BDMA_CHANNEL_3
  791. * @arg @ref LL_BDMA_CHANNEL_4
  792. * @arg @ref LL_BDMA_CHANNEL_5
  793. * @arg @ref LL_BDMA_CHANNEL_6
  794. * @arg @ref LL_BDMA_CHANNEL_7
  795. * @retval Returned value can be one of the following values:
  796. * @arg @ref LL_BDMA_MDATAALIGN_BYTE
  797. * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD
  798. * @arg @ref LL_BDMA_MDATAALIGN_WORD
  799. */
  800. __STATIC_INLINE uint32_t LL_BDMA_GetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel)
  801. {
  802. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  803. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  804. BDMA_CCR_MSIZE));
  805. }
  806. /**
  807. * @brief Set Channel priority level.
  808. * @rmtoll CCR PL LL_BDMA_SetChannelPriorityLevel
  809. * @param BDMAx BDMA Instance
  810. * @param Channel This parameter can be one of the following values:
  811. * @arg @ref LL_BDMA_CHANNEL_0
  812. * @arg @ref LL_BDMA_CHANNEL_1
  813. * @arg @ref LL_BDMA_CHANNEL_2
  814. * @arg @ref LL_BDMA_CHANNEL_3
  815. * @arg @ref LL_BDMA_CHANNEL_4
  816. * @arg @ref LL_BDMA_CHANNEL_5
  817. * @arg @ref LL_BDMA_CHANNEL_6
  818. * @arg @ref LL_BDMA_CHANNEL_7
  819. * @param Priority This parameter can be one of the following values:
  820. * @arg @ref LL_BDMA_PRIORITY_LOW
  821. * @arg @ref LL_BDMA_PRIORITY_MEDIUM
  822. * @arg @ref LL_BDMA_PRIORITY_HIGH
  823. * @arg @ref LL_BDMA_PRIORITY_VERYHIGH
  824. * @retval None
  825. */
  826. __STATIC_INLINE void LL_BDMA_SetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Priority)
  827. {
  828. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  829. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PL,
  830. Priority);
  831. }
  832. /**
  833. * @brief Get Channel priority level.
  834. * @rmtoll CCR PL LL_BDMA_GetChannelPriorityLevel
  835. * @param BDMAx BDMA Instance
  836. * @param Channel This parameter can be one of the following values:
  837. * @arg @ref LL_BDMA_CHANNEL_0
  838. * @arg @ref LL_BDMA_CHANNEL_1
  839. * @arg @ref LL_BDMA_CHANNEL_2
  840. * @arg @ref LL_BDMA_CHANNEL_3
  841. * @arg @ref LL_BDMA_CHANNEL_4
  842. * @arg @ref LL_BDMA_CHANNEL_5
  843. * @arg @ref LL_BDMA_CHANNEL_6
  844. * @arg @ref LL_BDMA_CHANNEL_7
  845. * @retval Returned value can be one of the following values:
  846. * @arg @ref LL_BDMA_PRIORITY_LOW
  847. * @arg @ref LL_BDMA_PRIORITY_MEDIUM
  848. * @arg @ref LL_BDMA_PRIORITY_HIGH
  849. * @arg @ref LL_BDMA_PRIORITY_VERYHIGH
  850. */
  851. __STATIC_INLINE uint32_t LL_BDMA_GetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  852. {
  853. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  854. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  855. BDMA_CCR_PL));
  856. }
  857. /**
  858. * @brief Set Number of data to transfer.
  859. * @note This action has no effect if
  860. * channel is enabled.
  861. * @rmtoll CNDTR NDT LL_BDMA_SetDataLength
  862. * @param BDMAx BDMA Instance
  863. * @param Channel This parameter can be one of the following values:
  864. * @arg @ref LL_BDMA_CHANNEL_0
  865. * @arg @ref LL_BDMA_CHANNEL_1
  866. * @arg @ref LL_BDMA_CHANNEL_2
  867. * @arg @ref LL_BDMA_CHANNEL_3
  868. * @arg @ref LL_BDMA_CHANNEL_4
  869. * @arg @ref LL_BDMA_CHANNEL_5
  870. * @arg @ref LL_BDMA_CHANNEL_6
  871. * @arg @ref LL_BDMA_CHANNEL_7
  872. * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF
  873. * @retval None
  874. */
  875. __STATIC_INLINE void LL_BDMA_SetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t NbData)
  876. {
  877. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  878. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CNDTR,
  879. BDMA_CNDTR_NDT, NbData);
  880. }
  881. /**
  882. * @brief Get Number of data to transfer.
  883. * @note Once the channel is enabled, the return value indicate the
  884. * remaining bytes to be transmitted.
  885. * @rmtoll CNDTR NDT LL_BDMA_GetDataLength
  886. * @param BDMAx BDMA Instance
  887. * @param Channel This parameter can be one of the following values:
  888. * @arg @ref LL_BDMA_CHANNEL_0
  889. * @arg @ref LL_BDMA_CHANNEL_1
  890. * @arg @ref LL_BDMA_CHANNEL_2
  891. * @arg @ref LL_BDMA_CHANNEL_3
  892. * @arg @ref LL_BDMA_CHANNEL_4
  893. * @arg @ref LL_BDMA_CHANNEL_5
  894. * @arg @ref LL_BDMA_CHANNEL_6
  895. * @arg @ref LL_BDMA_CHANNEL_7
  896. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  897. */
  898. __STATIC_INLINE uint32_t LL_BDMA_GetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel)
  899. {
  900. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  901. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CNDTR,
  902. BDMA_CNDTR_NDT));
  903. }
  904. /**
  905. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  906. * @rmtoll CR CT LL_BDMA_SetCurrentTargetMem
  907. * @param BDMAx BDMAx Instance
  908. * @param Channel This parameter can be one of the following values:
  909. * @arg @ref LL_BDMA_CHANNEL_0
  910. * @arg @ref LL_BDMA_CHANNEL_1
  911. * @arg @ref LL_BDMA_CHANNEL_2
  912. * @arg @ref LL_BDMA_CHANNEL_3
  913. * @arg @ref LL_BDMA_CHANNEL_4
  914. * @arg @ref LL_BDMA_CHANNEL_5
  915. * @arg @ref LL_BDMA_CHANNEL_6
  916. * @arg @ref LL_BDMA_CHANNEL_7
  917. * @param CurrentMemory This parameter can be one of the following values:
  918. * @arg @ref LL_BDMA_CURRENTTARGETMEM0
  919. * @arg @ref LL_BDMA_CURRENTTARGETMEM1
  920. * @retval None
  921. */
  922. __STATIC_INLINE void LL_BDMA_SetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t CurrentMemory)
  923. {
  924. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  925. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CT, CurrentMemory);
  926. }
  927. /**
  928. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  929. * @rmtoll CR CT LL_BDMA_GetCurrentTargetMem
  930. * @param BDMAx BDMAx Instance
  931. * @param Channel This parameter can be one of the following values:
  932. * @arg @ref LL_BDMA_CHANNEL_0
  933. * @arg @ref LL_BDMA_CHANNEL_1
  934. * @arg @ref LL_BDMA_CHANNEL_2
  935. * @arg @ref LL_BDMA_CHANNEL_3
  936. * @arg @ref LL_BDMA_CHANNEL_4
  937. * @arg @ref LL_BDMA_CHANNEL_5
  938. * @arg @ref LL_BDMA_CHANNEL_6
  939. * @arg @ref LL_BDMA_CHANNEL_7
  940. * @retval Returned value can be one of the following values:
  941. * @arg @ref LL_BDMA_CURRENTTARGETMEM0
  942. * @arg @ref LL_BDMA_CURRENTTARGETMEM1
  943. */
  944. __STATIC_INLINE uint32_t LL_BDMA_GetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t Channel)
  945. {
  946. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  947. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CT));
  948. }
  949. /**
  950. * @brief Enable the double buffer mode.
  951. * @rmtoll CR DBM LL_BDMA_EnableDoubleBufferMode
  952. * @param BDMAx BDMAx Instance
  953. * @param Channel This parameter can be one of the following values:
  954. * @arg @ref LL_BDMA_CHANNEL_0
  955. * @arg @ref LL_BDMA_CHANNEL_1
  956. * @arg @ref LL_BDMA_CHANNEL_2
  957. * @arg @ref LL_BDMA_CHANNEL_3
  958. * @arg @ref LL_BDMA_CHANNEL_4
  959. * @arg @ref LL_BDMA_CHANNEL_5
  960. * @arg @ref LL_BDMA_CHANNEL_6
  961. * @arg @ref LL_BDMA_CHANNEL_7
  962. * @retval None
  963. */
  964. __STATIC_INLINE void LL_BDMA_EnableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  965. {
  966. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  967. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM);
  968. }
  969. /**
  970. * @brief Disable the double buffer mode.
  971. * @rmtoll CR DBM LL_BDMA_DisableDoubleBufferMode
  972. * @param BDMAx BDMAx Instance
  973. * @param Channel This parameter can be one of the following values:
  974. * @arg @ref LL_BDMA_CHANNEL_0
  975. * @arg @ref LL_BDMA_CHANNEL_1
  976. * @arg @ref LL_BDMA_CHANNEL_2
  977. * @arg @ref LL_BDMA_CHANNEL_3
  978. * @arg @ref LL_BDMA_CHANNEL_4
  979. * @arg @ref LL_BDMA_CHANNEL_5
  980. * @arg @ref LL_BDMA_CHANNEL_6
  981. * @arg @ref LL_BDMA_CHANNEL_7
  982. * @retval None
  983. */
  984. __STATIC_INLINE void LL_BDMA_DisableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  985. {
  986. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  987. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM);
  988. }
  989. /**
  990. * @brief Configure the Source and Destination addresses.
  991. * @note This API must not be called when the BDMA channel is enabled.
  992. * @note Each IP using BDMA provides an API to get directly the register adress (LL_PPP_BDMA_GetRegAddr).
  993. * @rmtoll CPAR PA LL_BDMA_ConfigAddresses\n
  994. * CMAR MA LL_BDMA_ConfigAddresses
  995. * @param BDMAx BDMA Instance
  996. * @param Channel This parameter can be one of the following values:
  997. * @arg @ref LL_BDMA_CHANNEL_0
  998. * @arg @ref LL_BDMA_CHANNEL_1
  999. * @arg @ref LL_BDMA_CHANNEL_2
  1000. * @arg @ref LL_BDMA_CHANNEL_3
  1001. * @arg @ref LL_BDMA_CHANNEL_4
  1002. * @arg @ref LL_BDMA_CHANNEL_5
  1003. * @arg @ref LL_BDMA_CHANNEL_6
  1004. * @arg @ref LL_BDMA_CHANNEL_7
  1005. * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1006. * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1007. * @param Direction This parameter can be one of the following values:
  1008. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
  1009. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
  1010. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  1011. * @retval None
  1012. */
  1013. __STATIC_INLINE void LL_BDMA_ConfigAddresses(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t SrcAddress,
  1014. uint32_t DstAddress, uint32_t Direction)
  1015. {
  1016. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1017. /* Direction Memory to Periph */
  1018. if (Direction == LL_BDMA_DIRECTION_MEMORY_TO_PERIPH)
  1019. {
  1020. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, SrcAddress);
  1021. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, DstAddress);
  1022. }
  1023. /* Direction Periph to Memory and Memory to Memory */
  1024. else
  1025. {
  1026. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, SrcAddress);
  1027. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, DstAddress);
  1028. }
  1029. }
  1030. /**
  1031. * @brief Set the Memory address.
  1032. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1033. * @note This API must not be called when the BDMA channel is enabled.
  1034. * @rmtoll CMAR MA LL_BDMA_SetMemoryAddress
  1035. * @param BDMAx BDMA Instance
  1036. * @param Channel This parameter can be one of the following values:
  1037. * @arg @ref LL_BDMA_CHANNEL_0
  1038. * @arg @ref LL_BDMA_CHANNEL_1
  1039. * @arg @ref LL_BDMA_CHANNEL_2
  1040. * @arg @ref LL_BDMA_CHANNEL_3
  1041. * @arg @ref LL_BDMA_CHANNEL_4
  1042. * @arg @ref LL_BDMA_CHANNEL_5
  1043. * @arg @ref LL_BDMA_CHANNEL_6
  1044. * @arg @ref LL_BDMA_CHANNEL_7
  1045. * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1046. * @retval None
  1047. */
  1048. __STATIC_INLINE void LL_BDMA_SetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
  1049. {
  1050. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1051. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, MemoryAddress);
  1052. }
  1053. /**
  1054. * @brief Set the Peripheral address.
  1055. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1056. * @note This API must not be called when the BDMA channel is enabled.
  1057. * @rmtoll CPAR PA LL_BDMA_SetPeriphAddress
  1058. * @param BDMAx BDMA Instance
  1059. * @param Channel This parameter can be one of the following values:
  1060. * @arg @ref LL_BDMA_CHANNEL_0
  1061. * @arg @ref LL_BDMA_CHANNEL_1
  1062. * @arg @ref LL_BDMA_CHANNEL_2
  1063. * @arg @ref LL_BDMA_CHANNEL_3
  1064. * @arg @ref LL_BDMA_CHANNEL_4
  1065. * @arg @ref LL_BDMA_CHANNEL_5
  1066. * @arg @ref LL_BDMA_CHANNEL_6
  1067. * @arg @ref LL_BDMA_CHANNEL_7
  1068. * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1069. * @retval None
  1070. */
  1071. __STATIC_INLINE void LL_BDMA_SetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphAddress)
  1072. {
  1073. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1074. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, PeriphAddress);
  1075. }
  1076. /**
  1077. * @brief Get Memory address.
  1078. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1079. * @rmtoll CMAR MA LL_BDMA_GetMemoryAddress
  1080. * @param BDMAx BDMA Instance
  1081. * @param Channel This parameter can be one of the following values:
  1082. * @arg @ref LL_BDMA_CHANNEL_0
  1083. * @arg @ref LL_BDMA_CHANNEL_1
  1084. * @arg @ref LL_BDMA_CHANNEL_2
  1085. * @arg @ref LL_BDMA_CHANNEL_3
  1086. * @arg @ref LL_BDMA_CHANNEL_4
  1087. * @arg @ref LL_BDMA_CHANNEL_5
  1088. * @arg @ref LL_BDMA_CHANNEL_6
  1089. * @arg @ref LL_BDMA_CHANNEL_7
  1090. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1091. */
  1092. __STATIC_INLINE uint32_t LL_BDMA_GetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1093. {
  1094. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1095. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR));
  1096. }
  1097. /**
  1098. * @brief Get Peripheral address.
  1099. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1100. * @rmtoll CPAR PA LL_BDMA_GetPeriphAddress
  1101. * @param BDMAx BDMA Instance
  1102. * @param Channel This parameter can be one of the following values:
  1103. * @arg @ref LL_BDMA_CHANNEL_0
  1104. * @arg @ref LL_BDMA_CHANNEL_1
  1105. * @arg @ref LL_BDMA_CHANNEL_2
  1106. * @arg @ref LL_BDMA_CHANNEL_3
  1107. * @arg @ref LL_BDMA_CHANNEL_4
  1108. * @arg @ref LL_BDMA_CHANNEL_5
  1109. * @arg @ref LL_BDMA_CHANNEL_6
  1110. * @arg @ref LL_BDMA_CHANNEL_7
  1111. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1112. */
  1113. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1114. {
  1115. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1116. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR));
  1117. }
  1118. /**
  1119. * @brief Set the Memory to Memory Source address.
  1120. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1121. * @note This API must not be called when the BDMA channel is enabled.
  1122. * @rmtoll CPAR PA LL_BDMA_SetM2MSrcAddress
  1123. * @param BDMAx BDMA Instance
  1124. * @param Channel This parameter can be one of the following values:
  1125. * @arg @ref LL_BDMA_CHANNEL_0
  1126. * @arg @ref LL_BDMA_CHANNEL_1
  1127. * @arg @ref LL_BDMA_CHANNEL_2
  1128. * @arg @ref LL_BDMA_CHANNEL_3
  1129. * @arg @ref LL_BDMA_CHANNEL_4
  1130. * @arg @ref LL_BDMA_CHANNEL_5
  1131. * @arg @ref LL_BDMA_CHANNEL_6
  1132. * @arg @ref LL_BDMA_CHANNEL_7
  1133. * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1134. * @retval None
  1135. */
  1136. __STATIC_INLINE void LL_BDMA_SetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
  1137. {
  1138. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1139. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, MemoryAddress);
  1140. }
  1141. /**
  1142. * @brief Set the Memory to Memory Destination address.
  1143. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1144. * @note This API must not be called when the BDMA channel is enabled.
  1145. * @rmtoll CMAR MA LL_BDMA_SetM2MDstAddress
  1146. * @param BDMAx BDMA Instance
  1147. * @param Channel This parameter can be one of the following values:
  1148. * @arg @ref LL_BDMA_CHANNEL_0
  1149. * @arg @ref LL_BDMA_CHANNEL_1
  1150. * @arg @ref LL_BDMA_CHANNEL_2
  1151. * @arg @ref LL_BDMA_CHANNEL_3
  1152. * @arg @ref LL_BDMA_CHANNEL_4
  1153. * @arg @ref LL_BDMA_CHANNEL_5
  1154. * @arg @ref LL_BDMA_CHANNEL_6
  1155. * @arg @ref LL_BDMA_CHANNEL_7
  1156. * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1157. * @retval None
  1158. */
  1159. __STATIC_INLINE void LL_BDMA_SetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
  1160. {
  1161. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1162. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, MemoryAddress);
  1163. }
  1164. /**
  1165. * @brief Get the Memory to Memory Source address.
  1166. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1167. * @rmtoll CPAR PA LL_BDMA_GetM2MSrcAddress
  1168. * @param BDMAx BDMA Instance
  1169. * @param Channel This parameter can be one of the following values:
  1170. * @arg @ref LL_BDMA_CHANNEL_0
  1171. * @arg @ref LL_BDMA_CHANNEL_1
  1172. * @arg @ref LL_BDMA_CHANNEL_2
  1173. * @arg @ref LL_BDMA_CHANNEL_3
  1174. * @arg @ref LL_BDMA_CHANNEL_4
  1175. * @arg @ref LL_BDMA_CHANNEL_5
  1176. * @arg @ref LL_BDMA_CHANNEL_6
  1177. * @arg @ref LL_BDMA_CHANNEL_7
  1178. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1179. */
  1180. __STATIC_INLINE uint32_t LL_BDMA_GetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1181. {
  1182. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1183. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR));
  1184. }
  1185. /**
  1186. * @brief Get the Memory to Memory Destination address.
  1187. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1188. * @rmtoll CMAR MA LL_BDMA_GetM2MDstAddress
  1189. * @param BDMAx BDMA Instance
  1190. * @param Channel This parameter can be one of the following values:
  1191. * @arg @ref LL_BDMA_CHANNEL_0
  1192. * @arg @ref LL_BDMA_CHANNEL_1
  1193. * @arg @ref LL_BDMA_CHANNEL_2
  1194. * @arg @ref LL_BDMA_CHANNEL_3
  1195. * @arg @ref LL_BDMA_CHANNEL_4
  1196. * @arg @ref LL_BDMA_CHANNEL_5
  1197. * @arg @ref LL_BDMA_CHANNEL_6
  1198. * @arg @ref LL_BDMA_CHANNEL_7
  1199. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1200. */
  1201. __STATIC_INLINE uint32_t LL_BDMA_GetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1202. {
  1203. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1204. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR));
  1205. }
  1206. /**
  1207. * @brief Set Memory 1 address (used in case of Double buffer mode).
  1208. * @rmtoll M1AR M1A LL_BDMA_SetMemory1Address
  1209. * @param BDMAx BDMAx Instance
  1210. * @param Channel This parameter can be one of the following values:
  1211. * @arg @ref LL_BDMA_CHANNEL_0
  1212. * @arg @ref LL_BDMA_CHANNEL_1
  1213. * @arg @ref LL_BDMA_CHANNEL_2
  1214. * @arg @ref LL_BDMA_CHANNEL_3
  1215. * @arg @ref LL_BDMA_CHANNEL_4
  1216. * @arg @ref LL_BDMA_CHANNEL_5
  1217. * @arg @ref LL_BDMA_CHANNEL_6
  1218. * @arg @ref LL_BDMA_CHANNEL_7
  1219. * @param Address Between 0 to 0xFFFFFFFF
  1220. * @retval None
  1221. */
  1222. __STATIC_INLINE void LL_BDMA_SetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Address)
  1223. {
  1224. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1225. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM1AR, BDMA_CM1AR_MA, Address);
  1226. }
  1227. /**
  1228. * @brief Get Memory 1 address (used in case of Double buffer mode).
  1229. * @rmtoll M1AR M1A LL_BDMA_GetMemory1Address
  1230. * @param BDMAx BDMAx Instance
  1231. * @param Channel This parameter can be one of the following values:
  1232. * @arg @ref LL_BDMA_CHANNEL_0
  1233. * @arg @ref LL_BDMA_CHANNEL_1
  1234. * @arg @ref LL_BDMA_CHANNEL_2
  1235. * @arg @ref LL_BDMA_CHANNEL_3
  1236. * @arg @ref LL_BDMA_CHANNEL_4
  1237. * @arg @ref LL_BDMA_CHANNEL_5
  1238. * @arg @ref LL_BDMA_CHANNEL_6
  1239. * @arg @ref LL_BDMA_CHANNEL_7
  1240. * @retval Between 0 to 0xFFFFFFFF
  1241. */
  1242. __STATIC_INLINE uint32_t LL_BDMA_GetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1243. {
  1244. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1245. return (((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM1AR);
  1246. }
  1247. /**
  1248. * @brief Set BDMA request for BDMA Channels on DMAMUX Channel x.
  1249. * @note DMAMUX2 channel 0 to 7 are mapped to BDMA channel 0 to 7.
  1250. * @rmtoll CxCR DMAREQ_ID LL_BDMA_SetPeriphRequest
  1251. * @param BDMAx BDMAx Instance
  1252. * @param Channel This parameter can be one of the following values:
  1253. * @arg @ref LL_BDMA_CHANNEL_0
  1254. * @arg @ref LL_BDMA_CHANNEL_1
  1255. * @arg @ref LL_BDMA_CHANNEL_2
  1256. * @arg @ref LL_BDMA_CHANNEL_3
  1257. * @arg @ref LL_BDMA_CHANNEL_4
  1258. * @arg @ref LL_BDMA_CHANNEL_5
  1259. * @arg @ref LL_BDMA_CHANNEL_6
  1260. * @arg @ref LL_BDMA_CHANNEL_7
  1261. * @param Request This parameter can be one of the following values:
  1262. * @arg @ref LL_DMAMUX2_REQ_MEM2MEM
  1263. * @arg @ref LL_DMAMUX2_REQ_GENERATOR0
  1264. * @arg @ref LL_DMAMUX2_REQ_GENERATOR1
  1265. * @arg @ref LL_DMAMUX2_REQ_GENERATOR2
  1266. * @arg @ref LL_DMAMUX2_REQ_GENERATOR3
  1267. * @arg @ref LL_DMAMUX2_REQ_GENERATOR4
  1268. * @arg @ref LL_DMAMUX2_REQ_GENERATOR5
  1269. * @arg @ref LL_DMAMUX2_REQ_GENERATOR6
  1270. * @arg @ref LL_DMAMUX2_REQ_GENERATOR7
  1271. * @arg @ref LL_DMAMUX2_REQ_LPUART1_RX
  1272. * @arg @ref LL_DMAMUX2_REQ_LPUART1_TX
  1273. * @arg @ref LL_DMAMUX2_REQ_SPI6_RX
  1274. * @arg @ref LL_DMAMUX2_REQ_SPI6_TX
  1275. * @arg @ref LL_DMAMUX2_REQ_I2C4_RX
  1276. * @arg @ref LL_DMAMUX2_REQ_I2C4_TX
  1277. * @arg @ref LL_DMAMUX2_REQ_SAI4_A (*)
  1278. * @arg @ref LL_DMAMUX2_REQ_SAI4_B (*)
  1279. * @arg @ref LL_DMAMUX2_REQ_ADC3 (*)
  1280. * @arg @ref LL_DMAMUX2_REQ_DAC3 (*)
  1281. * @arg @ref LL_DMAMUX2_REQ_DFSDM2_FLT0 (*)
  1282. * @note (*) Availability depends on devices.
  1283. * @retval None
  1284. */
  1285. __STATIC_INLINE void LL_BDMA_SetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Request)
  1286. {
  1287. UNUSED(BDMAx);
  1288. MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
  1289. }
  1290. /**
  1291. * @brief Get BDMA request for BDMA Channels on DMAMUX Channel x.
  1292. * @note DMAMUX channel 0 to 7 are mapped to BDMA channel 0 to 7.
  1293. * @rmtoll CxCR DMAREQ_ID LL_BDMA_GetPeriphRequest
  1294. * @param BDMAx BDMAx Instance
  1295. * @param Channel This parameter can be one of the following values:
  1296. * @arg @ref LL_BDMA_CHANNEL_0
  1297. * @arg @ref LL_BDMA_CHANNEL_1
  1298. * @arg @ref LL_BDMA_CHANNEL_2
  1299. * @arg @ref LL_BDMA_CHANNEL_3
  1300. * @arg @ref LL_BDMA_CHANNEL_4
  1301. * @arg @ref LL_BDMA_CHANNEL_5
  1302. * @arg @ref LL_BDMA_CHANNEL_6
  1303. * @arg @ref LL_BDMA_CHANNEL_7
  1304. * @retval Returned value can be one of the following values:
  1305. * @arg @ref LL_DMAMUX2_REQ_MEM2MEM
  1306. * @arg @ref LL_DMAMUX2_REQ_GENERATOR0
  1307. * @arg @ref LL_DMAMUX2_REQ_GENERATOR1
  1308. * @arg @ref LL_DMAMUX2_REQ_GENERATOR2
  1309. * @arg @ref LL_DMAMUX2_REQ_GENERATOR3
  1310. * @arg @ref LL_DMAMUX2_REQ_GENERATOR4
  1311. * @arg @ref LL_DMAMUX2_REQ_GENERATOR5
  1312. * @arg @ref LL_DMAMUX2_REQ_GENERATOR6
  1313. * @arg @ref LL_DMAMUX2_REQ_GENERATOR7
  1314. * @arg @ref LL_DMAMUX2_REQ_LPUART1_RX
  1315. * @arg @ref LL_DMAMUX2_REQ_LPUART1_TX
  1316. * @arg @ref LL_DMAMUX2_REQ_SPI6_RX
  1317. * @arg @ref LL_DMAMUX2_REQ_SPI6_TX
  1318. * @arg @ref LL_DMAMUX2_REQ_I2C4_RX
  1319. * @arg @ref LL_DMAMUX2_REQ_I2C4_TX
  1320. * @arg @ref LL_DMAMUX2_REQ_SAI4_A (*)
  1321. * @arg @ref LL_DMAMUX2_REQ_SAI4_B (*)
  1322. * @arg @ref LL_DMAMUX2_REQ_ADC3 (*)
  1323. * @arg @ref LL_DMAMUX2_REQ_DAC3 (*)
  1324. * @arg @ref LL_DMAMUX2_REQ_DFSDM2_FLT0 (*)
  1325. * @note (*) Availability depends on devices.
  1326. */
  1327. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1328. {
  1329. UNUSED(BDMAx);
  1330. return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel)))))->CCR, DMAMUX_CxCR_DMAREQ_ID));
  1331. }
  1332. /**
  1333. * @}
  1334. */
  1335. /** @defgroup BDMA_LL_EF_FLAG_Management FLAG_Management
  1336. * @{
  1337. */
  1338. /**
  1339. * @brief Get Channel 0 global interrupt flag.
  1340. * @rmtoll ISR GIF0 LL_BDMA_IsActiveFlag_GI0
  1341. * @param BDMAx BDMA Instance
  1342. * @retval State of bit (1 or 0).
  1343. */
  1344. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI0(BDMA_TypeDef *BDMAx)
  1345. {
  1346. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF0) == (BDMA_ISR_GIF0)) ? 1UL : 0UL);
  1347. }
  1348. /**
  1349. * @brief Get Channel 1 global interrupt flag.
  1350. * @rmtoll ISR GIF1 LL_BDMA_IsActiveFlag_GI1
  1351. * @param BDMAx BDMA Instance
  1352. * @retval State of bit (1 or 0).
  1353. */
  1354. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI1(BDMA_TypeDef *BDMAx)
  1355. {
  1356. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF1) == (BDMA_ISR_GIF1)) ? 1UL : 0UL);
  1357. }
  1358. /**
  1359. * @brief Get Channel 2 global interrupt flag.
  1360. * @rmtoll ISR GIF2 LL_BDMA_IsActiveFlag_GI2
  1361. * @param BDMAx BDMA Instance
  1362. * @retval State of bit (1 or 0).
  1363. */
  1364. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI2(BDMA_TypeDef *BDMAx)
  1365. {
  1366. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF2) == (BDMA_ISR_GIF2)) ? 1UL : 0UL);
  1367. }
  1368. /**
  1369. * @brief Get Channel 3 global interrupt flag.
  1370. * @rmtoll ISR GIF3 LL_BDMA_IsActiveFlag_GI3
  1371. * @param BDMAx BDMA Instance
  1372. * @retval State of bit (1 or 0).
  1373. */
  1374. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI3(BDMA_TypeDef *BDMAx)
  1375. {
  1376. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF3) == (BDMA_ISR_GIF3)) ? 1UL : 0UL);
  1377. }
  1378. /**
  1379. * @brief Get Channel 4 global interrupt flag.
  1380. * @rmtoll ISR GIF4 LL_BDMA_IsActiveFlag_GI4
  1381. * @param BDMAx BDMA Instance
  1382. * @retval State of bit (1 or 0).
  1383. */
  1384. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI4(BDMA_TypeDef *BDMAx)
  1385. {
  1386. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF4) == (BDMA_ISR_GIF4)) ? 1UL : 0UL);
  1387. }
  1388. /**
  1389. * @brief Get Channel 5 global interrupt flag.
  1390. * @rmtoll ISR GIF5 LL_BDMA_IsActiveFlag_GI5
  1391. * @param BDMAx BDMA Instance
  1392. * @retval State of bit (1 or 0).
  1393. */
  1394. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI5(BDMA_TypeDef *BDMAx)
  1395. {
  1396. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF5) == (BDMA_ISR_GIF5)) ? 1UL : 0UL);
  1397. }
  1398. /**
  1399. * @brief Get Channel 6 global interrupt flag.
  1400. * @rmtoll ISR GIF6 LL_BDMA_IsActiveFlag_GI6
  1401. * @param BDMAx BDMA Instance
  1402. * @retval State of bit (1 or 0).
  1403. */
  1404. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI6(BDMA_TypeDef *BDMAx)
  1405. {
  1406. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF6) == (BDMA_ISR_GIF6)) ? 1UL : 0UL);
  1407. }
  1408. /**
  1409. * @brief Get Channel 7 global interrupt flag.
  1410. * @rmtoll ISR GIF7 LL_BDMA_IsActiveFlag_GI7
  1411. * @param BDMAx BDMA Instance
  1412. * @retval State of bit (1 or 0).
  1413. */
  1414. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI7(BDMA_TypeDef *BDMAx)
  1415. {
  1416. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF7) == (BDMA_ISR_GIF7)) ? 1UL : 0UL);
  1417. }
  1418. /**
  1419. * @brief Get Channel 0 transfer complete flag.
  1420. * @rmtoll ISR TCIF0 LL_BDMA_IsActiveFlag_TC0
  1421. * @param BDMAx BDMA Instance
  1422. * @retval State of bit (1 or 0).
  1423. */
  1424. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC0(BDMA_TypeDef *BDMAx)
  1425. {
  1426. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF0) == (BDMA_ISR_TCIF0)) ? 1UL : 0UL);
  1427. }
  1428. /**
  1429. * @brief Get Channel 1 transfer complete flag.
  1430. * @rmtoll ISR TCIF1 LL_BDMA_IsActiveFlag_TC1
  1431. * @param BDMAx BDMA Instance
  1432. * @retval State of bit (1 or 0).
  1433. */
  1434. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC1(BDMA_TypeDef *BDMAx)
  1435. {
  1436. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF1) == (BDMA_ISR_TCIF1)) ? 1UL : 0UL);
  1437. }
  1438. /**
  1439. * @brief Get Channel 2 transfer complete flag.
  1440. * @rmtoll ISR TCIF2 LL_BDMA_IsActiveFlag_TC2
  1441. * @param BDMAx BDMA Instance
  1442. * @retval State of bit (1 or 0).
  1443. */
  1444. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC2(BDMA_TypeDef *BDMAx)
  1445. {
  1446. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF2) == (BDMA_ISR_TCIF2)) ? 1UL : 0UL);
  1447. }
  1448. /**
  1449. * @brief Get Channel 3 transfer complete flag.
  1450. * @rmtoll ISR TCIF3 LL_BDMA_IsActiveFlag_TC3
  1451. * @param BDMAx BDMA Instance
  1452. * @retval State of bit (1 or 0).
  1453. */
  1454. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC3(BDMA_TypeDef *BDMAx)
  1455. {
  1456. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF3) == (BDMA_ISR_TCIF3)) ? 1UL : 0UL);
  1457. }
  1458. /**
  1459. * @brief Get Channel 4 transfer complete flag.
  1460. * @rmtoll ISR TCIF4 LL_BDMA_IsActiveFlag_TC4
  1461. * @param BDMAx BDMA Instance
  1462. * @retval State of bit (1 or 0).
  1463. */
  1464. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC4(BDMA_TypeDef *BDMAx)
  1465. {
  1466. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF4) == (BDMA_ISR_TCIF4)) ? 1UL : 0UL);
  1467. }
  1468. /**
  1469. * @brief Get Channel 5 transfer complete flag.
  1470. * @rmtoll ISR TCIF5 LL_BDMA_IsActiveFlag_TC5
  1471. * @param BDMAx BDMA Instance
  1472. * @retval State of bit (1 or 0).
  1473. */
  1474. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC5(BDMA_TypeDef *BDMAx)
  1475. {
  1476. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF5) == (BDMA_ISR_TCIF5)) ? 1UL : 0UL);
  1477. }
  1478. /**
  1479. * @brief Get Channel 6 transfer complete flag.
  1480. * @rmtoll ISR TCIF6 LL_BDMA_IsActiveFlag_TC6
  1481. * @param BDMAx BDMA Instance
  1482. * @retval State of bit (1 or 0).
  1483. */
  1484. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC6(BDMA_TypeDef *BDMAx)
  1485. {
  1486. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF6) == (BDMA_ISR_TCIF6)) ? 1UL : 0UL);
  1487. }
  1488. /**
  1489. * @brief Get Channel 7 transfer complete flag.
  1490. * @rmtoll ISR TCIF7 LL_BDMA_IsActiveFlag_TC7
  1491. * @param BDMAx BDMA Instance
  1492. * @retval State of bit (1 or 0).
  1493. */
  1494. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC7(BDMA_TypeDef *BDMAx)
  1495. {
  1496. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF7) == (BDMA_ISR_TCIF7)) ? 1UL : 0UL);
  1497. }
  1498. /**
  1499. * @brief Get Channel 0 half transfer flag.
  1500. * @rmtoll ISR HTIF0 LL_BDMA_IsActiveFlag_HT0
  1501. * @param BDMAx BDMA Instance
  1502. * @retval State of bit (1 or 0).
  1503. */
  1504. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT0(BDMA_TypeDef *BDMAx)
  1505. {
  1506. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF0) == (BDMA_ISR_HTIF0)) ? 1UL : 0UL);
  1507. }
  1508. /**
  1509. * @brief Get Channel 1 half transfer flag.
  1510. * @rmtoll ISR HTIF1 LL_BDMA_IsActiveFlag_HT1
  1511. * @param BDMAx BDMA Instance
  1512. * @retval State of bit (1 or 0).
  1513. */
  1514. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT1(BDMA_TypeDef *BDMAx)
  1515. {
  1516. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF1) == (BDMA_ISR_HTIF1)) ? 1UL : 0UL);
  1517. }
  1518. /**
  1519. * @brief Get Channel 2 half transfer flag.
  1520. * @rmtoll ISR HTIF2 LL_BDMA_IsActiveFlag_HT2
  1521. * @param BDMAx BDMA Instance
  1522. * @retval State of bit (1 or 0).
  1523. */
  1524. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT2(BDMA_TypeDef *BDMAx)
  1525. {
  1526. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF2) == (BDMA_ISR_HTIF2)) ? 1UL : 0UL);
  1527. }
  1528. /**
  1529. * @brief Get Channel 3 half transfer flag.
  1530. * @rmtoll ISR HTIF3 LL_BDMA_IsActiveFlag_HT3
  1531. * @param BDMAx BDMA Instance
  1532. * @retval State of bit (1 or 0).
  1533. */
  1534. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT3(BDMA_TypeDef *BDMAx)
  1535. {
  1536. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF3) == (BDMA_ISR_HTIF3)) ? 1UL : 0UL);
  1537. }
  1538. /**
  1539. * @brief Get Channel 4 half transfer flag.
  1540. * @rmtoll ISR HTIF4 LL_BDMA_IsActiveFlag_HT4
  1541. * @param BDMAx BDMA Instance
  1542. * @retval State of bit (1 or 0).
  1543. */
  1544. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT4(BDMA_TypeDef *BDMAx)
  1545. {
  1546. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF4) == (BDMA_ISR_HTIF4)) ? 1UL : 0UL);
  1547. }
  1548. /**
  1549. * @brief Get Channel 5 half transfer flag.
  1550. * @rmtoll ISR HTIF5 LL_BDMA_IsActiveFlag_HT5
  1551. * @param BDMAx BDMA Instance
  1552. * @retval State of bit (1 or 0).
  1553. */
  1554. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT5(BDMA_TypeDef *BDMAx)
  1555. {
  1556. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF5) == (BDMA_ISR_HTIF5)) ? 1UL : 0UL);
  1557. }
  1558. /**
  1559. * @brief Get Channel 6 half transfer flag.
  1560. * @rmtoll ISR HTIF6 LL_BDMA_IsActiveFlag_HT6
  1561. * @param BDMAx BDMA Instance
  1562. * @retval State of bit (1 or 0).
  1563. */
  1564. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT6(BDMA_TypeDef *BDMAx)
  1565. {
  1566. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF6) == (BDMA_ISR_HTIF6)) ? 1UL : 0UL);
  1567. }
  1568. /**
  1569. * @brief Get Channel 7 half transfer flag.
  1570. * @rmtoll ISR HTIF7 LL_BDMA_IsActiveFlag_HT7
  1571. * @param BDMAx BDMA Instance
  1572. * @retval State of bit (1 or 0).
  1573. */
  1574. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT7(BDMA_TypeDef *BDMAx)
  1575. {
  1576. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF7) == (BDMA_ISR_HTIF7)) ? 1UL : 0UL);
  1577. }
  1578. /**
  1579. * @brief Get Channel 0 transfer error flag.
  1580. * @rmtoll ISR TEIF0 LL_BDMA_IsActiveFlag_TE0
  1581. * @param BDMAx BDMA Instance
  1582. * @retval State of bit (1 or 0).
  1583. */
  1584. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE0(BDMA_TypeDef *BDMAx)
  1585. {
  1586. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF0) == (BDMA_ISR_TEIF0)) ? 1UL : 0UL);
  1587. }
  1588. /**
  1589. * @brief Get Channel 1 transfer error flag.
  1590. * @rmtoll ISR TEIF1 LL_BDMA_IsActiveFlag_TE1
  1591. * @param BDMAx BDMA Instance
  1592. * @retval State of bit (1 or 0).
  1593. */
  1594. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE1(BDMA_TypeDef *BDMAx)
  1595. {
  1596. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF1) == (BDMA_ISR_TEIF1)) ? 1UL : 0UL);
  1597. }
  1598. /**
  1599. * @brief Get Channel 2 transfer error flag.
  1600. * @rmtoll ISR TEIF2 LL_BDMA_IsActiveFlag_TE2
  1601. * @param BDMAx BDMA Instance
  1602. * @retval State of bit (1 or 0).
  1603. */
  1604. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE2(BDMA_TypeDef *BDMAx)
  1605. {
  1606. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF2) == (BDMA_ISR_TEIF2)) ? 1UL : 0UL);
  1607. }
  1608. /**
  1609. * @brief Get Channel 3 transfer error flag.
  1610. * @rmtoll ISR TEIF3 LL_BDMA_IsActiveFlag_TE3
  1611. * @param BDMAx BDMA Instance
  1612. * @retval State of bit (1 or 0).
  1613. */
  1614. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE3(BDMA_TypeDef *BDMAx)
  1615. {
  1616. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF3) == (BDMA_ISR_TEIF3)) ? 1UL : 0UL);
  1617. }
  1618. /**
  1619. * @brief Get Channel 4 transfer error flag.
  1620. * @rmtoll ISR TEIF4 LL_BDMA_IsActiveFlag_TE4
  1621. * @param BDMAx BDMA Instance
  1622. * @retval State of bit (1 or 0).
  1623. */
  1624. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE4(BDMA_TypeDef *BDMAx)
  1625. {
  1626. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF4) == (BDMA_ISR_TEIF4)) ? 1UL : 0UL);
  1627. }
  1628. /**
  1629. * @brief Get Channel 5 transfer error flag.
  1630. * @rmtoll ISR TEIF5 LL_BDMA_IsActiveFlag_TE5
  1631. * @param BDMAx BDMA Instance
  1632. * @retval State of bit (1 or 0).
  1633. */
  1634. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE5(BDMA_TypeDef *BDMAx)
  1635. {
  1636. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF5) == (BDMA_ISR_TEIF5)) ? 1UL : 0UL);
  1637. }
  1638. /**
  1639. * @brief Get Channel 6 transfer error flag.
  1640. * @rmtoll ISR TEIF6 LL_BDMA_IsActiveFlag_TE6
  1641. * @param BDMAx BDMA Instance
  1642. * @retval State of bit (1 or 0).
  1643. */
  1644. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE6(BDMA_TypeDef *BDMAx)
  1645. {
  1646. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF6) == (BDMA_ISR_TEIF6)) ? 1UL : 0UL);
  1647. }
  1648. /**
  1649. * @brief Get Channel 7 transfer error flag.
  1650. * @rmtoll ISR TEIF7 LL_BDMA_IsActiveFlag_TE7
  1651. * @param BDMAx BDMA Instance
  1652. * @retval State of bit (1 or 0).
  1653. */
  1654. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE7(BDMA_TypeDef *BDMAx)
  1655. {
  1656. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF7) == (BDMA_ISR_TEIF7)) ? 1UL : 0UL);
  1657. }
  1658. /**
  1659. * @brief Clear Channel 0 global interrupt flag.
  1660. * @rmtoll IFCR CGIF0 LL_BDMA_ClearFlag_GI0
  1661. * @param BDMAx BDMA Instance
  1662. * @retval None
  1663. */
  1664. __STATIC_INLINE void LL_BDMA_ClearFlag_GI0(BDMA_TypeDef *BDMAx)
  1665. {
  1666. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF0);
  1667. }
  1668. /**
  1669. * @brief Clear Channel 1 global interrupt flag.
  1670. * @rmtoll IFCR CGIF1 LL_BDMA_ClearFlag_GI1
  1671. * @param BDMAx BDMA Instance
  1672. * @retval None
  1673. */
  1674. __STATIC_INLINE void LL_BDMA_ClearFlag_GI1(BDMA_TypeDef *BDMAx)
  1675. {
  1676. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF1);
  1677. }
  1678. /**
  1679. * @brief Clear Channel 2 global interrupt flag.
  1680. * @rmtoll IFCR CGIF2 LL_BDMA_ClearFlag_GI2
  1681. * @param BDMAx BDMA Instance
  1682. * @retval None
  1683. */
  1684. __STATIC_INLINE void LL_BDMA_ClearFlag_GI2(BDMA_TypeDef *BDMAx)
  1685. {
  1686. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF2);
  1687. }
  1688. /**
  1689. * @brief Clear Channel 3 global interrupt flag.
  1690. * @rmtoll IFCR CGIF3 LL_BDMA_ClearFlag_GI3
  1691. * @param BDMAx BDMA Instance
  1692. * @retval None
  1693. */
  1694. __STATIC_INLINE void LL_BDMA_ClearFlag_GI3(BDMA_TypeDef *BDMAx)
  1695. {
  1696. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF3);
  1697. }
  1698. /**
  1699. * @brief Clear Channel 4 global interrupt flag.
  1700. * @rmtoll IFCR CGIF4 LL_BDMA_ClearFlag_GI4
  1701. * @param BDMAx BDMA Instance
  1702. * @retval None
  1703. */
  1704. __STATIC_INLINE void LL_BDMA_ClearFlag_GI4(BDMA_TypeDef *BDMAx)
  1705. {
  1706. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF4);
  1707. }
  1708. /**
  1709. * @brief Clear Channel 5 global interrupt flag.
  1710. * @rmtoll IFCR CGIF5 LL_BDMA_ClearFlag_GI5
  1711. * @param BDMAx BDMA Instance
  1712. * @retval None
  1713. */
  1714. __STATIC_INLINE void LL_BDMA_ClearFlag_GI5(BDMA_TypeDef *BDMAx)
  1715. {
  1716. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF5);
  1717. }
  1718. /**
  1719. * @brief Clear Channel 6 global interrupt flag.
  1720. * @rmtoll IFCR CGIF6 LL_BDMA_ClearFlag_GI6
  1721. * @param BDMAx BDMA Instance
  1722. * @retval None
  1723. */
  1724. __STATIC_INLINE void LL_BDMA_ClearFlag_GI6(BDMA_TypeDef *BDMAx)
  1725. {
  1726. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF6);
  1727. }
  1728. /**
  1729. * @brief Clear Channel 7 global interrupt flag.
  1730. * @rmtoll IFCR CGIF7 LL_BDMA_ClearFlag_GI7
  1731. * @param BDMAx BDMA Instance
  1732. * @retval None
  1733. */
  1734. __STATIC_INLINE void LL_BDMA_ClearFlag_GI7(BDMA_TypeDef *BDMAx)
  1735. {
  1736. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF7);
  1737. }
  1738. /**
  1739. * @brief Clear Channel 0 transfer complete flag.
  1740. * @rmtoll IFCR CTCIF0 LL_BDMA_ClearFlag_TC0
  1741. * @param BDMAx BDMA Instance
  1742. * @retval None
  1743. */
  1744. __STATIC_INLINE void LL_BDMA_ClearFlag_TC0(BDMA_TypeDef *BDMAx)
  1745. {
  1746. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF0);
  1747. }
  1748. /**
  1749. * @brief Clear Channel 1 transfer complete flag.
  1750. * @rmtoll IFCR CTCIF1 LL_BDMA_ClearFlag_TC1
  1751. * @param BDMAx BDMA Instance
  1752. * @retval None
  1753. */
  1754. __STATIC_INLINE void LL_BDMA_ClearFlag_TC1(BDMA_TypeDef *BDMAx)
  1755. {
  1756. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF1);
  1757. }
  1758. /**
  1759. * @brief Clear Channel 2 transfer complete flag.
  1760. * @rmtoll IFCR CTCIF2 LL_BDMA_ClearFlag_TC2
  1761. * @param BDMAx BDMA Instance
  1762. * @retval None
  1763. */
  1764. __STATIC_INLINE void LL_BDMA_ClearFlag_TC2(BDMA_TypeDef *BDMAx)
  1765. {
  1766. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF2);
  1767. }
  1768. /**
  1769. * @brief Clear Channel 3 transfer complete flag.
  1770. * @rmtoll IFCR CTCIF3 LL_BDMA_ClearFlag_TC3
  1771. * @param BDMAx BDMA Instance
  1772. * @retval None
  1773. */
  1774. __STATIC_INLINE void LL_BDMA_ClearFlag_TC3(BDMA_TypeDef *BDMAx)
  1775. {
  1776. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF3);
  1777. }
  1778. /**
  1779. * @brief Clear Channel 4 transfer complete flag.
  1780. * @rmtoll IFCR CTCIF4 LL_BDMA_ClearFlag_TC4
  1781. * @param BDMAx BDMA Instance
  1782. * @retval None
  1783. */
  1784. __STATIC_INLINE void LL_BDMA_ClearFlag_TC4(BDMA_TypeDef *BDMAx)
  1785. {
  1786. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF4);
  1787. }
  1788. /**
  1789. * @brief Clear Channel 5 transfer complete flag.
  1790. * @rmtoll IFCR CTCIF5 LL_BDMA_ClearFlag_TC5
  1791. * @param BDMAx BDMA Instance
  1792. * @retval None
  1793. */
  1794. __STATIC_INLINE void LL_BDMA_ClearFlag_TC5(BDMA_TypeDef *BDMAx)
  1795. {
  1796. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF5);
  1797. }
  1798. /**
  1799. * @brief Clear Channel 6 transfer complete flag.
  1800. * @rmtoll IFCR CTCIF6 LL_BDMA_ClearFlag_TC6
  1801. * @param BDMAx BDMA Instance
  1802. * @retval None
  1803. */
  1804. __STATIC_INLINE void LL_BDMA_ClearFlag_TC6(BDMA_TypeDef *BDMAx)
  1805. {
  1806. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF6);
  1807. }
  1808. /**
  1809. * @brief Clear Channel 7 transfer complete flag.
  1810. * @rmtoll IFCR CTCIF7 LL_BDMA_ClearFlag_TC7
  1811. * @param BDMAx BDMA Instance
  1812. * @retval None
  1813. */
  1814. __STATIC_INLINE void LL_BDMA_ClearFlag_TC7(BDMA_TypeDef *BDMAx)
  1815. {
  1816. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF7);
  1817. }
  1818. /**
  1819. * @brief Clear Channel 0 half transfer flag.
  1820. * @rmtoll IFCR CHTIF0 LL_BDMA_ClearFlag_HT0
  1821. * @param BDMAx BDMA Instance
  1822. * @retval None
  1823. */
  1824. __STATIC_INLINE void LL_BDMA_ClearFlag_HT0(BDMA_TypeDef *BDMAx)
  1825. {
  1826. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF0);
  1827. }
  1828. /**
  1829. * @brief Clear Channel 1 half transfer flag.
  1830. * @rmtoll IFCR CHTIF1 LL_BDMA_ClearFlag_HT1
  1831. * @param BDMAx BDMA Instance
  1832. * @retval None
  1833. */
  1834. __STATIC_INLINE void LL_BDMA_ClearFlag_HT1(BDMA_TypeDef *BDMAx)
  1835. {
  1836. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF1);
  1837. }
  1838. /**
  1839. * @brief Clear Channel 2 half transfer flag.
  1840. * @rmtoll IFCR CHTIF2 LL_BDMA_ClearFlag_HT2
  1841. * @param BDMAx BDMA Instance
  1842. * @retval None
  1843. */
  1844. __STATIC_INLINE void LL_BDMA_ClearFlag_HT2(BDMA_TypeDef *BDMAx)
  1845. {
  1846. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF2);
  1847. }
  1848. /**
  1849. * @brief Clear Channel 3 half transfer flag.
  1850. * @rmtoll IFCR CHTIF3 LL_BDMA_ClearFlag_HT3
  1851. * @param BDMAx BDMA Instance
  1852. * @retval None
  1853. */
  1854. __STATIC_INLINE void LL_BDMA_ClearFlag_HT3(BDMA_TypeDef *BDMAx)
  1855. {
  1856. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF3);
  1857. }
  1858. /**
  1859. * @brief Clear Channel 4 half transfer flag.
  1860. * @rmtoll IFCR CHTIF4 LL_BDMA_ClearFlag_HT4
  1861. * @param BDMAx BDMA Instance
  1862. * @retval None
  1863. */
  1864. __STATIC_INLINE void LL_BDMA_ClearFlag_HT4(BDMA_TypeDef *BDMAx)
  1865. {
  1866. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF4);
  1867. }
  1868. /**
  1869. * @brief Clear Channel 5 half transfer flag.
  1870. * @rmtoll IFCR CHTIF5 LL_BDMA_ClearFlag_HT5
  1871. * @param BDMAx BDMA Instance
  1872. * @retval None
  1873. */
  1874. __STATIC_INLINE void LL_BDMA_ClearFlag_HT5(BDMA_TypeDef *BDMAx)
  1875. {
  1876. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF5);
  1877. }
  1878. /**
  1879. * @brief Clear Channel 6 half transfer flag.
  1880. * @rmtoll IFCR CHTIF6 LL_BDMA_ClearFlag_HT6
  1881. * @param BDMAx BDMA Instance
  1882. * @retval None
  1883. */
  1884. __STATIC_INLINE void LL_BDMA_ClearFlag_HT6(BDMA_TypeDef *BDMAx)
  1885. {
  1886. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF6);
  1887. }
  1888. /**
  1889. * @brief Clear Channel 7 half transfer flag.
  1890. * @rmtoll IFCR CHTIF7 LL_BDMA_ClearFlag_HT7
  1891. * @param BDMAx BDMA Instance
  1892. * @retval None
  1893. */
  1894. __STATIC_INLINE void LL_BDMA_ClearFlag_HT7(BDMA_TypeDef *BDMAx)
  1895. {
  1896. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF7);
  1897. }
  1898. /**
  1899. * @brief Clear Channel 0 transfer error flag.
  1900. * @rmtoll IFCR CTEIF0 LL_BDMA_ClearFlag_TE0
  1901. * @param BDMAx BDMA Instance
  1902. * @retval None
  1903. */
  1904. __STATIC_INLINE void LL_BDMA_ClearFlag_TE0(BDMA_TypeDef *BDMAx)
  1905. {
  1906. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF0);
  1907. }
  1908. /**
  1909. * @brief Clear Channel 1 transfer error flag.
  1910. * @rmtoll IFCR CTEIF1 LL_BDMA_ClearFlag_TE1
  1911. * @param BDMAx BDMA Instance
  1912. * @retval None
  1913. */
  1914. __STATIC_INLINE void LL_BDMA_ClearFlag_TE1(BDMA_TypeDef *BDMAx)
  1915. {
  1916. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF1);
  1917. }
  1918. /**
  1919. * @brief Clear Channel 2 transfer error flag.
  1920. * @rmtoll IFCR CTEIF2 LL_BDMA_ClearFlag_TE2
  1921. * @param BDMAx BDMA Instance
  1922. * @retval None
  1923. */
  1924. __STATIC_INLINE void LL_BDMA_ClearFlag_TE2(BDMA_TypeDef *BDMAx)
  1925. {
  1926. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF2);
  1927. }
  1928. /**
  1929. * @brief Clear Channel 3 transfer error flag.
  1930. * @rmtoll IFCR CTEIF3 LL_BDMA_ClearFlag_TE3
  1931. * @param BDMAx BDMA Instance
  1932. * @retval None
  1933. */
  1934. __STATIC_INLINE void LL_BDMA_ClearFlag_TE3(BDMA_TypeDef *BDMAx)
  1935. {
  1936. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF3);
  1937. }
  1938. /**
  1939. * @brief Clear Channel 4 transfer error flag.
  1940. * @rmtoll IFCR CTEIF4 LL_BDMA_ClearFlag_TE4
  1941. * @param BDMAx BDMA Instance
  1942. * @retval None
  1943. */
  1944. __STATIC_INLINE void LL_BDMA_ClearFlag_TE4(BDMA_TypeDef *BDMAx)
  1945. {
  1946. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF4);
  1947. }
  1948. /**
  1949. * @brief Clear Channel 5 transfer error flag.
  1950. * @rmtoll IFCR CTEIF5 LL_BDMA_ClearFlag_TE5
  1951. * @param BDMAx BDMA Instance
  1952. * @retval None
  1953. */
  1954. __STATIC_INLINE void LL_BDMA_ClearFlag_TE5(BDMA_TypeDef *BDMAx)
  1955. {
  1956. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF5);
  1957. }
  1958. /**
  1959. * @brief Clear Channel 6 transfer error flag.
  1960. * @rmtoll IFCR CTEIF6 LL_BDMA_ClearFlag_TE6
  1961. * @param BDMAx BDMA Instance
  1962. * @retval None
  1963. */
  1964. __STATIC_INLINE void LL_BDMA_ClearFlag_TE6(BDMA_TypeDef *BDMAx)
  1965. {
  1966. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF6);
  1967. }
  1968. /**
  1969. * @brief Clear Channel 7 transfer error flag.
  1970. * @rmtoll IFCR CTEIF7 LL_BDMA_ClearFlag_TE7
  1971. * @param BDMAx BDMA Instance
  1972. * @retval None
  1973. */
  1974. __STATIC_INLINE void LL_BDMA_ClearFlag_TE7(BDMA_TypeDef *BDMAx)
  1975. {
  1976. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF7);
  1977. }
  1978. /**
  1979. * @}
  1980. */
  1981. /** @defgroup BDMA_LL_EF_IT_Management IT_Management
  1982. * @{
  1983. */
  1984. /**
  1985. * @brief Enable Transfer complete interrupt.
  1986. * @rmtoll CCR TCIE LL_BDMA_EnableIT_TC
  1987. * @param BDMAx BDMA Instance
  1988. * @param Channel This parameter can be one of the following values:
  1989. * @arg @ref LL_BDMA_CHANNEL_0
  1990. * @arg @ref LL_BDMA_CHANNEL_1
  1991. * @arg @ref LL_BDMA_CHANNEL_2
  1992. * @arg @ref LL_BDMA_CHANNEL_3
  1993. * @arg @ref LL_BDMA_CHANNEL_4
  1994. * @arg @ref LL_BDMA_CHANNEL_5
  1995. * @arg @ref LL_BDMA_CHANNEL_6
  1996. * @arg @ref LL_BDMA_CHANNEL_7
  1997. * @retval None
  1998. */
  1999. __STATIC_INLINE void LL_BDMA_EnableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2000. {
  2001. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2002. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE);
  2003. }
  2004. /**
  2005. * @brief Enable Half transfer interrupt.
  2006. * @rmtoll CCR HTIE LL_BDMA_EnableIT_HT
  2007. * @param BDMAx BDMA Instance
  2008. * @param Channel This parameter can be one of the following values:
  2009. * @arg @ref LL_BDMA_CHANNEL_0
  2010. * @arg @ref LL_BDMA_CHANNEL_1
  2011. * @arg @ref LL_BDMA_CHANNEL_2
  2012. * @arg @ref LL_BDMA_CHANNEL_3
  2013. * @arg @ref LL_BDMA_CHANNEL_4
  2014. * @arg @ref LL_BDMA_CHANNEL_5
  2015. * @arg @ref LL_BDMA_CHANNEL_6
  2016. * @arg @ref LL_BDMA_CHANNEL_7
  2017. * @retval None
  2018. */
  2019. __STATIC_INLINE void LL_BDMA_EnableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2020. {
  2021. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2022. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE);
  2023. }
  2024. /**
  2025. * @brief Enable Transfer error interrupt.
  2026. * @rmtoll CCR TEIE LL_BDMA_EnableIT_TE
  2027. * @param BDMAx BDMA Instance
  2028. * @param Channel This parameter can be one of the following values:
  2029. * @arg @ref LL_BDMA_CHANNEL_0
  2030. * @arg @ref LL_BDMA_CHANNEL_1
  2031. * @arg @ref LL_BDMA_CHANNEL_2
  2032. * @arg @ref LL_BDMA_CHANNEL_3
  2033. * @arg @ref LL_BDMA_CHANNEL_4
  2034. * @arg @ref LL_BDMA_CHANNEL_5
  2035. * @arg @ref LL_BDMA_CHANNEL_6
  2036. * @arg @ref LL_BDMA_CHANNEL_7
  2037. * @retval None
  2038. */
  2039. __STATIC_INLINE void LL_BDMA_EnableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2040. {
  2041. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2042. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE);
  2043. }
  2044. /**
  2045. * @brief Disable Transfer complete interrupt.
  2046. * @rmtoll CCR TCIE LL_BDMA_DisableIT_TC
  2047. * @param BDMAx BDMA Instance
  2048. * @param Channel This parameter can be one of the following values:
  2049. * @arg @ref LL_BDMA_CHANNEL_0
  2050. * @arg @ref LL_BDMA_CHANNEL_1
  2051. * @arg @ref LL_BDMA_CHANNEL_2
  2052. * @arg @ref LL_BDMA_CHANNEL_3
  2053. * @arg @ref LL_BDMA_CHANNEL_4
  2054. * @arg @ref LL_BDMA_CHANNEL_5
  2055. * @arg @ref LL_BDMA_CHANNEL_6
  2056. * @arg @ref LL_BDMA_CHANNEL_7
  2057. * @retval None
  2058. */
  2059. __STATIC_INLINE void LL_BDMA_DisableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2060. {
  2061. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2062. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE);
  2063. }
  2064. /**
  2065. * @brief Disable Half transfer interrupt.
  2066. * @rmtoll CCR HTIE LL_BDMA_DisableIT_HT
  2067. * @param BDMAx BDMA Instance
  2068. * @param Channel This parameter can be one of the following values:
  2069. * @arg @ref LL_BDMA_CHANNEL_0
  2070. * @arg @ref LL_BDMA_CHANNEL_1
  2071. * @arg @ref LL_BDMA_CHANNEL_2
  2072. * @arg @ref LL_BDMA_CHANNEL_3
  2073. * @arg @ref LL_BDMA_CHANNEL_4
  2074. * @arg @ref LL_BDMA_CHANNEL_5
  2075. * @arg @ref LL_BDMA_CHANNEL_6
  2076. * @arg @ref LL_BDMA_CHANNEL_7
  2077. * @retval None
  2078. */
  2079. __STATIC_INLINE void LL_BDMA_DisableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2080. {
  2081. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2082. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE);
  2083. }
  2084. /**
  2085. * @brief Disable Transfer error interrupt.
  2086. * @rmtoll CCR TEIE LL_BDMA_DisableIT_TE
  2087. * @param BDMAx BDMA Instance
  2088. * @param Channel This parameter can be one of the following values:
  2089. * @arg @ref LL_BDMA_CHANNEL_0
  2090. * @arg @ref LL_BDMA_CHANNEL_1
  2091. * @arg @ref LL_BDMA_CHANNEL_2
  2092. * @arg @ref LL_BDMA_CHANNEL_3
  2093. * @arg @ref LL_BDMA_CHANNEL_4
  2094. * @arg @ref LL_BDMA_CHANNEL_5
  2095. * @arg @ref LL_BDMA_CHANNEL_6
  2096. * @arg @ref LL_BDMA_CHANNEL_7
  2097. * @retval None
  2098. */
  2099. __STATIC_INLINE void LL_BDMA_DisableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2100. {
  2101. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2102. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE);
  2103. }
  2104. /**
  2105. * @brief Check if Transfer complete Interrupt is enabled.
  2106. * @rmtoll CCR TCIE LL_BDMA_IsEnabledIT_TC
  2107. * @param BDMAx BDMA Instance
  2108. * @param Channel This parameter can be one of the following values:
  2109. * @arg @ref LL_BDMA_CHANNEL_0
  2110. * @arg @ref LL_BDMA_CHANNEL_1
  2111. * @arg @ref LL_BDMA_CHANNEL_2
  2112. * @arg @ref LL_BDMA_CHANNEL_3
  2113. * @arg @ref LL_BDMA_CHANNEL_4
  2114. * @arg @ref LL_BDMA_CHANNEL_5
  2115. * @arg @ref LL_BDMA_CHANNEL_6
  2116. * @arg @ref LL_BDMA_CHANNEL_7
  2117. * @retval State of bit (1 or 0).
  2118. */
  2119. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2120. {
  2121. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2122. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE) == (BDMA_CCR_TCIE)) ? 1UL : 0UL);
  2123. }
  2124. /**
  2125. * @brief Check if Half transfer Interrupt is enabled.
  2126. * @rmtoll CCR HTIE LL_BDMA_IsEnabledIT_HT
  2127. * @param BDMAx BDMA Instance
  2128. * @param Channel This parameter can be one of the following values:
  2129. * @arg @ref LL_BDMA_CHANNEL_0
  2130. * @arg @ref LL_BDMA_CHANNEL_1
  2131. * @arg @ref LL_BDMA_CHANNEL_2
  2132. * @arg @ref LL_BDMA_CHANNEL_3
  2133. * @arg @ref LL_BDMA_CHANNEL_4
  2134. * @arg @ref LL_BDMA_CHANNEL_5
  2135. * @arg @ref LL_BDMA_CHANNEL_6
  2136. * @arg @ref LL_BDMA_CHANNEL_7
  2137. * @retval State of bit (1 or 0).
  2138. */
  2139. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2140. {
  2141. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2142. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE) == (BDMA_CCR_HTIE)) ? 1UL : 0UL);
  2143. }
  2144. /**
  2145. * @brief Check if Transfer error Interrupt is enabled.
  2146. * @rmtoll CCR TEIE LL_BDMA_IsEnabledIT_TE
  2147. * @param BDMAx BDMA Instance
  2148. * @param Channel This parameter can be one of the following values:
  2149. * @arg @ref LL_BDMA_CHANNEL_0
  2150. * @arg @ref LL_BDMA_CHANNEL_1
  2151. * @arg @ref LL_BDMA_CHANNEL_2
  2152. * @arg @ref LL_BDMA_CHANNEL_3
  2153. * @arg @ref LL_BDMA_CHANNEL_4
  2154. * @arg @ref LL_BDMA_CHANNEL_5
  2155. * @arg @ref LL_BDMA_CHANNEL_6
  2156. * @arg @ref LL_BDMA_CHANNEL_7
  2157. * @retval State of bit (1 or 0).
  2158. */
  2159. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2160. {
  2161. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2162. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE) == (BDMA_CCR_TEIE)) ? 1UL : 0UL);
  2163. }
  2164. /**
  2165. * @}
  2166. */
  2167. #if defined(USE_FULL_LL_DRIVER)
  2168. /** @defgroup BDMA_LL_EF_Init Initialization and de-initialization functions
  2169. * @{
  2170. */
  2171. uint32_t LL_BDMA_Init(BDMA_TypeDef *BDMAx, uint32_t Channel, LL_BDMA_InitTypeDef *BDMA_InitStruct);
  2172. uint32_t LL_BDMA_DeInit(BDMA_TypeDef *BDMAx, uint32_t Channel);
  2173. void LL_BDMA_StructInit(LL_BDMA_InitTypeDef *BDMA_InitStruct);
  2174. /**
  2175. * @}
  2176. */
  2177. #endif /* USE_FULL_LL_DRIVER */
  2178. /**
  2179. * @}
  2180. */
  2181. /**
  2182. * @}
  2183. */
  2184. #endif /* BDMA || BDMA1 || BDMA2 */
  2185. /**
  2186. * @}
  2187. */
  2188. /**
  2189. * @}
  2190. */
  2191. #ifdef __cplusplus
  2192. }
  2193. #endif
  2194. #endif /* STM32H7xx_LL_BDMA_H */
  2195. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/