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.
 
 
 

2363 lines
89 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)
  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. #define __LL_BDMA_GET_INSTANCE(__CHANNEL_INSTANCE__) (BDMA)
  330. /**
  331. * @brief Convert BDMAx_Channely into LL_BDMA_CHANNEL_y
  332. * @param __CHANNEL_INSTANCE__ BDMAx_Channely
  333. * @retval LL_BDMA_CHANNEL_y
  334. */
  335. #define __LL_BDMA_GET_CHANNEL(__CHANNEL_INSTANCE__) \
  336. (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel0)) ? LL_BDMA_CHANNEL_0 : \
  337. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel1)) ? LL_BDMA_CHANNEL_1 : \
  338. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel2)) ? LL_BDMA_CHANNEL_2 : \
  339. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel3)) ? LL_BDMA_CHANNEL_3 : \
  340. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel4)) ? LL_BDMA_CHANNEL_4 : \
  341. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel5)) ? LL_BDMA_CHANNEL_5 : \
  342. ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)BDMA_Channel6)) ? LL_BDMA_CHANNEL_6 : \
  343. LL_BDMA_CHANNEL_7)
  344. /**
  345. * @brief Convert BDMA Instance BDMAx and LL_BDMA_CHANNEL_y into BDMAx_Channely
  346. * @param __BDMA_INSTANCE__ BDMAx
  347. * @param __CHANNEL__ LL_BDMA_CHANNEL_y
  348. * @retval BDMAx_Channely
  349. */
  350. #define __LL_BDMA_GET_CHANNEL_INSTANCE(__BDMA_INSTANCE__, __CHANNEL__) \
  351. ((((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_0))) ? BDMA_Channel0 : \
  352. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_1))) ? BDMA_Channel1 : \
  353. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_2))) ? BDMA_Channel2 : \
  354. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_3))) ? BDMA_Channel3 : \
  355. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_4))) ? BDMA_Channel4 : \
  356. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_5))) ? BDMA_Channel5 : \
  357. (((uint32_t)(__BDMA_INSTANCE__) == ((uint32_t)BDMA)) && ((uint32_t)(__CHANNEL__) == ((uint32_t)LL_BDMA_CHANNEL_6))) ? BDMA_Channel6 : \
  358. BDMA_Channel7)
  359. /**
  360. * @}
  361. */
  362. /**
  363. * @}
  364. */
  365. /* Exported functions --------------------------------------------------------*/
  366. /** @defgroup BDMA_LL_Exported_Functions BDMA Exported Functions
  367. * @{
  368. */
  369. /** @defgroup BDMA_LL_EF_Configuration Configuration
  370. * @{
  371. */
  372. /**
  373. * @brief Enable BDMA channel.
  374. * @rmtoll CCR EN LL_BDMA_EnableChannel
  375. * @param BDMAx BDMA Instance
  376. * @param Channel This parameter can be one of the following values:
  377. * @arg @ref LL_BDMA_CHANNEL_0
  378. * @arg @ref LL_BDMA_CHANNEL_1
  379. * @arg @ref LL_BDMA_CHANNEL_2
  380. * @arg @ref LL_BDMA_CHANNEL_3
  381. * @arg @ref LL_BDMA_CHANNEL_4
  382. * @arg @ref LL_BDMA_CHANNEL_5
  383. * @arg @ref LL_BDMA_CHANNEL_6
  384. * @arg @ref LL_BDMA_CHANNEL_7
  385. * @retval None
  386. */
  387. __STATIC_INLINE void LL_BDMA_EnableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  388. {
  389. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  390. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN);
  391. }
  392. /**
  393. * @brief Disable BDMA channel.
  394. * @rmtoll CCR EN LL_BDMA_DisableChannel
  395. * @param BDMAx BDMA Instance
  396. * @param Channel This parameter can be one of the following values:
  397. * @arg @ref LL_BDMA_CHANNEL_0
  398. * @arg @ref LL_BDMA_CHANNEL_1
  399. * @arg @ref LL_BDMA_CHANNEL_2
  400. * @arg @ref LL_BDMA_CHANNEL_3
  401. * @arg @ref LL_BDMA_CHANNEL_4
  402. * @arg @ref LL_BDMA_CHANNEL_5
  403. * @arg @ref LL_BDMA_CHANNEL_6
  404. * @arg @ref LL_BDMA_CHANNEL_7
  405. * @retval None
  406. */
  407. __STATIC_INLINE void LL_BDMA_DisableChannel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  408. {
  409. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  410. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN);
  411. }
  412. /**
  413. * @brief Check if BDMA channel is enabled or disabled.
  414. * @rmtoll CCR EN LL_BDMA_IsEnabledChannel
  415. * @param BDMAx BDMA Instance
  416. * @param Channel This parameter can be one of the following values:
  417. * @arg @ref LL_BDMA_CHANNEL_0
  418. * @arg @ref LL_BDMA_CHANNEL_1
  419. * @arg @ref LL_BDMA_CHANNEL_2
  420. * @arg @ref LL_BDMA_CHANNEL_3
  421. * @arg @ref LL_BDMA_CHANNEL_4
  422. * @arg @ref LL_BDMA_CHANNEL_5
  423. * @arg @ref LL_BDMA_CHANNEL_6
  424. * @arg @ref LL_BDMA_CHANNEL_7
  425. * @retval State of bit (1 or 0).
  426. */
  427. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledChannel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  428. {
  429. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  430. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_EN) == (BDMA_CCR_EN)) ? 1UL : 0UL);
  431. }
  432. /**
  433. * @brief Configure all parameters link to BDMA transfer.
  434. * @rmtoll CCR DIR LL_BDMA_ConfigTransfer\n
  435. * CCR MEM2MEM LL_BDMA_ConfigTransfer\n
  436. * CCR CIRC LL_BDMA_ConfigTransfer\n
  437. * CCR PINC LL_BDMA_ConfigTransfer\n
  438. * CCR MINC LL_BDMA_ConfigTransfer\n
  439. * CCR PSIZE LL_BDMA_ConfigTransfer\n
  440. * CCR MSIZE LL_BDMA_ConfigTransfer\n
  441. * CCR PL LL_BDMA_ConfigTransfer
  442. * @param BDMAx BDMA Instance
  443. * @param Channel This parameter can be one of the following values:
  444. * @arg @ref LL_BDMA_CHANNEL_0
  445. * @arg @ref LL_BDMA_CHANNEL_1
  446. * @arg @ref LL_BDMA_CHANNEL_2
  447. * @arg @ref LL_BDMA_CHANNEL_3
  448. * @arg @ref LL_BDMA_CHANNEL_4
  449. * @arg @ref LL_BDMA_CHANNEL_5
  450. * @arg @ref LL_BDMA_CHANNEL_6
  451. * @arg @ref LL_BDMA_CHANNEL_7
  452. * @param Configuration This parameter must be a combination of all the following values:
  453. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  454. * @arg @ref LL_BDMA_MODE_NORMAL or @ref LL_BDMA_MODE_CIRCULAR
  455. * @arg @ref LL_BDMA_PERIPH_INCREMENT or @ref LL_BDMA_PERIPH_NOINCREMENT
  456. * @arg @ref LL_BDMA_MEMORY_INCREMENT or @ref LL_BDMA_MEMORY_NOINCREMENT
  457. * @arg @ref LL_BDMA_PDATAALIGN_BYTE or @ref LL_BDMA_PDATAALIGN_HALFWORD or @ref LL_BDMA_PDATAALIGN_WORD
  458. * @arg @ref LL_BDMA_MDATAALIGN_BYTE or @ref LL_BDMA_MDATAALIGN_HALFWORD or @ref LL_BDMA_MDATAALIGN_WORD
  459. * @arg @ref LL_BDMA_PRIORITY_LOW or @ref LL_BDMA_PRIORITY_MEDIUM or @ref LL_BDMA_PRIORITY_HIGH or @ref LL_BDMA_PRIORITY_VERYHIGH
  460. * @retval None
  461. */
  462. __STATIC_INLINE void LL_BDMA_ConfigTransfer(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Configuration)
  463. {
  464. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  465. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  466. BDMA_CCR_DIR | BDMA_CCR_MEM2MEM | BDMA_CCR_CIRC | BDMA_CCR_PINC | BDMA_CCR_MINC | BDMA_CCR_PSIZE | BDMA_CCR_MSIZE | BDMA_CCR_PL,
  467. Configuration);
  468. }
  469. /**
  470. * @brief Set Data transfer direction (read from peripheral or from memory).
  471. * @rmtoll CCR DIR LL_BDMA_SetDataTransferDirection\n
  472. * CCR MEM2MEM LL_BDMA_SetDataTransferDirection
  473. * @param BDMAx BDMA Instance
  474. * @param Channel This parameter can be one of the following values:
  475. * @arg @ref LL_BDMA_CHANNEL_0
  476. * @arg @ref LL_BDMA_CHANNEL_1
  477. * @arg @ref LL_BDMA_CHANNEL_2
  478. * @arg @ref LL_BDMA_CHANNEL_3
  479. * @arg @ref LL_BDMA_CHANNEL_4
  480. * @arg @ref LL_BDMA_CHANNEL_5
  481. * @arg @ref LL_BDMA_CHANNEL_6
  482. * @arg @ref LL_BDMA_CHANNEL_7
  483. * @param Direction This parameter can be one of the following values:
  484. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
  485. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
  486. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  487. * @retval None
  488. */
  489. __STATIC_INLINE void LL_BDMA_SetDataTransferDirection(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Direction)
  490. {
  491. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  492. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  493. BDMA_CCR_DIR | BDMA_CCR_MEM2MEM, Direction);
  494. }
  495. /**
  496. * @brief Get Data transfer direction (read from peripheral or from memory).
  497. * @rmtoll CCR DIR LL_BDMA_GetDataTransferDirection\n
  498. * CCR MEM2MEM LL_BDMA_GetDataTransferDirection
  499. * @param BDMAx BDMA Instance
  500. * @param Channel This parameter can be one of the following values:
  501. * @arg @ref LL_BDMA_CHANNEL_0
  502. * @arg @ref LL_BDMA_CHANNEL_1
  503. * @arg @ref LL_BDMA_CHANNEL_2
  504. * @arg @ref LL_BDMA_CHANNEL_3
  505. * @arg @ref LL_BDMA_CHANNEL_4
  506. * @arg @ref LL_BDMA_CHANNEL_5
  507. * @arg @ref LL_BDMA_CHANNEL_6
  508. * @arg @ref LL_BDMA_CHANNEL_7
  509. * @retval Returned value can be one of the following values:
  510. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
  511. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
  512. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  513. */
  514. __STATIC_INLINE uint32_t LL_BDMA_GetDataTransferDirection(BDMA_TypeDef *BDMAx, uint32_t Channel)
  515. {
  516. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  517. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  518. BDMA_CCR_DIR | BDMA_CCR_MEM2MEM));
  519. }
  520. /**
  521. * @brief Set BDMA mode circular or normal.
  522. * @note The circular buffer mode cannot be used if the memory-to-memory
  523. * data transfer is configured on the selected Channel.
  524. * @rmtoll CCR CIRC LL_BDMA_SetMode
  525. * @param BDMAx BDMA Instance
  526. * @param Channel This parameter can be one of the following values:
  527. * @arg @ref LL_BDMA_CHANNEL_0
  528. * @arg @ref LL_BDMA_CHANNEL_1
  529. * @arg @ref LL_BDMA_CHANNEL_2
  530. * @arg @ref LL_BDMA_CHANNEL_3
  531. * @arg @ref LL_BDMA_CHANNEL_4
  532. * @arg @ref LL_BDMA_CHANNEL_5
  533. * @arg @ref LL_BDMA_CHANNEL_6
  534. * @arg @ref LL_BDMA_CHANNEL_7
  535. * @param Mode This parameter can be one of the following values:
  536. * @arg @ref LL_BDMA_MODE_NORMAL
  537. * @arg @ref LL_BDMA_MODE_CIRCULAR
  538. * @retval None
  539. */
  540. __STATIC_INLINE void LL_BDMA_SetMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Mode)
  541. {
  542. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  543. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CIRC,
  544. Mode);
  545. }
  546. /**
  547. * @brief Get BDMA mode circular or normal.
  548. * @rmtoll CCR CIRC LL_BDMA_GetMode
  549. * @param BDMAx BDMA Instance
  550. * @param Channel This parameter can be one of the following values:
  551. * @arg @ref LL_BDMA_CHANNEL_0
  552. * @arg @ref LL_BDMA_CHANNEL_1
  553. * @arg @ref LL_BDMA_CHANNEL_2
  554. * @arg @ref LL_BDMA_CHANNEL_3
  555. * @arg @ref LL_BDMA_CHANNEL_4
  556. * @arg @ref LL_BDMA_CHANNEL_5
  557. * @arg @ref LL_BDMA_CHANNEL_6
  558. * @arg @ref LL_BDMA_CHANNEL_7
  559. * @retval Returned value can be one of the following values:
  560. * @arg @ref LL_BDMA_MODE_NORMAL
  561. * @arg @ref LL_BDMA_MODE_CIRCULAR
  562. */
  563. __STATIC_INLINE uint32_t LL_BDMA_GetMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  564. {
  565. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  566. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  567. BDMA_CCR_CIRC));
  568. }
  569. /**
  570. * @brief Set Peripheral increment mode.
  571. * @rmtoll CCR PINC LL_BDMA_SetPeriphIncMode
  572. * @param BDMAx BDMA Instance
  573. * @param Channel This parameter can be one of the following values:
  574. * @arg @ref LL_BDMA_CHANNEL_0
  575. * @arg @ref LL_BDMA_CHANNEL_1
  576. * @arg @ref LL_BDMA_CHANNEL_2
  577. * @arg @ref LL_BDMA_CHANNEL_3
  578. * @arg @ref LL_BDMA_CHANNEL_4
  579. * @arg @ref LL_BDMA_CHANNEL_5
  580. * @arg @ref LL_BDMA_CHANNEL_6
  581. * @arg @ref LL_BDMA_CHANNEL_7
  582. * @param PeriphOrM2MSrcIncMode This parameter can be one of the following values:
  583. * @arg @ref LL_BDMA_PERIPH_INCREMENT
  584. * @arg @ref LL_BDMA_PERIPH_NOINCREMENT
  585. * @retval None
  586. */
  587. __STATIC_INLINE void LL_BDMA_SetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcIncMode)
  588. {
  589. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  590. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PINC,
  591. PeriphOrM2MSrcIncMode);
  592. }
  593. /**
  594. * @brief Get Peripheral increment mode.
  595. * @rmtoll CCR PINC LL_BDMA_GetPeriphIncMode
  596. * @param BDMAx BDMA Instance
  597. * @param Channel This parameter can be one of the following values:
  598. * @arg @ref LL_BDMA_CHANNEL_0
  599. * @arg @ref LL_BDMA_CHANNEL_1
  600. * @arg @ref LL_BDMA_CHANNEL_2
  601. * @arg @ref LL_BDMA_CHANNEL_3
  602. * @arg @ref LL_BDMA_CHANNEL_4
  603. * @arg @ref LL_BDMA_CHANNEL_5
  604. * @arg @ref LL_BDMA_CHANNEL_6
  605. * @arg @ref LL_BDMA_CHANNEL_7
  606. * @retval Returned value can be one of the following values:
  607. * @arg @ref LL_BDMA_PERIPH_INCREMENT
  608. * @arg @ref LL_BDMA_PERIPH_NOINCREMENT
  609. */
  610. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  611. {
  612. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  613. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  614. BDMA_CCR_PINC));
  615. }
  616. /**
  617. * @brief Set Memory increment mode.
  618. * @rmtoll CCR MINC LL_BDMA_SetMemoryIncMode
  619. * @param BDMAx BDMA Instance
  620. * @param Channel This parameter can be one of the following values:
  621. * @arg @ref LL_BDMA_CHANNEL_0
  622. * @arg @ref LL_BDMA_CHANNEL_1
  623. * @arg @ref LL_BDMA_CHANNEL_2
  624. * @arg @ref LL_BDMA_CHANNEL_3
  625. * @arg @ref LL_BDMA_CHANNEL_4
  626. * @arg @ref LL_BDMA_CHANNEL_5
  627. * @arg @ref LL_BDMA_CHANNEL_6
  628. * @arg @ref LL_BDMA_CHANNEL_7
  629. * @param MemoryOrM2MDstIncMode This parameter can be one of the following values:
  630. * @arg @ref LL_BDMA_MEMORY_INCREMENT
  631. * @arg @ref LL_BDMA_MEMORY_NOINCREMENT
  632. * @retval None
  633. */
  634. __STATIC_INLINE void LL_BDMA_SetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstIncMode)
  635. {
  636. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  637. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_MINC,
  638. MemoryOrM2MDstIncMode);
  639. }
  640. /**
  641. * @brief Get Memory increment mode.
  642. * @rmtoll CCR MINC LL_BDMA_GetMemoryIncMode
  643. * @param BDMAx BDMA Instance
  644. * @param Channel This parameter can be one of the following values:
  645. * @arg @ref LL_BDMA_CHANNEL_0
  646. * @arg @ref LL_BDMA_CHANNEL_1
  647. * @arg @ref LL_BDMA_CHANNEL_2
  648. * @arg @ref LL_BDMA_CHANNEL_3
  649. * @arg @ref LL_BDMA_CHANNEL_4
  650. * @arg @ref LL_BDMA_CHANNEL_5
  651. * @arg @ref LL_BDMA_CHANNEL_6
  652. * @arg @ref LL_BDMA_CHANNEL_7
  653. * @retval Returned value can be one of the following values:
  654. * @arg @ref LL_BDMA_MEMORY_INCREMENT
  655. * @arg @ref LL_BDMA_MEMORY_NOINCREMENT
  656. */
  657. __STATIC_INLINE uint32_t LL_BDMA_GetMemoryIncMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  658. {
  659. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  660. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  661. BDMA_CCR_MINC));
  662. }
  663. /**
  664. * @brief Set Peripheral size.
  665. * @rmtoll CCR PSIZE LL_BDMA_SetPeriphSize
  666. * @param BDMAx BDMA Instance
  667. * @param Channel This parameter can be one of the following values:
  668. * @arg @ref LL_BDMA_CHANNEL_0
  669. * @arg @ref LL_BDMA_CHANNEL_1
  670. * @arg @ref LL_BDMA_CHANNEL_2
  671. * @arg @ref LL_BDMA_CHANNEL_3
  672. * @arg @ref LL_BDMA_CHANNEL_4
  673. * @arg @ref LL_BDMA_CHANNEL_5
  674. * @arg @ref LL_BDMA_CHANNEL_6
  675. * @arg @ref LL_BDMA_CHANNEL_7
  676. * @param PeriphOrM2MSrcDataSize This parameter can be one of the following values:
  677. * @arg @ref LL_BDMA_PDATAALIGN_BYTE
  678. * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD
  679. * @arg @ref LL_BDMA_PDATAALIGN_WORD
  680. * @retval None
  681. */
  682. __STATIC_INLINE void LL_BDMA_SetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphOrM2MSrcDataSize)
  683. {
  684. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  685. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PSIZE,
  686. PeriphOrM2MSrcDataSize);
  687. }
  688. /**
  689. * @brief Get Peripheral size.
  690. * @rmtoll CCR PSIZE LL_BDMA_GetPeriphSize
  691. * @param BDMAx BDMA Instance
  692. * @param Channel This parameter can be one of the following values:
  693. * @arg @ref LL_BDMA_CHANNEL_0
  694. * @arg @ref LL_BDMA_CHANNEL_1
  695. * @arg @ref LL_BDMA_CHANNEL_2
  696. * @arg @ref LL_BDMA_CHANNEL_3
  697. * @arg @ref LL_BDMA_CHANNEL_4
  698. * @arg @ref LL_BDMA_CHANNEL_5
  699. * @arg @ref LL_BDMA_CHANNEL_6
  700. * @arg @ref LL_BDMA_CHANNEL_7
  701. * @retval Returned value can be one of the following values:
  702. * @arg @ref LL_BDMA_PDATAALIGN_BYTE
  703. * @arg @ref LL_BDMA_PDATAALIGN_HALFWORD
  704. * @arg @ref LL_BDMA_PDATAALIGN_WORD
  705. */
  706. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphSize(BDMA_TypeDef *BDMAx, uint32_t Channel)
  707. {
  708. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  709. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  710. BDMA_CCR_PSIZE));
  711. }
  712. /**
  713. * @brief Set Memory size.
  714. * @rmtoll CCR MSIZE LL_BDMA_SetMemorySize
  715. * @param BDMAx BDMA Instance
  716. * @param Channel This parameter can be one of the following values:
  717. * @arg @ref LL_BDMA_CHANNEL_0
  718. * @arg @ref LL_BDMA_CHANNEL_1
  719. * @arg @ref LL_BDMA_CHANNEL_2
  720. * @arg @ref LL_BDMA_CHANNEL_3
  721. * @arg @ref LL_BDMA_CHANNEL_4
  722. * @arg @ref LL_BDMA_CHANNEL_5
  723. * @arg @ref LL_BDMA_CHANNEL_6
  724. * @arg @ref LL_BDMA_CHANNEL_7
  725. * @param MemoryOrM2MDstDataSize This parameter can be one of the following values:
  726. * @arg @ref LL_BDMA_MDATAALIGN_BYTE
  727. * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD
  728. * @arg @ref LL_BDMA_MDATAALIGN_WORD
  729. * @retval None
  730. */
  731. __STATIC_INLINE void LL_BDMA_SetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryOrM2MDstDataSize)
  732. {
  733. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  734. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_MSIZE,
  735. MemoryOrM2MDstDataSize);
  736. }
  737. /**
  738. * @brief Get Memory size.
  739. * @rmtoll CCR MSIZE LL_BDMA_GetMemorySize
  740. * @param BDMAx BDMA Instance
  741. * @param Channel This parameter can be one of the following values:
  742. * @arg @ref LL_BDMA_CHANNEL_0
  743. * @arg @ref LL_BDMA_CHANNEL_1
  744. * @arg @ref LL_BDMA_CHANNEL_2
  745. * @arg @ref LL_BDMA_CHANNEL_3
  746. * @arg @ref LL_BDMA_CHANNEL_4
  747. * @arg @ref LL_BDMA_CHANNEL_5
  748. * @arg @ref LL_BDMA_CHANNEL_6
  749. * @arg @ref LL_BDMA_CHANNEL_7
  750. * @retval Returned value can be one of the following values:
  751. * @arg @ref LL_BDMA_MDATAALIGN_BYTE
  752. * @arg @ref LL_BDMA_MDATAALIGN_HALFWORD
  753. * @arg @ref LL_BDMA_MDATAALIGN_WORD
  754. */
  755. __STATIC_INLINE uint32_t LL_BDMA_GetMemorySize(BDMA_TypeDef *BDMAx, uint32_t Channel)
  756. {
  757. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  758. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  759. BDMA_CCR_MSIZE));
  760. }
  761. /**
  762. * @brief Set Channel priority level.
  763. * @rmtoll CCR PL LL_BDMA_SetChannelPriorityLevel
  764. * @param BDMAx BDMA Instance
  765. * @param Channel This parameter can be one of the following values:
  766. * @arg @ref LL_BDMA_CHANNEL_0
  767. * @arg @ref LL_BDMA_CHANNEL_1
  768. * @arg @ref LL_BDMA_CHANNEL_2
  769. * @arg @ref LL_BDMA_CHANNEL_3
  770. * @arg @ref LL_BDMA_CHANNEL_4
  771. * @arg @ref LL_BDMA_CHANNEL_5
  772. * @arg @ref LL_BDMA_CHANNEL_6
  773. * @arg @ref LL_BDMA_CHANNEL_7
  774. * @param Priority This parameter can be one of the following values:
  775. * @arg @ref LL_BDMA_PRIORITY_LOW
  776. * @arg @ref LL_BDMA_PRIORITY_MEDIUM
  777. * @arg @ref LL_BDMA_PRIORITY_HIGH
  778. * @arg @ref LL_BDMA_PRIORITY_VERYHIGH
  779. * @retval None
  780. */
  781. __STATIC_INLINE void LL_BDMA_SetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Priority)
  782. {
  783. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  784. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_PL,
  785. Priority);
  786. }
  787. /**
  788. * @brief Get Channel priority level.
  789. * @rmtoll CCR PL LL_BDMA_GetChannelPriorityLevel
  790. * @param BDMAx BDMA Instance
  791. * @param Channel This parameter can be one of the following values:
  792. * @arg @ref LL_BDMA_CHANNEL_0
  793. * @arg @ref LL_BDMA_CHANNEL_1
  794. * @arg @ref LL_BDMA_CHANNEL_2
  795. * @arg @ref LL_BDMA_CHANNEL_3
  796. * @arg @ref LL_BDMA_CHANNEL_4
  797. * @arg @ref LL_BDMA_CHANNEL_5
  798. * @arg @ref LL_BDMA_CHANNEL_6
  799. * @arg @ref LL_BDMA_CHANNEL_7
  800. * @retval Returned value can be one of the following values:
  801. * @arg @ref LL_BDMA_PRIORITY_LOW
  802. * @arg @ref LL_BDMA_PRIORITY_MEDIUM
  803. * @arg @ref LL_BDMA_PRIORITY_HIGH
  804. * @arg @ref LL_BDMA_PRIORITY_VERYHIGH
  805. */
  806. __STATIC_INLINE uint32_t LL_BDMA_GetChannelPriorityLevel(BDMA_TypeDef *BDMAx, uint32_t Channel)
  807. {
  808. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  809. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR,
  810. BDMA_CCR_PL));
  811. }
  812. /**
  813. * @brief Set Number of data to transfer.
  814. * @note This action has no effect if
  815. * channel is enabled.
  816. * @rmtoll CNDTR NDT LL_BDMA_SetDataLength
  817. * @param BDMAx BDMA Instance
  818. * @param Channel This parameter can be one of the following values:
  819. * @arg @ref LL_BDMA_CHANNEL_0
  820. * @arg @ref LL_BDMA_CHANNEL_1
  821. * @arg @ref LL_BDMA_CHANNEL_2
  822. * @arg @ref LL_BDMA_CHANNEL_3
  823. * @arg @ref LL_BDMA_CHANNEL_4
  824. * @arg @ref LL_BDMA_CHANNEL_5
  825. * @arg @ref LL_BDMA_CHANNEL_6
  826. * @arg @ref LL_BDMA_CHANNEL_7
  827. * @param NbData Between Min_Data = 0 and Max_Data = 0x0000FFFF
  828. * @retval None
  829. */
  830. __STATIC_INLINE void LL_BDMA_SetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t NbData)
  831. {
  832. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  833. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CNDTR,
  834. BDMA_CNDTR_NDT, NbData);
  835. }
  836. /**
  837. * @brief Get Number of data to transfer.
  838. * @note Once the channel is enabled, the return value indicate the
  839. * remaining bytes to be transmitted.
  840. * @rmtoll CNDTR NDT LL_BDMA_GetDataLength
  841. * @param BDMAx BDMA Instance
  842. * @param Channel This parameter can be one of the following values:
  843. * @arg @ref LL_BDMA_CHANNEL_0
  844. * @arg @ref LL_BDMA_CHANNEL_1
  845. * @arg @ref LL_BDMA_CHANNEL_2
  846. * @arg @ref LL_BDMA_CHANNEL_3
  847. * @arg @ref LL_BDMA_CHANNEL_4
  848. * @arg @ref LL_BDMA_CHANNEL_5
  849. * @arg @ref LL_BDMA_CHANNEL_6
  850. * @arg @ref LL_BDMA_CHANNEL_7
  851. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  852. */
  853. __STATIC_INLINE uint32_t LL_BDMA_GetDataLength(BDMA_TypeDef *BDMAx, uint32_t Channel)
  854. {
  855. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  856. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CNDTR,
  857. BDMA_CNDTR_NDT));
  858. }
  859. /**
  860. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  861. * @rmtoll CR CT LL_BDMA_SetCurrentTargetMem
  862. * @param BDMAx BDMAx 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 CurrentMemory This parameter can be one of the following values:
  873. * @arg @ref LL_BDMA_CURRENTTARGETMEM0
  874. * @arg @ref LL_BDMA_CURRENTTARGETMEM1
  875. * @retval None
  876. */
  877. __STATIC_INLINE void LL_BDMA_SetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t CurrentMemory)
  878. {
  879. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  880. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CT, CurrentMemory);
  881. }
  882. /**
  883. * @brief Set Current target (only in double buffer mode) to Memory 1 or Memory 0.
  884. * @rmtoll CR CT LL_BDMA_GetCurrentTargetMem
  885. * @param BDMAx BDMAx Instance
  886. * @param Channel This parameter can be one of the following values:
  887. * @arg @ref LL_BDMA_CHANNEL_0
  888. * @arg @ref LL_BDMA_CHANNEL_1
  889. * @arg @ref LL_BDMA_CHANNEL_2
  890. * @arg @ref LL_BDMA_CHANNEL_3
  891. * @arg @ref LL_BDMA_CHANNEL_4
  892. * @arg @ref LL_BDMA_CHANNEL_5
  893. * @arg @ref LL_BDMA_CHANNEL_6
  894. * @arg @ref LL_BDMA_CHANNEL_7
  895. * @retval Returned value can be one of the following values:
  896. * @arg @ref LL_BDMA_CURRENTTARGETMEM0
  897. * @arg @ref LL_BDMA_CURRENTTARGETMEM1
  898. */
  899. __STATIC_INLINE uint32_t LL_BDMA_GetCurrentTargetMem(BDMA_TypeDef *BDMAx, uint32_t Channel)
  900. {
  901. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  902. return (READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_CT));
  903. }
  904. /**
  905. * @brief Enable the double buffer mode.
  906. * @rmtoll CR DBM LL_BDMA_EnableDoubleBufferMode
  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. * @retval None
  918. */
  919. __STATIC_INLINE void LL_BDMA_EnableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  920. {
  921. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  922. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM);
  923. }
  924. /**
  925. * @brief Disable the double buffer mode.
  926. * @rmtoll CR DBM LL_BDMA_DisableDoubleBufferMode
  927. * @param BDMAx BDMAx Instance
  928. * @param Channel This parameter can be one of the following values:
  929. * @arg @ref LL_BDMA_CHANNEL_0
  930. * @arg @ref LL_BDMA_CHANNEL_1
  931. * @arg @ref LL_BDMA_CHANNEL_2
  932. * @arg @ref LL_BDMA_CHANNEL_3
  933. * @arg @ref LL_BDMA_CHANNEL_4
  934. * @arg @ref LL_BDMA_CHANNEL_5
  935. * @arg @ref LL_BDMA_CHANNEL_6
  936. * @arg @ref LL_BDMA_CHANNEL_7
  937. * @retval None
  938. */
  939. __STATIC_INLINE void LL_BDMA_DisableDoubleBufferMode(BDMA_TypeDef *BDMAx, uint32_t Channel)
  940. {
  941. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  942. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_DBM);
  943. }
  944. /**
  945. * @brief Configure the Source and Destination addresses.
  946. * @note This API must not be called when the BDMA channel is enabled.
  947. * @note Each IP using BDMA provides an API to get directly the register adress (LL_PPP_BDMA_GetRegAddr).
  948. * @rmtoll CPAR PA LL_BDMA_ConfigAddresses\n
  949. * CMAR MA LL_BDMA_ConfigAddresses
  950. * @param BDMAx BDMA Instance
  951. * @param Channel This parameter can be one of the following values:
  952. * @arg @ref LL_BDMA_CHANNEL_0
  953. * @arg @ref LL_BDMA_CHANNEL_1
  954. * @arg @ref LL_BDMA_CHANNEL_2
  955. * @arg @ref LL_BDMA_CHANNEL_3
  956. * @arg @ref LL_BDMA_CHANNEL_4
  957. * @arg @ref LL_BDMA_CHANNEL_5
  958. * @arg @ref LL_BDMA_CHANNEL_6
  959. * @arg @ref LL_BDMA_CHANNEL_7
  960. * @param SrcAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  961. * @param DstAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  962. * @param Direction This parameter can be one of the following values:
  963. * @arg @ref LL_BDMA_DIRECTION_PERIPH_TO_MEMORY
  964. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_PERIPH
  965. * @arg @ref LL_BDMA_DIRECTION_MEMORY_TO_MEMORY
  966. * @retval None
  967. */
  968. __STATIC_INLINE void LL_BDMA_ConfigAddresses(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t SrcAddress,
  969. uint32_t DstAddress, uint32_t Direction)
  970. {
  971. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  972. /* Direction Memory to Periph */
  973. if (Direction == LL_BDMA_DIRECTION_MEMORY_TO_PERIPH)
  974. {
  975. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, SrcAddress);
  976. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, DstAddress);
  977. }
  978. /* Direction Periph to Memory and Memory to Memory */
  979. else
  980. {
  981. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, SrcAddress);
  982. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, DstAddress);
  983. }
  984. }
  985. /**
  986. * @brief Set the Memory address.
  987. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  988. * @note This API must not be called when the BDMA channel is enabled.
  989. * @rmtoll CMAR MA LL_BDMA_SetMemoryAddress
  990. * @param BDMAx BDMA Instance
  991. * @param Channel This parameter can be one of the following values:
  992. * @arg @ref LL_BDMA_CHANNEL_0
  993. * @arg @ref LL_BDMA_CHANNEL_1
  994. * @arg @ref LL_BDMA_CHANNEL_2
  995. * @arg @ref LL_BDMA_CHANNEL_3
  996. * @arg @ref LL_BDMA_CHANNEL_4
  997. * @arg @ref LL_BDMA_CHANNEL_5
  998. * @arg @ref LL_BDMA_CHANNEL_6
  999. * @arg @ref LL_BDMA_CHANNEL_7
  1000. * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1001. * @retval None
  1002. */
  1003. __STATIC_INLINE void LL_BDMA_SetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
  1004. {
  1005. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1006. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, MemoryAddress);
  1007. }
  1008. /**
  1009. * @brief Set the Peripheral address.
  1010. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1011. * @note This API must not be called when the BDMA channel is enabled.
  1012. * @rmtoll CPAR PA LL_BDMA_SetPeriphAddress
  1013. * @param BDMAx BDMA Instance
  1014. * @param Channel This parameter can be one of the following values:
  1015. * @arg @ref LL_BDMA_CHANNEL_0
  1016. * @arg @ref LL_BDMA_CHANNEL_1
  1017. * @arg @ref LL_BDMA_CHANNEL_2
  1018. * @arg @ref LL_BDMA_CHANNEL_3
  1019. * @arg @ref LL_BDMA_CHANNEL_4
  1020. * @arg @ref LL_BDMA_CHANNEL_5
  1021. * @arg @ref LL_BDMA_CHANNEL_6
  1022. * @arg @ref LL_BDMA_CHANNEL_7
  1023. * @param PeriphAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1024. * @retval None
  1025. */
  1026. __STATIC_INLINE void LL_BDMA_SetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t PeriphAddress)
  1027. {
  1028. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1029. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, PeriphAddress);
  1030. }
  1031. /**
  1032. * @brief Get Memory address.
  1033. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1034. * @rmtoll CMAR MA LL_BDMA_GetMemoryAddress
  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. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1046. */
  1047. __STATIC_INLINE uint32_t LL_BDMA_GetMemoryAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1048. {
  1049. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1050. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR));
  1051. }
  1052. /**
  1053. * @brief Get Peripheral address.
  1054. * @note Interface used for direction LL_BDMA_DIRECTION_PERIPH_TO_MEMORY or LL_BDMA_DIRECTION_MEMORY_TO_PERIPH only.
  1055. * @rmtoll CPAR PA LL_BDMA_GetPeriphAddress
  1056. * @param BDMAx BDMA Instance
  1057. * @param Channel This parameter can be one of the following values:
  1058. * @arg @ref LL_BDMA_CHANNEL_0
  1059. * @arg @ref LL_BDMA_CHANNEL_1
  1060. * @arg @ref LL_BDMA_CHANNEL_2
  1061. * @arg @ref LL_BDMA_CHANNEL_3
  1062. * @arg @ref LL_BDMA_CHANNEL_4
  1063. * @arg @ref LL_BDMA_CHANNEL_5
  1064. * @arg @ref LL_BDMA_CHANNEL_6
  1065. * @arg @ref LL_BDMA_CHANNEL_7
  1066. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1067. */
  1068. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1069. {
  1070. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1071. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR));
  1072. }
  1073. /**
  1074. * @brief Set the Memory to Memory Source address.
  1075. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1076. * @note This API must not be called when the BDMA channel is enabled.
  1077. * @rmtoll CPAR PA LL_BDMA_SetM2MSrcAddress
  1078. * @param BDMAx BDMA Instance
  1079. * @param Channel This parameter can be one of the following values:
  1080. * @arg @ref LL_BDMA_CHANNEL_0
  1081. * @arg @ref LL_BDMA_CHANNEL_1
  1082. * @arg @ref LL_BDMA_CHANNEL_2
  1083. * @arg @ref LL_BDMA_CHANNEL_3
  1084. * @arg @ref LL_BDMA_CHANNEL_4
  1085. * @arg @ref LL_BDMA_CHANNEL_5
  1086. * @arg @ref LL_BDMA_CHANNEL_6
  1087. * @arg @ref LL_BDMA_CHANNEL_7
  1088. * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1089. * @retval None
  1090. */
  1091. __STATIC_INLINE void LL_BDMA_SetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
  1092. {
  1093. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1094. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR, MemoryAddress);
  1095. }
  1096. /**
  1097. * @brief Set the Memory to Memory Destination address.
  1098. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1099. * @note This API must not be called when the BDMA channel is enabled.
  1100. * @rmtoll CMAR MA LL_BDMA_SetM2MDstAddress
  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. * @param MemoryAddress Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1112. * @retval None
  1113. */
  1114. __STATIC_INLINE void LL_BDMA_SetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t MemoryAddress)
  1115. {
  1116. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1117. WRITE_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR, MemoryAddress);
  1118. }
  1119. /**
  1120. * @brief Get the Memory to Memory Source address.
  1121. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1122. * @rmtoll CPAR PA LL_BDMA_GetM2MSrcAddress
  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. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1134. */
  1135. __STATIC_INLINE uint32_t LL_BDMA_GetM2MSrcAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1136. {
  1137. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1138. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CPAR));
  1139. }
  1140. /**
  1141. * @brief Get the Memory to Memory Destination address.
  1142. * @note Interface used for direction LL_BDMA_DIRECTION_MEMORY_TO_MEMORY only.
  1143. * @rmtoll CMAR MA LL_BDMA_GetM2MDstAddress
  1144. * @param BDMAx BDMA Instance
  1145. * @param Channel This parameter can be one of the following values:
  1146. * @arg @ref LL_BDMA_CHANNEL_0
  1147. * @arg @ref LL_BDMA_CHANNEL_1
  1148. * @arg @ref LL_BDMA_CHANNEL_2
  1149. * @arg @ref LL_BDMA_CHANNEL_3
  1150. * @arg @ref LL_BDMA_CHANNEL_4
  1151. * @arg @ref LL_BDMA_CHANNEL_5
  1152. * @arg @ref LL_BDMA_CHANNEL_6
  1153. * @arg @ref LL_BDMA_CHANNEL_7
  1154. * @retval Between Min_Data = 0 and Max_Data = 0xFFFFFFFF
  1155. */
  1156. __STATIC_INLINE uint32_t LL_BDMA_GetM2MDstAddress(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1157. {
  1158. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1159. return (READ_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM0AR));
  1160. }
  1161. /**
  1162. * @brief Set Memory 1 address (used in case of Double buffer mode).
  1163. * @rmtoll M1AR M1A LL_BDMA_SetMemory1Address
  1164. * @param BDMAx BDMAx Instance
  1165. * @param Channel This parameter can be one of the following values:
  1166. * @arg @ref LL_BDMA_CHANNEL_0
  1167. * @arg @ref LL_BDMA_CHANNEL_1
  1168. * @arg @ref LL_BDMA_CHANNEL_2
  1169. * @arg @ref LL_BDMA_CHANNEL_3
  1170. * @arg @ref LL_BDMA_CHANNEL_4
  1171. * @arg @ref LL_BDMA_CHANNEL_5
  1172. * @arg @ref LL_BDMA_CHANNEL_6
  1173. * @arg @ref LL_BDMA_CHANNEL_7
  1174. * @param Address Between 0 to 0xFFFFFFFF
  1175. * @retval None
  1176. */
  1177. __STATIC_INLINE void LL_BDMA_SetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Address)
  1178. {
  1179. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1180. MODIFY_REG(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM1AR, BDMA_CM1AR_MA, Address);
  1181. }
  1182. /**
  1183. * @brief Get Memory 1 address (used in case of Double buffer mode).
  1184. * @rmtoll M1AR M1A LL_BDMA_GetMemory1Address
  1185. * @param BDMAx BDMAx Instance
  1186. * @param Channel This parameter can be one of the following values:
  1187. * @arg @ref LL_BDMA_CHANNEL_0
  1188. * @arg @ref LL_BDMA_CHANNEL_1
  1189. * @arg @ref LL_BDMA_CHANNEL_2
  1190. * @arg @ref LL_BDMA_CHANNEL_3
  1191. * @arg @ref LL_BDMA_CHANNEL_4
  1192. * @arg @ref LL_BDMA_CHANNEL_5
  1193. * @arg @ref LL_BDMA_CHANNEL_6
  1194. * @arg @ref LL_BDMA_CHANNEL_7
  1195. * @retval Between 0 to 0xFFFFFFFF
  1196. */
  1197. __STATIC_INLINE uint32_t LL_BDMA_GetMemory1Address(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1198. {
  1199. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1200. return (((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CM1AR);
  1201. }
  1202. /**
  1203. * @brief Set BDMA request for BDMA Channels on DMAMUX Channel x.
  1204. * @note DMAMUX2 channel 0 to 7 are mapped to BDMA channel 0 to 7.
  1205. * @rmtoll CxCR DMAREQ_ID LL_BDMA_SetPeriphRequest
  1206. * @param BDMAx BDMAx Instance
  1207. * @param Channel This parameter can be one of the following values:
  1208. * @arg @ref LL_BDMA_CHANNEL_0
  1209. * @arg @ref LL_BDMA_CHANNEL_1
  1210. * @arg @ref LL_BDMA_CHANNEL_2
  1211. * @arg @ref LL_BDMA_CHANNEL_3
  1212. * @arg @ref LL_BDMA_CHANNEL_4
  1213. * @arg @ref LL_BDMA_CHANNEL_5
  1214. * @arg @ref LL_BDMA_CHANNEL_6
  1215. * @arg @ref LL_BDMA_CHANNEL_7
  1216. * @param Request This parameter can be one of the following values:
  1217. * @arg @ref LL_DMAMUX2_REQ_MEM2MEM
  1218. * @arg @ref LL_DMAMUX2_REQ_GENERATOR0
  1219. * @arg @ref LL_DMAMUX2_REQ_GENERATOR1
  1220. * @arg @ref LL_DMAMUX2_REQ_GENERATOR2
  1221. * @arg @ref LL_DMAMUX2_REQ_GENERATOR3
  1222. * @arg @ref LL_DMAMUX2_REQ_GENERATOR4
  1223. * @arg @ref LL_DMAMUX2_REQ_GENERATOR5
  1224. * @arg @ref LL_DMAMUX2_REQ_GENERATOR6
  1225. * @arg @ref LL_DMAMUX2_REQ_GENERATOR7
  1226. * @arg @ref LL_DMAMUX2_REQ_LPUART1_RX
  1227. * @arg @ref LL_DMAMUX2_REQ_LPUART1_TX
  1228. * @arg @ref LL_DMAMUX2_REQ_SPI6_RX
  1229. * @arg @ref LL_DMAMUX2_REQ_SPI6_TX
  1230. * @arg @ref LL_DMAMUX2_REQ_I2C4_RX
  1231. * @arg @ref LL_DMAMUX2_REQ_I2C4_TX
  1232. * @arg @ref LL_DMAMUX2_REQ_SAI4_A
  1233. * @arg @ref LL_DMAMUX2_REQ_SAI4_B
  1234. * @arg @ref LL_DMAMUX2_REQ_ADC3
  1235. * @retval None
  1236. */
  1237. __STATIC_INLINE void LL_BDMA_SetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Channel, uint32_t Request)
  1238. {
  1239. UNUSED(BDMAx);
  1240. MODIFY_REG(((DMAMUX_Channel_TypeDef *)(uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel))))->CCR, DMAMUX_CxCR_DMAREQ_ID, Request);
  1241. }
  1242. /**
  1243. * @brief Get BDMA request for BDMA Channels on DMAMUX Channel x.
  1244. * @note DMAMUX channel 0 to 7 are mapped to BDMA channel 0 to 7.
  1245. * @rmtoll CxCR DMAREQ_ID LL_BDMA_GetPeriphRequest
  1246. * @param BDMAx BDMAx Instance
  1247. * @param Channel This parameter can be one of the following values:
  1248. * @arg @ref LL_BDMA_CHANNEL_0
  1249. * @arg @ref LL_BDMA_CHANNEL_1
  1250. * @arg @ref LL_BDMA_CHANNEL_2
  1251. * @arg @ref LL_BDMA_CHANNEL_3
  1252. * @arg @ref LL_BDMA_CHANNEL_4
  1253. * @arg @ref LL_BDMA_CHANNEL_5
  1254. * @arg @ref LL_BDMA_CHANNEL_6
  1255. * @arg @ref LL_BDMA_CHANNEL_7
  1256. * @retval Returned value can be one of the following values:
  1257. * @arg @ref LL_DMAMUX2_REQ_MEM2MEM
  1258. * @arg @ref LL_DMAMUX2_REQ_GENERATOR0
  1259. * @arg @ref LL_DMAMUX2_REQ_GENERATOR1
  1260. * @arg @ref LL_DMAMUX2_REQ_GENERATOR2
  1261. * @arg @ref LL_DMAMUX2_REQ_GENERATOR3
  1262. * @arg @ref LL_DMAMUX2_REQ_GENERATOR4
  1263. * @arg @ref LL_DMAMUX2_REQ_GENERATOR5
  1264. * @arg @ref LL_DMAMUX2_REQ_GENERATOR6
  1265. * @arg @ref LL_DMAMUX2_REQ_GENERATOR7
  1266. * @arg @ref LL_DMAMUX2_REQ_LPUART1_RX
  1267. * @arg @ref LL_DMAMUX2_REQ_LPUART1_TX
  1268. * @arg @ref LL_DMAMUX2_REQ_SPI6_RX
  1269. * @arg @ref LL_DMAMUX2_REQ_SPI6_TX
  1270. * @arg @ref LL_DMAMUX2_REQ_I2C4_RX
  1271. * @arg @ref LL_DMAMUX2_REQ_I2C4_TX
  1272. * @arg @ref LL_DMAMUX2_REQ_SAI4_A
  1273. * @arg @ref LL_DMAMUX2_REQ_SAI4_B
  1274. * @arg @ref LL_DMAMUX2_REQ_ADC3
  1275. */
  1276. __STATIC_INLINE uint32_t LL_BDMA_GetPeriphRequest(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1277. {
  1278. UNUSED(BDMAx);
  1279. return (READ_BIT(((DMAMUX_Channel_TypeDef *)((uint32_t)((uint32_t)DMAMUX2_Channel0 + (DMAMUX_CCR_SIZE * (Channel)))))->CCR, DMAMUX_CxCR_DMAREQ_ID));
  1280. }
  1281. /**
  1282. * @}
  1283. */
  1284. /** @defgroup BDMA_LL_EF_FLAG_Management FLAG_Management
  1285. * @{
  1286. */
  1287. /**
  1288. * @brief Get Channel 0 global interrupt flag.
  1289. * @rmtoll ISR GIF0 LL_BDMA_IsActiveFlag_GI0
  1290. * @param BDMAx BDMA Instance
  1291. * @retval State of bit (1 or 0).
  1292. */
  1293. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI0(BDMA_TypeDef *BDMAx)
  1294. {
  1295. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF0) == (BDMA_ISR_GIF0)) ? 1UL : 0UL);
  1296. }
  1297. /**
  1298. * @brief Get Channel 1 global interrupt flag.
  1299. * @rmtoll ISR GIF1 LL_BDMA_IsActiveFlag_GI1
  1300. * @param BDMAx BDMA Instance
  1301. * @retval State of bit (1 or 0).
  1302. */
  1303. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI1(BDMA_TypeDef *BDMAx)
  1304. {
  1305. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF1) == (BDMA_ISR_GIF1)) ? 1UL : 0UL);
  1306. }
  1307. /**
  1308. * @brief Get Channel 2 global interrupt flag.
  1309. * @rmtoll ISR GIF2 LL_BDMA_IsActiveFlag_GI2
  1310. * @param BDMAx BDMA Instance
  1311. * @retval State of bit (1 or 0).
  1312. */
  1313. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI2(BDMA_TypeDef *BDMAx)
  1314. {
  1315. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF2) == (BDMA_ISR_GIF2)) ? 1UL : 0UL);
  1316. }
  1317. /**
  1318. * @brief Get Channel 3 global interrupt flag.
  1319. * @rmtoll ISR GIF3 LL_BDMA_IsActiveFlag_GI3
  1320. * @param BDMAx BDMA Instance
  1321. * @retval State of bit (1 or 0).
  1322. */
  1323. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI3(BDMA_TypeDef *BDMAx)
  1324. {
  1325. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF3) == (BDMA_ISR_GIF3)) ? 1UL : 0UL);
  1326. }
  1327. /**
  1328. * @brief Get Channel 4 global interrupt flag.
  1329. * @rmtoll ISR GIF4 LL_BDMA_IsActiveFlag_GI4
  1330. * @param BDMAx BDMA Instance
  1331. * @retval State of bit (1 or 0).
  1332. */
  1333. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI4(BDMA_TypeDef *BDMAx)
  1334. {
  1335. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF4) == (BDMA_ISR_GIF4)) ? 1UL : 0UL);
  1336. }
  1337. /**
  1338. * @brief Get Channel 5 global interrupt flag.
  1339. * @rmtoll ISR GIF5 LL_BDMA_IsActiveFlag_GI5
  1340. * @param BDMAx BDMA Instance
  1341. * @retval State of bit (1 or 0).
  1342. */
  1343. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI5(BDMA_TypeDef *BDMAx)
  1344. {
  1345. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF5) == (BDMA_ISR_GIF5)) ? 1UL : 0UL);
  1346. }
  1347. /**
  1348. * @brief Get Channel 6 global interrupt flag.
  1349. * @rmtoll ISR GIF6 LL_BDMA_IsActiveFlag_GI6
  1350. * @param BDMAx BDMA Instance
  1351. * @retval State of bit (1 or 0).
  1352. */
  1353. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI6(BDMA_TypeDef *BDMAx)
  1354. {
  1355. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF6) == (BDMA_ISR_GIF6)) ? 1UL : 0UL);
  1356. }
  1357. /**
  1358. * @brief Get Channel 7 global interrupt flag.
  1359. * @rmtoll ISR GIF7 LL_BDMA_IsActiveFlag_GI7
  1360. * @param BDMAx BDMA Instance
  1361. * @retval State of bit (1 or 0).
  1362. */
  1363. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_GI7(BDMA_TypeDef *BDMAx)
  1364. {
  1365. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_GIF7) == (BDMA_ISR_GIF7)) ? 1UL : 0UL);
  1366. }
  1367. /**
  1368. * @brief Get Channel 0 transfer complete flag.
  1369. * @rmtoll ISR TCIF0 LL_BDMA_IsActiveFlag_TC0
  1370. * @param BDMAx BDMA Instance
  1371. * @retval State of bit (1 or 0).
  1372. */
  1373. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC0(BDMA_TypeDef *BDMAx)
  1374. {
  1375. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF0) == (BDMA_ISR_TCIF0)) ? 1UL : 0UL);
  1376. }
  1377. /**
  1378. * @brief Get Channel 1 transfer complete flag.
  1379. * @rmtoll ISR TCIF1 LL_BDMA_IsActiveFlag_TC1
  1380. * @param BDMAx BDMA Instance
  1381. * @retval State of bit (1 or 0).
  1382. */
  1383. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC1(BDMA_TypeDef *BDMAx)
  1384. {
  1385. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF1) == (BDMA_ISR_TCIF1)) ? 1UL : 0UL);
  1386. }
  1387. /**
  1388. * @brief Get Channel 2 transfer complete flag.
  1389. * @rmtoll ISR TCIF2 LL_BDMA_IsActiveFlag_TC2
  1390. * @param BDMAx BDMA Instance
  1391. * @retval State of bit (1 or 0).
  1392. */
  1393. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC2(BDMA_TypeDef *BDMAx)
  1394. {
  1395. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF2) == (BDMA_ISR_TCIF2)) ? 1UL : 0UL);
  1396. }
  1397. /**
  1398. * @brief Get Channel 3 transfer complete flag.
  1399. * @rmtoll ISR TCIF3 LL_BDMA_IsActiveFlag_TC3
  1400. * @param BDMAx BDMA Instance
  1401. * @retval State of bit (1 or 0).
  1402. */
  1403. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC3(BDMA_TypeDef *BDMAx)
  1404. {
  1405. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF3) == (BDMA_ISR_TCIF3)) ? 1UL : 0UL);
  1406. }
  1407. /**
  1408. * @brief Get Channel 4 transfer complete flag.
  1409. * @rmtoll ISR TCIF4 LL_BDMA_IsActiveFlag_TC4
  1410. * @param BDMAx BDMA Instance
  1411. * @retval State of bit (1 or 0).
  1412. */
  1413. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC4(BDMA_TypeDef *BDMAx)
  1414. {
  1415. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF4) == (BDMA_ISR_TCIF4)) ? 1UL : 0UL);
  1416. }
  1417. /**
  1418. * @brief Get Channel 5 transfer complete flag.
  1419. * @rmtoll ISR TCIF5 LL_BDMA_IsActiveFlag_TC5
  1420. * @param BDMAx BDMA Instance
  1421. * @retval State of bit (1 or 0).
  1422. */
  1423. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC5(BDMA_TypeDef *BDMAx)
  1424. {
  1425. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF5) == (BDMA_ISR_TCIF5)) ? 1UL : 0UL);
  1426. }
  1427. /**
  1428. * @brief Get Channel 6 transfer complete flag.
  1429. * @rmtoll ISR TCIF6 LL_BDMA_IsActiveFlag_TC6
  1430. * @param BDMAx BDMA Instance
  1431. * @retval State of bit (1 or 0).
  1432. */
  1433. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC6(BDMA_TypeDef *BDMAx)
  1434. {
  1435. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF6) == (BDMA_ISR_TCIF6)) ? 1UL : 0UL);
  1436. }
  1437. /**
  1438. * @brief Get Channel 7 transfer complete flag.
  1439. * @rmtoll ISR TCIF7 LL_BDMA_IsActiveFlag_TC7
  1440. * @param BDMAx BDMA Instance
  1441. * @retval State of bit (1 or 0).
  1442. */
  1443. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TC7(BDMA_TypeDef *BDMAx)
  1444. {
  1445. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TCIF7) == (BDMA_ISR_TCIF7)) ? 1UL : 0UL);
  1446. }
  1447. /**
  1448. * @brief Get Channel 0 half transfer flag.
  1449. * @rmtoll ISR HTIF0 LL_BDMA_IsActiveFlag_HT0
  1450. * @param BDMAx BDMA Instance
  1451. * @retval State of bit (1 or 0).
  1452. */
  1453. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT0(BDMA_TypeDef *BDMAx)
  1454. {
  1455. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF0) == (BDMA_ISR_HTIF0)) ? 1UL : 0UL);
  1456. }
  1457. /**
  1458. * @brief Get Channel 1 half transfer flag.
  1459. * @rmtoll ISR HTIF1 LL_BDMA_IsActiveFlag_HT1
  1460. * @param BDMAx BDMA Instance
  1461. * @retval State of bit (1 or 0).
  1462. */
  1463. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT1(BDMA_TypeDef *BDMAx)
  1464. {
  1465. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF1) == (BDMA_ISR_HTIF1)) ? 1UL : 0UL);
  1466. }
  1467. /**
  1468. * @brief Get Channel 2 half transfer flag.
  1469. * @rmtoll ISR HTIF2 LL_BDMA_IsActiveFlag_HT2
  1470. * @param BDMAx BDMA Instance
  1471. * @retval State of bit (1 or 0).
  1472. */
  1473. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT2(BDMA_TypeDef *BDMAx)
  1474. {
  1475. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF2) == (BDMA_ISR_HTIF2)) ? 1UL : 0UL);
  1476. }
  1477. /**
  1478. * @brief Get Channel 3 half transfer flag.
  1479. * @rmtoll ISR HTIF3 LL_BDMA_IsActiveFlag_HT3
  1480. * @param BDMAx BDMA Instance
  1481. * @retval State of bit (1 or 0).
  1482. */
  1483. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT3(BDMA_TypeDef *BDMAx)
  1484. {
  1485. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF3) == (BDMA_ISR_HTIF3)) ? 1UL : 0UL);
  1486. }
  1487. /**
  1488. * @brief Get Channel 4 half transfer flag.
  1489. * @rmtoll ISR HTIF4 LL_BDMA_IsActiveFlag_HT4
  1490. * @param BDMAx BDMA Instance
  1491. * @retval State of bit (1 or 0).
  1492. */
  1493. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT4(BDMA_TypeDef *BDMAx)
  1494. {
  1495. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF4) == (BDMA_ISR_HTIF4)) ? 1UL : 0UL);
  1496. }
  1497. /**
  1498. * @brief Get Channel 5 half transfer flag.
  1499. * @rmtoll ISR HTIF5 LL_BDMA_IsActiveFlag_HT5
  1500. * @param BDMAx BDMA Instance
  1501. * @retval State of bit (1 or 0).
  1502. */
  1503. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT5(BDMA_TypeDef *BDMAx)
  1504. {
  1505. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF5) == (BDMA_ISR_HTIF5)) ? 1UL : 0UL);
  1506. }
  1507. /**
  1508. * @brief Get Channel 6 half transfer flag.
  1509. * @rmtoll ISR HTIF6 LL_BDMA_IsActiveFlag_HT6
  1510. * @param BDMAx BDMA Instance
  1511. * @retval State of bit (1 or 0).
  1512. */
  1513. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT6(BDMA_TypeDef *BDMAx)
  1514. {
  1515. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF6) == (BDMA_ISR_HTIF6)) ? 1UL : 0UL);
  1516. }
  1517. /**
  1518. * @brief Get Channel 7 half transfer flag.
  1519. * @rmtoll ISR HTIF7 LL_BDMA_IsActiveFlag_HT7
  1520. * @param BDMAx BDMA Instance
  1521. * @retval State of bit (1 or 0).
  1522. */
  1523. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_HT7(BDMA_TypeDef *BDMAx)
  1524. {
  1525. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_HTIF7) == (BDMA_ISR_HTIF7)) ? 1UL : 0UL);
  1526. }
  1527. /**
  1528. * @brief Get Channel 0 transfer error flag.
  1529. * @rmtoll ISR TEIF0 LL_BDMA_IsActiveFlag_TE0
  1530. * @param BDMAx BDMA Instance
  1531. * @retval State of bit (1 or 0).
  1532. */
  1533. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE0(BDMA_TypeDef *BDMAx)
  1534. {
  1535. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF0) == (BDMA_ISR_TEIF0)) ? 1UL : 0UL);
  1536. }
  1537. /**
  1538. * @brief Get Channel 1 transfer error flag.
  1539. * @rmtoll ISR TEIF1 LL_BDMA_IsActiveFlag_TE1
  1540. * @param BDMAx BDMA Instance
  1541. * @retval State of bit (1 or 0).
  1542. */
  1543. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE1(BDMA_TypeDef *BDMAx)
  1544. {
  1545. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF1) == (BDMA_ISR_TEIF1)) ? 1UL : 0UL);
  1546. }
  1547. /**
  1548. * @brief Get Channel 2 transfer error flag.
  1549. * @rmtoll ISR TEIF2 LL_BDMA_IsActiveFlag_TE2
  1550. * @param BDMAx BDMA Instance
  1551. * @retval State of bit (1 or 0).
  1552. */
  1553. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE2(BDMA_TypeDef *BDMAx)
  1554. {
  1555. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF2) == (BDMA_ISR_TEIF2)) ? 1UL : 0UL);
  1556. }
  1557. /**
  1558. * @brief Get Channel 3 transfer error flag.
  1559. * @rmtoll ISR TEIF3 LL_BDMA_IsActiveFlag_TE3
  1560. * @param BDMAx BDMA Instance
  1561. * @retval State of bit (1 or 0).
  1562. */
  1563. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE3(BDMA_TypeDef *BDMAx)
  1564. {
  1565. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF3) == (BDMA_ISR_TEIF3)) ? 1UL : 0UL);
  1566. }
  1567. /**
  1568. * @brief Get Channel 4 transfer error flag.
  1569. * @rmtoll ISR TEIF4 LL_BDMA_IsActiveFlag_TE4
  1570. * @param BDMAx BDMA Instance
  1571. * @retval State of bit (1 or 0).
  1572. */
  1573. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE4(BDMA_TypeDef *BDMAx)
  1574. {
  1575. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF4) == (BDMA_ISR_TEIF4)) ? 1UL : 0UL);
  1576. }
  1577. /**
  1578. * @brief Get Channel 5 transfer error flag.
  1579. * @rmtoll ISR TEIF5 LL_BDMA_IsActiveFlag_TE5
  1580. * @param BDMAx BDMA Instance
  1581. * @retval State of bit (1 or 0).
  1582. */
  1583. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE5(BDMA_TypeDef *BDMAx)
  1584. {
  1585. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF5) == (BDMA_ISR_TEIF5)) ? 1UL : 0UL);
  1586. }
  1587. /**
  1588. * @brief Get Channel 6 transfer error flag.
  1589. * @rmtoll ISR TEIF6 LL_BDMA_IsActiveFlag_TE6
  1590. * @param BDMAx BDMA Instance
  1591. * @retval State of bit (1 or 0).
  1592. */
  1593. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE6(BDMA_TypeDef *BDMAx)
  1594. {
  1595. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF6) == (BDMA_ISR_TEIF6)) ? 1UL : 0UL);
  1596. }
  1597. /**
  1598. * @brief Get Channel 7 transfer error flag.
  1599. * @rmtoll ISR TEIF7 LL_BDMA_IsActiveFlag_TE7
  1600. * @param BDMAx BDMA Instance
  1601. * @retval State of bit (1 or 0).
  1602. */
  1603. __STATIC_INLINE uint32_t LL_BDMA_IsActiveFlag_TE7(BDMA_TypeDef *BDMAx)
  1604. {
  1605. return ((READ_BIT(BDMAx->ISR, BDMA_ISR_TEIF7) == (BDMA_ISR_TEIF7)) ? 1UL : 0UL);
  1606. }
  1607. /**
  1608. * @brief Clear Channel 0 global interrupt flag.
  1609. * @rmtoll IFCR CGIF0 LL_BDMA_ClearFlag_GI0
  1610. * @param BDMAx BDMA Instance
  1611. * @retval None
  1612. */
  1613. __STATIC_INLINE void LL_BDMA_ClearFlag_GI0(BDMA_TypeDef *BDMAx)
  1614. {
  1615. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF0);
  1616. }
  1617. /**
  1618. * @brief Clear Channel 1 global interrupt flag.
  1619. * @rmtoll IFCR CGIF1 LL_BDMA_ClearFlag_GI1
  1620. * @param BDMAx BDMA Instance
  1621. * @retval None
  1622. */
  1623. __STATIC_INLINE void LL_BDMA_ClearFlag_GI1(BDMA_TypeDef *BDMAx)
  1624. {
  1625. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF1);
  1626. }
  1627. /**
  1628. * @brief Clear Channel 2 global interrupt flag.
  1629. * @rmtoll IFCR CGIF2 LL_BDMA_ClearFlag_GI2
  1630. * @param BDMAx BDMA Instance
  1631. * @retval None
  1632. */
  1633. __STATIC_INLINE void LL_BDMA_ClearFlag_GI2(BDMA_TypeDef *BDMAx)
  1634. {
  1635. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF2);
  1636. }
  1637. /**
  1638. * @brief Clear Channel 3 global interrupt flag.
  1639. * @rmtoll IFCR CGIF3 LL_BDMA_ClearFlag_GI3
  1640. * @param BDMAx BDMA Instance
  1641. * @retval None
  1642. */
  1643. __STATIC_INLINE void LL_BDMA_ClearFlag_GI3(BDMA_TypeDef *BDMAx)
  1644. {
  1645. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF3);
  1646. }
  1647. /**
  1648. * @brief Clear Channel 4 global interrupt flag.
  1649. * @rmtoll IFCR CGIF4 LL_BDMA_ClearFlag_GI4
  1650. * @param BDMAx BDMA Instance
  1651. * @retval None
  1652. */
  1653. __STATIC_INLINE void LL_BDMA_ClearFlag_GI4(BDMA_TypeDef *BDMAx)
  1654. {
  1655. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF4);
  1656. }
  1657. /**
  1658. * @brief Clear Channel 5 global interrupt flag.
  1659. * @rmtoll IFCR CGIF5 LL_BDMA_ClearFlag_GI5
  1660. * @param BDMAx BDMA Instance
  1661. * @retval None
  1662. */
  1663. __STATIC_INLINE void LL_BDMA_ClearFlag_GI5(BDMA_TypeDef *BDMAx)
  1664. {
  1665. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF5);
  1666. }
  1667. /**
  1668. * @brief Clear Channel 6 global interrupt flag.
  1669. * @rmtoll IFCR CGIF6 LL_BDMA_ClearFlag_GI6
  1670. * @param BDMAx BDMA Instance
  1671. * @retval None
  1672. */
  1673. __STATIC_INLINE void LL_BDMA_ClearFlag_GI6(BDMA_TypeDef *BDMAx)
  1674. {
  1675. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF6);
  1676. }
  1677. /**
  1678. * @brief Clear Channel 7 global interrupt flag.
  1679. * @rmtoll IFCR CGIF7 LL_BDMA_ClearFlag_GI7
  1680. * @param BDMAx BDMA Instance
  1681. * @retval None
  1682. */
  1683. __STATIC_INLINE void LL_BDMA_ClearFlag_GI7(BDMA_TypeDef *BDMAx)
  1684. {
  1685. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CGIF7);
  1686. }
  1687. /**
  1688. * @brief Clear Channel 0 transfer complete flag.
  1689. * @rmtoll IFCR CTCIF0 LL_BDMA_ClearFlag_TC0
  1690. * @param BDMAx BDMA Instance
  1691. * @retval None
  1692. */
  1693. __STATIC_INLINE void LL_BDMA_ClearFlag_TC0(BDMA_TypeDef *BDMAx)
  1694. {
  1695. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF0);
  1696. }
  1697. /**
  1698. * @brief Clear Channel 1 transfer complete flag.
  1699. * @rmtoll IFCR CTCIF1 LL_BDMA_ClearFlag_TC1
  1700. * @param BDMAx BDMA Instance
  1701. * @retval None
  1702. */
  1703. __STATIC_INLINE void LL_BDMA_ClearFlag_TC1(BDMA_TypeDef *BDMAx)
  1704. {
  1705. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF1);
  1706. }
  1707. /**
  1708. * @brief Clear Channel 2 transfer complete flag.
  1709. * @rmtoll IFCR CTCIF2 LL_BDMA_ClearFlag_TC2
  1710. * @param BDMAx BDMA Instance
  1711. * @retval None
  1712. */
  1713. __STATIC_INLINE void LL_BDMA_ClearFlag_TC2(BDMA_TypeDef *BDMAx)
  1714. {
  1715. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF2);
  1716. }
  1717. /**
  1718. * @brief Clear Channel 3 transfer complete flag.
  1719. * @rmtoll IFCR CTCIF3 LL_BDMA_ClearFlag_TC3
  1720. * @param BDMAx BDMA Instance
  1721. * @retval None
  1722. */
  1723. __STATIC_INLINE void LL_BDMA_ClearFlag_TC3(BDMA_TypeDef *BDMAx)
  1724. {
  1725. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF3);
  1726. }
  1727. /**
  1728. * @brief Clear Channel 4 transfer complete flag.
  1729. * @rmtoll IFCR CTCIF4 LL_BDMA_ClearFlag_TC4
  1730. * @param BDMAx BDMA Instance
  1731. * @retval None
  1732. */
  1733. __STATIC_INLINE void LL_BDMA_ClearFlag_TC4(BDMA_TypeDef *BDMAx)
  1734. {
  1735. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF4);
  1736. }
  1737. /**
  1738. * @brief Clear Channel 5 transfer complete flag.
  1739. * @rmtoll IFCR CTCIF5 LL_BDMA_ClearFlag_TC5
  1740. * @param BDMAx BDMA Instance
  1741. * @retval None
  1742. */
  1743. __STATIC_INLINE void LL_BDMA_ClearFlag_TC5(BDMA_TypeDef *BDMAx)
  1744. {
  1745. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF5);
  1746. }
  1747. /**
  1748. * @brief Clear Channel 6 transfer complete flag.
  1749. * @rmtoll IFCR CTCIF6 LL_BDMA_ClearFlag_TC6
  1750. * @param BDMAx BDMA Instance
  1751. * @retval None
  1752. */
  1753. __STATIC_INLINE void LL_BDMA_ClearFlag_TC6(BDMA_TypeDef *BDMAx)
  1754. {
  1755. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF6);
  1756. }
  1757. /**
  1758. * @brief Clear Channel 7 transfer complete flag.
  1759. * @rmtoll IFCR CTCIF7 LL_BDMA_ClearFlag_TC7
  1760. * @param BDMAx BDMA Instance
  1761. * @retval None
  1762. */
  1763. __STATIC_INLINE void LL_BDMA_ClearFlag_TC7(BDMA_TypeDef *BDMAx)
  1764. {
  1765. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTCIF7);
  1766. }
  1767. /**
  1768. * @brief Clear Channel 0 half transfer flag.
  1769. * @rmtoll IFCR CHTIF0 LL_BDMA_ClearFlag_HT0
  1770. * @param BDMAx BDMA Instance
  1771. * @retval None
  1772. */
  1773. __STATIC_INLINE void LL_BDMA_ClearFlag_HT0(BDMA_TypeDef *BDMAx)
  1774. {
  1775. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF0);
  1776. }
  1777. /**
  1778. * @brief Clear Channel 1 half transfer flag.
  1779. * @rmtoll IFCR CHTIF1 LL_BDMA_ClearFlag_HT1
  1780. * @param BDMAx BDMA Instance
  1781. * @retval None
  1782. */
  1783. __STATIC_INLINE void LL_BDMA_ClearFlag_HT1(BDMA_TypeDef *BDMAx)
  1784. {
  1785. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF1);
  1786. }
  1787. /**
  1788. * @brief Clear Channel 2 half transfer flag.
  1789. * @rmtoll IFCR CHTIF2 LL_BDMA_ClearFlag_HT2
  1790. * @param BDMAx BDMA Instance
  1791. * @retval None
  1792. */
  1793. __STATIC_INLINE void LL_BDMA_ClearFlag_HT2(BDMA_TypeDef *BDMAx)
  1794. {
  1795. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF2);
  1796. }
  1797. /**
  1798. * @brief Clear Channel 3 half transfer flag.
  1799. * @rmtoll IFCR CHTIF3 LL_BDMA_ClearFlag_HT3
  1800. * @param BDMAx BDMA Instance
  1801. * @retval None
  1802. */
  1803. __STATIC_INLINE void LL_BDMA_ClearFlag_HT3(BDMA_TypeDef *BDMAx)
  1804. {
  1805. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF3);
  1806. }
  1807. /**
  1808. * @brief Clear Channel 4 half transfer flag.
  1809. * @rmtoll IFCR CHTIF4 LL_BDMA_ClearFlag_HT4
  1810. * @param BDMAx BDMA Instance
  1811. * @retval None
  1812. */
  1813. __STATIC_INLINE void LL_BDMA_ClearFlag_HT4(BDMA_TypeDef *BDMAx)
  1814. {
  1815. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF4);
  1816. }
  1817. /**
  1818. * @brief Clear Channel 5 half transfer flag.
  1819. * @rmtoll IFCR CHTIF5 LL_BDMA_ClearFlag_HT5
  1820. * @param BDMAx BDMA Instance
  1821. * @retval None
  1822. */
  1823. __STATIC_INLINE void LL_BDMA_ClearFlag_HT5(BDMA_TypeDef *BDMAx)
  1824. {
  1825. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF5);
  1826. }
  1827. /**
  1828. * @brief Clear Channel 6 half transfer flag.
  1829. * @rmtoll IFCR CHTIF6 LL_BDMA_ClearFlag_HT6
  1830. * @param BDMAx BDMA Instance
  1831. * @retval None
  1832. */
  1833. __STATIC_INLINE void LL_BDMA_ClearFlag_HT6(BDMA_TypeDef *BDMAx)
  1834. {
  1835. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF6);
  1836. }
  1837. /**
  1838. * @brief Clear Channel 7 half transfer flag.
  1839. * @rmtoll IFCR CHTIF7 LL_BDMA_ClearFlag_HT7
  1840. * @param BDMAx BDMA Instance
  1841. * @retval None
  1842. */
  1843. __STATIC_INLINE void LL_BDMA_ClearFlag_HT7(BDMA_TypeDef *BDMAx)
  1844. {
  1845. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CHTIF7);
  1846. }
  1847. /**
  1848. * @brief Clear Channel 0 transfer error flag.
  1849. * @rmtoll IFCR CTEIF0 LL_BDMA_ClearFlag_TE0
  1850. * @param BDMAx BDMA Instance
  1851. * @retval None
  1852. */
  1853. __STATIC_INLINE void LL_BDMA_ClearFlag_TE0(BDMA_TypeDef *BDMAx)
  1854. {
  1855. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF0);
  1856. }
  1857. /**
  1858. * @brief Clear Channel 1 transfer error flag.
  1859. * @rmtoll IFCR CTEIF1 LL_BDMA_ClearFlag_TE1
  1860. * @param BDMAx BDMA Instance
  1861. * @retval None
  1862. */
  1863. __STATIC_INLINE void LL_BDMA_ClearFlag_TE1(BDMA_TypeDef *BDMAx)
  1864. {
  1865. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF1);
  1866. }
  1867. /**
  1868. * @brief Clear Channel 2 transfer error flag.
  1869. * @rmtoll IFCR CTEIF2 LL_BDMA_ClearFlag_TE2
  1870. * @param BDMAx BDMA Instance
  1871. * @retval None
  1872. */
  1873. __STATIC_INLINE void LL_BDMA_ClearFlag_TE2(BDMA_TypeDef *BDMAx)
  1874. {
  1875. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF2);
  1876. }
  1877. /**
  1878. * @brief Clear Channel 3 transfer error flag.
  1879. * @rmtoll IFCR CTEIF3 LL_BDMA_ClearFlag_TE3
  1880. * @param BDMAx BDMA Instance
  1881. * @retval None
  1882. */
  1883. __STATIC_INLINE void LL_BDMA_ClearFlag_TE3(BDMA_TypeDef *BDMAx)
  1884. {
  1885. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF3);
  1886. }
  1887. /**
  1888. * @brief Clear Channel 4 transfer error flag.
  1889. * @rmtoll IFCR CTEIF4 LL_BDMA_ClearFlag_TE4
  1890. * @param BDMAx BDMA Instance
  1891. * @retval None
  1892. */
  1893. __STATIC_INLINE void LL_BDMA_ClearFlag_TE4(BDMA_TypeDef *BDMAx)
  1894. {
  1895. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF4);
  1896. }
  1897. /**
  1898. * @brief Clear Channel 5 transfer error flag.
  1899. * @rmtoll IFCR CTEIF5 LL_BDMA_ClearFlag_TE5
  1900. * @param BDMAx BDMA Instance
  1901. * @retval None
  1902. */
  1903. __STATIC_INLINE void LL_BDMA_ClearFlag_TE5(BDMA_TypeDef *BDMAx)
  1904. {
  1905. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF5);
  1906. }
  1907. /**
  1908. * @brief Clear Channel 6 transfer error flag.
  1909. * @rmtoll IFCR CTEIF6 LL_BDMA_ClearFlag_TE6
  1910. * @param BDMAx BDMA Instance
  1911. * @retval None
  1912. */
  1913. __STATIC_INLINE void LL_BDMA_ClearFlag_TE6(BDMA_TypeDef *BDMAx)
  1914. {
  1915. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF6);
  1916. }
  1917. /**
  1918. * @brief Clear Channel 7 transfer error flag.
  1919. * @rmtoll IFCR CTEIF7 LL_BDMA_ClearFlag_TE7
  1920. * @param BDMAx BDMA Instance
  1921. * @retval None
  1922. */
  1923. __STATIC_INLINE void LL_BDMA_ClearFlag_TE7(BDMA_TypeDef *BDMAx)
  1924. {
  1925. WRITE_REG(BDMAx->IFCR, BDMA_IFCR_CTEIF7);
  1926. }
  1927. /**
  1928. * @}
  1929. */
  1930. /** @defgroup BDMA_LL_EF_IT_Management IT_Management
  1931. * @{
  1932. */
  1933. /**
  1934. * @brief Enable Transfer complete interrupt.
  1935. * @rmtoll CCR TCIE LL_BDMA_EnableIT_TC
  1936. * @param BDMAx BDMA Instance
  1937. * @param Channel This parameter can be one of the following values:
  1938. * @arg @ref LL_BDMA_CHANNEL_0
  1939. * @arg @ref LL_BDMA_CHANNEL_1
  1940. * @arg @ref LL_BDMA_CHANNEL_2
  1941. * @arg @ref LL_BDMA_CHANNEL_3
  1942. * @arg @ref LL_BDMA_CHANNEL_4
  1943. * @arg @ref LL_BDMA_CHANNEL_5
  1944. * @arg @ref LL_BDMA_CHANNEL_6
  1945. * @arg @ref LL_BDMA_CHANNEL_7
  1946. * @retval None
  1947. */
  1948. __STATIC_INLINE void LL_BDMA_EnableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1949. {
  1950. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1951. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE);
  1952. }
  1953. /**
  1954. * @brief Enable Half transfer interrupt.
  1955. * @rmtoll CCR HTIE LL_BDMA_EnableIT_HT
  1956. * @param BDMAx BDMA Instance
  1957. * @param Channel This parameter can be one of the following values:
  1958. * @arg @ref LL_BDMA_CHANNEL_0
  1959. * @arg @ref LL_BDMA_CHANNEL_1
  1960. * @arg @ref LL_BDMA_CHANNEL_2
  1961. * @arg @ref LL_BDMA_CHANNEL_3
  1962. * @arg @ref LL_BDMA_CHANNEL_4
  1963. * @arg @ref LL_BDMA_CHANNEL_5
  1964. * @arg @ref LL_BDMA_CHANNEL_6
  1965. * @arg @ref LL_BDMA_CHANNEL_7
  1966. * @retval None
  1967. */
  1968. __STATIC_INLINE void LL_BDMA_EnableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1969. {
  1970. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1971. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE);
  1972. }
  1973. /**
  1974. * @brief Enable Transfer error interrupt.
  1975. * @rmtoll CCR TEIE LL_BDMA_EnableIT_TE
  1976. * @param BDMAx BDMA Instance
  1977. * @param Channel This parameter can be one of the following values:
  1978. * @arg @ref LL_BDMA_CHANNEL_0
  1979. * @arg @ref LL_BDMA_CHANNEL_1
  1980. * @arg @ref LL_BDMA_CHANNEL_2
  1981. * @arg @ref LL_BDMA_CHANNEL_3
  1982. * @arg @ref LL_BDMA_CHANNEL_4
  1983. * @arg @ref LL_BDMA_CHANNEL_5
  1984. * @arg @ref LL_BDMA_CHANNEL_6
  1985. * @arg @ref LL_BDMA_CHANNEL_7
  1986. * @retval None
  1987. */
  1988. __STATIC_INLINE void LL_BDMA_EnableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel)
  1989. {
  1990. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  1991. SET_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE);
  1992. }
  1993. /**
  1994. * @brief Disable Transfer complete interrupt.
  1995. * @rmtoll CCR TCIE LL_BDMA_DisableIT_TC
  1996. * @param BDMAx BDMA Instance
  1997. * @param Channel This parameter can be one of the following values:
  1998. * @arg @ref LL_BDMA_CHANNEL_0
  1999. * @arg @ref LL_BDMA_CHANNEL_1
  2000. * @arg @ref LL_BDMA_CHANNEL_2
  2001. * @arg @ref LL_BDMA_CHANNEL_3
  2002. * @arg @ref LL_BDMA_CHANNEL_4
  2003. * @arg @ref LL_BDMA_CHANNEL_5
  2004. * @arg @ref LL_BDMA_CHANNEL_6
  2005. * @arg @ref LL_BDMA_CHANNEL_7
  2006. * @retval None
  2007. */
  2008. __STATIC_INLINE void LL_BDMA_DisableIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2009. {
  2010. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2011. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE);
  2012. }
  2013. /**
  2014. * @brief Disable Half transfer interrupt.
  2015. * @rmtoll CCR HTIE LL_BDMA_DisableIT_HT
  2016. * @param BDMAx BDMA Instance
  2017. * @param Channel This parameter can be one of the following values:
  2018. * @arg @ref LL_BDMA_CHANNEL_0
  2019. * @arg @ref LL_BDMA_CHANNEL_1
  2020. * @arg @ref LL_BDMA_CHANNEL_2
  2021. * @arg @ref LL_BDMA_CHANNEL_3
  2022. * @arg @ref LL_BDMA_CHANNEL_4
  2023. * @arg @ref LL_BDMA_CHANNEL_5
  2024. * @arg @ref LL_BDMA_CHANNEL_6
  2025. * @arg @ref LL_BDMA_CHANNEL_7
  2026. * @retval None
  2027. */
  2028. __STATIC_INLINE void LL_BDMA_DisableIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2029. {
  2030. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2031. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE);
  2032. }
  2033. /**
  2034. * @brief Disable Transfer error interrupt.
  2035. * @rmtoll CCR TEIE LL_BDMA_DisableIT_TE
  2036. * @param BDMAx BDMA Instance
  2037. * @param Channel This parameter can be one of the following values:
  2038. * @arg @ref LL_BDMA_CHANNEL_0
  2039. * @arg @ref LL_BDMA_CHANNEL_1
  2040. * @arg @ref LL_BDMA_CHANNEL_2
  2041. * @arg @ref LL_BDMA_CHANNEL_3
  2042. * @arg @ref LL_BDMA_CHANNEL_4
  2043. * @arg @ref LL_BDMA_CHANNEL_5
  2044. * @arg @ref LL_BDMA_CHANNEL_6
  2045. * @arg @ref LL_BDMA_CHANNEL_7
  2046. * @retval None
  2047. */
  2048. __STATIC_INLINE void LL_BDMA_DisableIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2049. {
  2050. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2051. CLEAR_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE);
  2052. }
  2053. /**
  2054. * @brief Check if Transfer complete Interrupt is enabled.
  2055. * @rmtoll CCR TCIE LL_BDMA_IsEnabledIT_TC
  2056. * @param BDMAx BDMA Instance
  2057. * @param Channel This parameter can be one of the following values:
  2058. * @arg @ref LL_BDMA_CHANNEL_0
  2059. * @arg @ref LL_BDMA_CHANNEL_1
  2060. * @arg @ref LL_BDMA_CHANNEL_2
  2061. * @arg @ref LL_BDMA_CHANNEL_3
  2062. * @arg @ref LL_BDMA_CHANNEL_4
  2063. * @arg @ref LL_BDMA_CHANNEL_5
  2064. * @arg @ref LL_BDMA_CHANNEL_6
  2065. * @arg @ref LL_BDMA_CHANNEL_7
  2066. * @retval State of bit (1 or 0).
  2067. */
  2068. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TC(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2069. {
  2070. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2071. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TCIE) == (BDMA_CCR_TCIE)) ? 1UL : 0UL);
  2072. }
  2073. /**
  2074. * @brief Check if Half transfer Interrupt is enabled.
  2075. * @rmtoll CCR HTIE LL_BDMA_IsEnabledIT_HT
  2076. * @param BDMAx BDMA Instance
  2077. * @param Channel This parameter can be one of the following values:
  2078. * @arg @ref LL_BDMA_CHANNEL_0
  2079. * @arg @ref LL_BDMA_CHANNEL_1
  2080. * @arg @ref LL_BDMA_CHANNEL_2
  2081. * @arg @ref LL_BDMA_CHANNEL_3
  2082. * @arg @ref LL_BDMA_CHANNEL_4
  2083. * @arg @ref LL_BDMA_CHANNEL_5
  2084. * @arg @ref LL_BDMA_CHANNEL_6
  2085. * @arg @ref LL_BDMA_CHANNEL_7
  2086. * @retval State of bit (1 or 0).
  2087. */
  2088. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_HT(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2089. {
  2090. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2091. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_HTIE) == (BDMA_CCR_HTIE)) ? 1UL : 0UL);
  2092. }
  2093. /**
  2094. * @brief Check if Transfer error Interrupt is enabled.
  2095. * @rmtoll CCR TEIE LL_BDMA_IsEnabledIT_TE
  2096. * @param BDMAx BDMA Instance
  2097. * @param Channel This parameter can be one of the following values:
  2098. * @arg @ref LL_BDMA_CHANNEL_0
  2099. * @arg @ref LL_BDMA_CHANNEL_1
  2100. * @arg @ref LL_BDMA_CHANNEL_2
  2101. * @arg @ref LL_BDMA_CHANNEL_3
  2102. * @arg @ref LL_BDMA_CHANNEL_4
  2103. * @arg @ref LL_BDMA_CHANNEL_5
  2104. * @arg @ref LL_BDMA_CHANNEL_6
  2105. * @arg @ref LL_BDMA_CHANNEL_7
  2106. * @retval State of bit (1 or 0).
  2107. */
  2108. __STATIC_INLINE uint32_t LL_BDMA_IsEnabledIT_TE(BDMA_TypeDef *BDMAx, uint32_t Channel)
  2109. {
  2110. register uint32_t bdma_base_addr = (uint32_t)BDMAx;
  2111. return ((READ_BIT(((BDMA_Channel_TypeDef *)(bdma_base_addr + LL_BDMA_CH_OFFSET_TAB[Channel]))->CCR, BDMA_CCR_TEIE) == (BDMA_CCR_TEIE)) ? 1UL : 0UL);
  2112. }
  2113. /**
  2114. * @}
  2115. */
  2116. #if defined(USE_FULL_LL_DRIVER)
  2117. /** @defgroup BDMA_LL_EF_Init Initialization and de-initialization functions
  2118. * @{
  2119. */
  2120. uint32_t LL_BDMA_Init(BDMA_TypeDef *BDMAx, uint32_t Channel, LL_BDMA_InitTypeDef *BDMA_InitStruct);
  2121. uint32_t LL_BDMA_DeInit(BDMA_TypeDef *BDMAx, uint32_t Channel);
  2122. void LL_BDMA_StructInit(LL_BDMA_InitTypeDef *BDMA_InitStruct);
  2123. /**
  2124. * @}
  2125. */
  2126. #endif /* USE_FULL_LL_DRIVER */
  2127. /**
  2128. * @}
  2129. */
  2130. /**
  2131. * @}
  2132. */
  2133. #endif /* BDMA */
  2134. /**
  2135. * @}
  2136. */
  2137. /**
  2138. * @}
  2139. */
  2140. #ifdef __cplusplus
  2141. }
  2142. #endif
  2143. #endif /* STM32H7xx_LL_BDMA_H */
  2144. /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/