Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:23:35

0001 /**
0002   ******************************************************************************
0003   * @file    stm32h7xx_hal_dma.h
0004   * @author  MCD Application Team
0005   * @brief   Header file of DMA HAL module.
0006   ******************************************************************************
0007   * @attention
0008   *
0009   * Copyright (c) 2017 STMicroelectronics.
0010   * All rights reserved.
0011   *
0012   * This software is licensed under terms that can be found in the LICENSE file
0013   * in the root directory of this software component.
0014   * If no LICENSE file comes with this software, it is provided AS-IS.
0015   *
0016   ******************************************************************************
0017   */
0018 
0019 /* Define to prevent recursive inclusion -------------------------------------*/
0020 #ifndef STM32H7xx_HAL_DMA_H
0021 #define STM32H7xx_HAL_DMA_H
0022 
0023 #ifdef __cplusplus
0024  extern "C" {
0025 #endif
0026 
0027 /* Includes ------------------------------------------------------------------*/
0028 #include "stm32h7xx_hal_def.h"
0029 
0030 /** @addtogroup STM32H7xx_HAL_Driver
0031   * @{
0032   */
0033 
0034 /** @addtogroup DMA
0035   * @{
0036   */
0037 
0038 /* Exported types ------------------------------------------------------------*/
0039 
0040 /** @defgroup DMA_Exported_Types DMA Exported Types
0041   * @ingroup RTEMSBSPsARMSTM32H7
0042   * @brief    DMA Exported Types
0043   * @{
0044   */
0045 
0046 /**
0047   * @brief  DMA Configuration Structure definition
0048   */
0049 typedef struct
0050 {
0051   uint32_t Request;               /*!< Specifies the request selected for the specified stream.
0052                                            This parameter can be a value of @ref DMA_Request_selection              */
0053 
0054   uint32_t Direction;            /*!< Specifies if the data will be transferred from memory to peripheral,
0055                                       from memory to memory or from peripheral to memory.
0056                                       This parameter can be a value of @ref DMA_Data_transfer_direction              */
0057 
0058   uint32_t PeriphInc;            /*!< Specifies whether the Peripheral address register should be incremented or not.
0059                                       This parameter can be a value of @ref DMA_Peripheral_incremented_mode          */
0060 
0061   uint32_t MemInc;               /*!< Specifies whether the memory address register should be incremented or not.
0062                                       This parameter can be a value of @ref DMA_Memory_incremented_mode              */
0063 
0064   uint32_t PeriphDataAlignment;  /*!< Specifies the Peripheral data width.
0065                                       This parameter can be a value of @ref DMA_Peripheral_data_size                 */
0066 
0067   uint32_t MemDataAlignment;     /*!< Specifies the Memory data width.
0068                                       This parameter can be a value of @ref DMA_Memory_data_size                     */
0069 
0070   uint32_t Mode;                 /*!< Specifies the operation mode of the DMAy Streamx.
0071                                       This parameter can be a value of @ref DMA_mode
0072                                       @note The circular buffer mode cannot be used if the memory-to-memory
0073                                             data transfer is configured on the selected Stream                        */
0074 
0075   uint32_t Priority;             /*!< Specifies the software priority for the DMAy Streamx.
0076                                       This parameter can be a value of @ref DMA_Priority_level                        */
0077 
0078   uint32_t FIFOMode;             /*!< Specifies if the FIFO mode or Direct mode will be used for the specified stream.
0079                                       This parameter can be a value of @ref DMA_FIFO_direct_mode
0080                                       @note The Direct mode (FIFO mode disabled) cannot be used if the
0081                                             memory-to-memory data transfer is configured on the selected stream       */
0082 
0083   uint32_t FIFOThreshold;        /*!< Specifies the FIFO threshold level.
0084                                       This parameter can be a value of @ref DMA_FIFO_threshold_level                  */
0085 
0086   uint32_t MemBurst;             /*!< Specifies the Burst transfer configuration for the memory transfers.
0087                                       It specifies the amount of data to be transferred in a single non interruptible
0088                                       transaction.
0089                                       This parameter can be a value of @ref DMA_Memory_burst
0090                                       @note The burst mode is possible only if the address Increment mode is enabled. */
0091 
0092   uint32_t PeriphBurst;          /*!< Specifies the Burst transfer configuration for the peripheral transfers.
0093                                       It specifies the amount of data to be transferred in a single non interruptible
0094                                       transaction.
0095                                       This parameter can be a value of @ref DMA_Peripheral_burst
0096                                       @note The burst mode is possible only if the address Increment mode is enabled. */
0097 }DMA_InitTypeDef;
0098 
0099 /**
0100   * @brief  HAL DMA State structures definition
0101   */
0102 typedef enum
0103 {
0104   HAL_DMA_STATE_RESET             = 0x00U,  /*!< DMA not yet initialized or disabled */
0105   HAL_DMA_STATE_READY             = 0x01U,  /*!< DMA initialized and ready for use   */
0106   HAL_DMA_STATE_BUSY              = 0x02U,  /*!< DMA process is ongoing              */
0107   HAL_DMA_STATE_ERROR             = 0x03U,  /*!< DMA error state                     */
0108   HAL_DMA_STATE_ABORT             = 0x04U,  /*!< DMA Abort state                     */
0109 }HAL_DMA_StateTypeDef;
0110 
0111 /**
0112   * @brief  HAL DMA Transfer complete level structure definition
0113   */
0114 typedef enum
0115 {
0116   HAL_DMA_FULL_TRANSFER      = 0x00U,    /*!< Full transfer     */
0117   HAL_DMA_HALF_TRANSFER      = 0x01U,    /*!< Half Transfer     */
0118 }HAL_DMA_LevelCompleteTypeDef;
0119 
0120 /**
0121   * @brief  HAL DMA Callbacks IDs structure definition
0122   */
0123 typedef enum
0124 {
0125   HAL_DMA_XFER_CPLT_CB_ID          = 0x00U,    /*!< Full transfer     */
0126   HAL_DMA_XFER_HALFCPLT_CB_ID      = 0x01U,    /*!< Half Transfer     */
0127   HAL_DMA_XFER_M1CPLT_CB_ID        = 0x02U,    /*!< M1 Full Transfer  */
0128   HAL_DMA_XFER_M1HALFCPLT_CB_ID    = 0x03U,    /*!< M1 Half Transfer  */
0129   HAL_DMA_XFER_ERROR_CB_ID         = 0x04U,    /*!< Error             */
0130   HAL_DMA_XFER_ABORT_CB_ID         = 0x05U,    /*!< Abort             */
0131   HAL_DMA_XFER_ALL_CB_ID           = 0x06U     /*!< All               */
0132 }HAL_DMA_CallbackIDTypeDef;
0133 
0134 /**
0135   * @brief  DMA handle Structure definition
0136   */
0137 typedef struct __DMA_HandleTypeDef
0138 {
0139   void                            *Instance;                                                        /*!< Register base address                         */
0140 
0141   DMA_InitTypeDef                 Init;                                                             /*!< DMA communication parameters                  */
0142 
0143   HAL_LockTypeDef                 Lock;                                                             /*!< DMA locking object                            */
0144 
0145   __IO HAL_DMA_StateTypeDef       State;                                                            /*!< DMA transfer state                            */
0146 
0147   void                            *Parent;                                                          /*!< Parent object state                           */
0148 
0149   void                            (* XferCpltCallback)( struct __DMA_HandleTypeDef * hdma);         /*!< DMA transfer complete callback                */
0150 
0151   void                            (* XferHalfCpltCallback)( struct __DMA_HandleTypeDef * hdma);     /*!< DMA Half transfer complete callback           */
0152 
0153   void                            (* XferM1CpltCallback)( struct __DMA_HandleTypeDef * hdma);       /*!< DMA transfer complete Memory1 callback        */
0154 
0155   void                            (* XferM1HalfCpltCallback)( struct __DMA_HandleTypeDef * hdma);   /*!< DMA transfer Half complete Memory1 callback   */
0156 
0157   void                            (* XferErrorCallback)( struct __DMA_HandleTypeDef * hdma);        /*!< DMA transfer error callback                   */
0158 
0159   void                            (* XferAbortCallback)( struct __DMA_HandleTypeDef * hdma);        /*!< DMA transfer Abort callback                   */
0160 
0161  __IO uint32_t                    ErrorCode;                                                        /*!< DMA Error code                                */
0162 
0163  uint32_t                         StreamBaseAddress;                                                /*!< DMA Stream Base Address                       */
0164 
0165  uint32_t                         StreamIndex;                                                      /*!< DMA Stream Index                              */
0166 
0167  DMAMUX_Channel_TypeDef           *DMAmuxChannel;                                                   /*!< DMAMUX Channel Base Address                   */
0168 
0169  DMAMUX_ChannelStatus_TypeDef     *DMAmuxChannelStatus;                                             /*!< DMAMUX Channels Status Base Address           */
0170 
0171  uint32_t                         DMAmuxChannelStatusMask;                                          /*!< DMAMUX Channel Status Mask                    */
0172 
0173 
0174  DMAMUX_RequestGen_TypeDef        *DMAmuxRequestGen;                                                /*!< DMAMUX request generator Base Address         */
0175 
0176  DMAMUX_RequestGenStatus_TypeDef  *DMAmuxRequestGenStatus;                                          /*!< DMAMUX request generator Status Address       */
0177 
0178  uint32_t                         DMAmuxRequestGenStatusMask;                                       /*!< DMAMUX request generator Status mask          */
0179 
0180 }DMA_HandleTypeDef;
0181 
0182 /**
0183   * @}
0184   */
0185 
0186 
0187 /* Exported constants --------------------------------------------------------*/
0188 
0189 /** @defgroup DMA_Exported_Constants DMA Exported Constants
0190   * @ingroup RTEMSBSPsARMSTM32H7
0191   * @brief    DMA Exported constants
0192   * @{
0193   */
0194 
0195 /** @defgroup DMA_Error_Code DMA Error Code
0196   * @ingroup RTEMSBSPsARMSTM32H7
0197   * @brief    DMA Error Code
0198   * @{
0199   */
0200 #define HAL_DMA_ERROR_NONE            (0x00000000U)    /*!< No error                                */
0201 #define HAL_DMA_ERROR_TE              (0x00000001U)    /*!< Transfer error                          */
0202 #define HAL_DMA_ERROR_FE              (0x00000002U)    /*!< FIFO error                              */
0203 #define HAL_DMA_ERROR_DME             (0x00000004U)    /*!< Direct Mode error                       */
0204 #define HAL_DMA_ERROR_TIMEOUT         (0x00000020U)    /*!< Timeout error                           */
0205 #define HAL_DMA_ERROR_PARAM           (0x00000040U)    /*!< Parameter error                         */
0206 #define HAL_DMA_ERROR_NO_XFER         (0x00000080U)    /*!< Abort requested with no Xfer ongoing    */
0207 #define HAL_DMA_ERROR_NOT_SUPPORTED   (0x00000100U)    /*!< Not supported mode                      */
0208 #define HAL_DMA_ERROR_SYNC            (0x00000200U)    /*!< DMAMUX sync overrun  error              */
0209 #define HAL_DMA_ERROR_REQGEN          (0x00000400U)    /*!< DMAMUX request generator overrun  error */
0210 #define HAL_DMA_ERROR_BUSY            (0x00000800U)    /*!< DMA Busy                          error */
0211 
0212 /**
0213   * @}
0214   */
0215 
0216 /** @defgroup DMA_Request_selection DMA Request selection
0217   * @ingroup RTEMSBSPsARMSTM32H7
0218   * @brief    DMA Request selection
0219   * @{
0220   */
0221 /* DMAMUX1 requests */
0222 #define DMA_REQUEST_MEM2MEM          0U  /*!< memory to memory transfer   */
0223 
0224 #define DMA_REQUEST_GENERATOR0       1U  /*!< DMAMUX1 request generator 0 */
0225 #define DMA_REQUEST_GENERATOR1       2U  /*!< DMAMUX1 request generator 1 */
0226 #define DMA_REQUEST_GENERATOR2       3U  /*!< DMAMUX1 request generator 2 */
0227 #define DMA_REQUEST_GENERATOR3       4U  /*!< DMAMUX1 request generator 3 */
0228 #define DMA_REQUEST_GENERATOR4       5U  /*!< DMAMUX1 request generator 4 */
0229 #define DMA_REQUEST_GENERATOR5       6U  /*!< DMAMUX1 request generator 5 */
0230 #define DMA_REQUEST_GENERATOR6       7U  /*!< DMAMUX1 request generator 6 */
0231 #define DMA_REQUEST_GENERATOR7       8U  /*!< DMAMUX1 request generator 7 */
0232 
0233 #define DMA_REQUEST_ADC1             9U  /*!< DMAMUX1 ADC1 request */
0234 #define DMA_REQUEST_ADC2             10U /*!< DMAMUX1 ADC2 request */
0235 
0236 #define DMA_REQUEST_TIM1_CH1         11U  /*!< DMAMUX1 TIM1 CH1 request  */
0237 #define DMA_REQUEST_TIM1_CH2         12U  /*!< DMAMUX1 TIM1 CH2 request  */
0238 #define DMA_REQUEST_TIM1_CH3         13U  /*!< DMAMUX1 TIM1 CH3 request  */
0239 #define DMA_REQUEST_TIM1_CH4         14U  /*!< DMAMUX1 TIM1 CH4 request  */
0240 #define DMA_REQUEST_TIM1_UP          15U  /*!< DMAMUX1 TIM1 UP request   */
0241 #define DMA_REQUEST_TIM1_TRIG        16U  /*!< DMAMUX1 TIM1 TRIG request */
0242 #define DMA_REQUEST_TIM1_COM         17U  /*!< DMAMUX1 TIM1 COM request  */
0243 
0244 #define DMA_REQUEST_TIM2_CH1         18U  /*!< DMAMUX1 TIM2 CH1 request  */
0245 #define DMA_REQUEST_TIM2_CH2         19U  /*!< DMAMUX1 TIM2 CH2 request  */
0246 #define DMA_REQUEST_TIM2_CH3         20U  /*!< DMAMUX1 TIM2 CH3 request  */
0247 #define DMA_REQUEST_TIM2_CH4         21U  /*!< DMAMUX1 TIM2 CH4 request  */
0248 #define DMA_REQUEST_TIM2_UP          22U  /*!< DMAMUX1 TIM2 UP request   */
0249 
0250 #define DMA_REQUEST_TIM3_CH1         23U  /*!< DMAMUX1 TIM3 CH1 request  */
0251 #define DMA_REQUEST_TIM3_CH2         24U  /*!< DMAMUX1 TIM3 CH2 request  */
0252 #define DMA_REQUEST_TIM3_CH3         25U  /*!< DMAMUX1 TIM3 CH3 request  */
0253 #define DMA_REQUEST_TIM3_CH4         26U  /*!< DMAMUX1 TIM3 CH4 request  */
0254 #define DMA_REQUEST_TIM3_UP          27U  /*!< DMAMUX1 TIM3 UP request   */
0255 #define DMA_REQUEST_TIM3_TRIG        28U  /*!< DMAMUX1 TIM3 TRIG request */
0256 
0257 #define DMA_REQUEST_TIM4_CH1         29U  /*!< DMAMUX1 TIM4 CH1 request  */
0258 #define DMA_REQUEST_TIM4_CH2         30U  /*!< DMAMUX1 TIM4 CH2 request  */
0259 #define DMA_REQUEST_TIM4_CH3         31U  /*!< DMAMUX1 TIM4 CH3 request  */
0260 #define DMA_REQUEST_TIM4_UP          32U  /*!< DMAMUX1 TIM4 UP request   */
0261 
0262 #define DMA_REQUEST_I2C1_RX          33U  /*!< DMAMUX1 I2C1 RX request   */
0263 #define DMA_REQUEST_I2C1_TX          34U  /*!< DMAMUX1 I2C1 TX request   */
0264 #define DMA_REQUEST_I2C2_RX          35U  /*!< DMAMUX1 I2C2 RX request   */
0265 #define DMA_REQUEST_I2C2_TX          36U  /*!< DMAMUX1 I2C2 TX request   */
0266 
0267 #define DMA_REQUEST_SPI1_RX          37U  /*!< DMAMUX1 SPI1 RX request   */
0268 #define DMA_REQUEST_SPI1_TX          38U  /*!< DMAMUX1 SPI1 TX request   */
0269 #define DMA_REQUEST_SPI2_RX          39U  /*!< DMAMUX1 SPI2 RX request   */
0270 #define DMA_REQUEST_SPI2_TX          40U  /*!< DMAMUX1 SPI2 TX request   */
0271 
0272 #define DMA_REQUEST_USART1_RX        41U  /*!< DMAMUX1 USART1 RX request */
0273 #define DMA_REQUEST_USART1_TX        42U  /*!< DMAMUX1 USART1 TX request */
0274 #define DMA_REQUEST_USART2_RX        43U  /*!< DMAMUX1 USART2 RX request */
0275 #define DMA_REQUEST_USART2_TX        44U  /*!< DMAMUX1 USART2 TX request */
0276 #define DMA_REQUEST_USART3_RX        45U  /*!< DMAMUX1 USART3 RX request */
0277 #define DMA_REQUEST_USART3_TX        46U  /*!< DMAMUX1 USART3 TX request */
0278 
0279 #define DMA_REQUEST_TIM8_CH1         47U  /*!< DMAMUX1 TIM8 CH1 request  */
0280 #define DMA_REQUEST_TIM8_CH2         48U  /*!< DMAMUX1 TIM8 CH2 request  */
0281 #define DMA_REQUEST_TIM8_CH3         49U  /*!< DMAMUX1 TIM8 CH3 request  */
0282 #define DMA_REQUEST_TIM8_CH4         50U  /*!< DMAMUX1 TIM8 CH4 request  */
0283 #define DMA_REQUEST_TIM8_UP          51U  /*!< DMAMUX1 TIM8 UP request   */
0284 #define DMA_REQUEST_TIM8_TRIG        52U  /*!< DMAMUX1 TIM8 TRIG request */
0285 #define DMA_REQUEST_TIM8_COM         53U  /*!< DMAMUX1 TIM8 COM request  */
0286 
0287 #define DMA_REQUEST_TIM5_CH1         55U  /*!< DMAMUX1 TIM5 CH1 request  */
0288 #define DMA_REQUEST_TIM5_CH2         56U  /*!< DMAMUX1 TIM5 CH2 request  */
0289 #define DMA_REQUEST_TIM5_CH3         57U  /*!< DMAMUX1 TIM5 CH3 request  */
0290 #define DMA_REQUEST_TIM5_CH4         58U  /*!< DMAMUX1 TIM5 CH4 request  */
0291 #define DMA_REQUEST_TIM5_UP          59U  /*!< DMAMUX1 TIM5 UP request   */
0292 #define DMA_REQUEST_TIM5_TRIG        60U  /*!< DMAMUX1 TIM5 TRIG request */
0293 
0294 #define DMA_REQUEST_SPI3_RX          61U  /*!< DMAMUX1 SPI3 RX request   */
0295 #define DMA_REQUEST_SPI3_TX          62U  /*!< DMAMUX1 SPI3 TX request   */
0296 
0297 #define DMA_REQUEST_UART4_RX         63U  /*!< DMAMUX1 UART4 RX request */
0298 #define DMA_REQUEST_UART4_TX         64U  /*!< DMAMUX1 UART4 TX request */
0299 #define DMA_REQUEST_UART5_RX         65U  /*!< DMAMUX1 UART5 RX request */
0300 #define DMA_REQUEST_UART5_TX         66U  /*!< DMAMUX1 UART5 TX request */
0301 
0302 #define DMA_REQUEST_DAC1_CH1         67U  /*!< DMAMUX1 DAC1 Channel 1 request */
0303 #define DMA_REQUEST_DAC1_CH2         68U  /*!< DMAMUX1 DAC1 Channel 2 request */
0304 
0305 #define DMA_REQUEST_TIM6_UP          69U  /*!< DMAMUX1 TIM6 UP request   */
0306 #define DMA_REQUEST_TIM7_UP          70U  /*!< DMAMUX1 TIM7 UP request   */
0307 
0308 #define DMA_REQUEST_USART6_RX        71U  /*!< DMAMUX1 USART6 RX request */
0309 #define DMA_REQUEST_USART6_TX        72U  /*!< DMAMUX1 USART6 TX request */
0310 
0311 #define DMA_REQUEST_I2C3_RX          73U  /*!< DMAMUX1 I2C3 RX request   */
0312 #define DMA_REQUEST_I2C3_TX          74U  /*!< DMAMUX1 I2C3 TX request   */
0313 
0314 #if defined (PSSI)
0315 #define DMA_REQUEST_DCMI_PSSI        75U  /*!< DMAMUX1 DCMI/PSSI request    */
0316 #define DMA_REQUEST_DCMI             DMA_REQUEST_DCMI_PSSI /* Legacy define */
0317 #else
0318 #define DMA_REQUEST_DCMI             75U  /*!< DMAMUX1 DCMI request         */
0319 #endif /* PSSI */
0320 
0321 #define DMA_REQUEST_CRYP_IN          76U  /*!< DMAMUX1 CRYP IN request   */
0322 #define DMA_REQUEST_CRYP_OUT         77U  /*!< DMAMUX1 CRYP OUT request  */
0323 
0324 #define DMA_REQUEST_HASH_IN          78U  /*!< DMAMUX1 HASH IN request   */
0325 
0326 #define DMA_REQUEST_UART7_RX         79U  /*!< DMAMUX1 UART7 RX request  */
0327 #define DMA_REQUEST_UART7_TX         80U  /*!< DMAMUX1 UART7 TX request  */
0328 #define DMA_REQUEST_UART8_RX         81U  /*!< DMAMUX1 UART8 RX request  */
0329 #define DMA_REQUEST_UART8_TX         82U  /*!< DMAMUX1 UART8 TX request  */
0330 
0331 #define DMA_REQUEST_SPI4_RX          83U  /*!< DMAMUX1 SPI4 RX request   */
0332 #define DMA_REQUEST_SPI4_TX          84U  /*!< DMAMUX1 SPI4 TX request   */
0333 #define DMA_REQUEST_SPI5_RX          85U  /*!< DMAMUX1 SPI5 RX request   */
0334 #define DMA_REQUEST_SPI5_TX          86U  /*!< DMAMUX1 SPI5 TX request   */
0335 
0336 #define DMA_REQUEST_SAI1_A           87U  /*!< DMAMUX1 SAI1 A request    */
0337 #define DMA_REQUEST_SAI1_B           88U  /*!< DMAMUX1 SAI1 B request    */
0338 
0339 #if defined(SAI2)
0340 #define DMA_REQUEST_SAI2_A           89U  /*!< DMAMUX1 SAI2 A request    */
0341 #define DMA_REQUEST_SAI2_B           90U  /*!< DMAMUX1 SAI2 B request    */
0342 #endif /* SAI2 */
0343 
0344 #define DMA_REQUEST_SWPMI_RX         91U  /*!< DMAMUX1 SWPMI RX request  */
0345 #define DMA_REQUEST_SWPMI_TX         92U  /*!< DMAMUX1 SWPMI TX request  */
0346 
0347 #define DMA_REQUEST_SPDIF_RX_DT      93U  /*!< DMAMUX1 SPDIF RXDT request*/
0348 #define DMA_REQUEST_SPDIF_RX_CS      94U  /*!< DMAMUX1 SPDIF RXCS request*/
0349 
0350 #if defined(HRTIM1)
0351 #define DMA_REQUEST_HRTIM_MASTER     95U  /*!< DMAMUX1 HRTIM1 Master request 1 */
0352 #define DMA_REQUEST_HRTIM_TIMER_A    96U  /*!< DMAMUX1 HRTIM1 Timer A request 2 */
0353 #define DMA_REQUEST_HRTIM_TIMER_B    97U  /*!< DMAMUX1 HRTIM1 Timer B request 3 */
0354 #define DMA_REQUEST_HRTIM_TIMER_C    98U  /*!< DMAMUX1 HRTIM1 Timer C request 4 */
0355 #define DMA_REQUEST_HRTIM_TIMER_D    99U  /*!< DMAMUX1 HRTIM1 Timer D request 5 */
0356 #define DMA_REQUEST_HRTIM_TIMER_E   100U  /*!< DMAMUX1 HRTIM1 Timer E request 6*/
0357 #endif /* HRTIM1 */
0358 
0359 #define DMA_REQUEST_DFSDM1_FLT0     101U  /*!< DMAMUX1 DFSDM Filter0 request */
0360 #define DMA_REQUEST_DFSDM1_FLT1     102U  /*!< DMAMUX1 DFSDM Filter1 request */
0361 #define DMA_REQUEST_DFSDM1_FLT2     103U  /*!< DMAMUX1 DFSDM Filter2 request */
0362 #define DMA_REQUEST_DFSDM1_FLT3     104U  /*!< DMAMUX1 DFSDM Filter3 request */
0363 
0364 #define DMA_REQUEST_TIM15_CH1       105U  /*!< DMAMUX1 TIM15 CH1 request  */
0365 #define DMA_REQUEST_TIM15_UP        106U  /*!< DMAMUX1 TIM15 UP request   */
0366 #define DMA_REQUEST_TIM15_TRIG      107U  /*!< DMAMUX1 TIM15 TRIG request */
0367 #define DMA_REQUEST_TIM15_COM       108U  /*!< DMAMUX1 TIM15 COM request  */
0368 
0369 #define DMA_REQUEST_TIM16_CH1       109U  /*!< DMAMUX1 TIM16 CH1 request  */
0370 #define DMA_REQUEST_TIM16_UP        110U  /*!< DMAMUX1 TIM16 UP request   */
0371 
0372 #define DMA_REQUEST_TIM17_CH1       111U  /*!< DMAMUX1 TIM17 CH1 request  */
0373 #define DMA_REQUEST_TIM17_UP        112U  /*!< DMAMUX1 TIM17 UP request   */
0374 
0375 #if defined(SAI3)
0376 #define DMA_REQUEST_SAI3_A          113U  /*!< DMAMUX1 SAI3 A request  */
0377 #define DMA_REQUEST_SAI3_B          114U  /*!< DMAMUX1 SAI3 B request  */
0378 #endif /* SAI3 */
0379 
0380 #if defined(ADC3)
0381 #define DMA_REQUEST_ADC3            115U  /*!< DMAMUX1 ADC3 request  */
0382 #endif /* ADC3 */
0383 
0384 #if defined(UART9)
0385 #define DMA_REQUEST_UART9_RX        116U  /*!< DMAMUX1 UART9 request  */
0386 #define DMA_REQUEST_UART9_TX        117U  /*!< DMAMUX1 UART9 request  */
0387 #endif /* UART9 */
0388 
0389 #if defined(USART10)
0390 #define DMA_REQUEST_USART10_RX      118U  /*!< DMAMUX1 USART10 request  */
0391 #define DMA_REQUEST_USART10_TX      119U  /*!< DMAMUX1 USART10 request  */
0392 #endif /* USART10 */
0393 
0394 #if defined(FMAC)
0395 #define DMA_REQUEST_FMAC_READ       120U  /*!< DMAMUX1 FMAC Read request  */
0396 #define DMA_REQUEST_FMAC_WRITE      121U  /*!< DMAMUX1 FMAC Write request */
0397 #endif /* FMAC */
0398 
0399 #if defined(CORDIC)
0400 #define DMA_REQUEST_CORDIC_READ     122U  /*!< DMAMUX1 CORDIC Read request  */
0401 #define DMA_REQUEST_CORDIC_WRITE    123U  /*!< DMAMUX1 CORDIC Write request */
0402 #endif /* CORDIC */
0403 
0404 #if defined(I2C5)
0405 #define DMA_REQUEST_I2C5_RX         124U  /*!< DMAMUX1 I2C5 RX request   */
0406 #define DMA_REQUEST_I2C5_TX         125U  /*!< DMAMUX1 I2C5 TX request   */
0407 #endif /* I2C5 */
0408 
0409 #if defined(TIM23)
0410 #define DMA_REQUEST_TIM23_CH1        126U  /*!< DMAMUX1 TIM23 CH1 request  */
0411 #define DMA_REQUEST_TIM23_CH2        127U  /*!< DMAMUX1 TIM23 CH2 request  */
0412 #define DMA_REQUEST_TIM23_CH3        128U  /*!< DMAMUX1 TIM23 CH3 request  */
0413 #define DMA_REQUEST_TIM23_CH4        129U  /*!< DMAMUX1 TIM23 CH4 request  */
0414 #define DMA_REQUEST_TIM23_UP         130U  /*!< DMAMUX1 TIM23 UP request   */
0415 #define DMA_REQUEST_TIM23_TRIG       131U  /*!< DMAMUX1 TIM23 TRIG request */
0416 #endif /* TIM23 */
0417 
0418 #if defined(TIM24)
0419 #define DMA_REQUEST_TIM24_CH1        132U  /*!< DMAMUX1 TIM24 CH1 request  */
0420 #define DMA_REQUEST_TIM24_CH2        133U  /*!< DMAMUX1 TIM24 CH2 request  */
0421 #define DMA_REQUEST_TIM24_CH3        134U  /*!< DMAMUX1 TIM24 CH3 request  */
0422 #define DMA_REQUEST_TIM24_CH4        135U  /*!< DMAMUX1 TIM24 CH4 request  */
0423 #define DMA_REQUEST_TIM24_UP         136U  /*!< DMAMUX1 TIM24 UP request   */
0424 #define DMA_REQUEST_TIM24_TRIG       137U  /*!< DMAMUX1 TIM24 TRIG request */
0425 #endif /* TIM24 */
0426 
0427 /* DMAMUX2 requests */
0428 #define BDMA_REQUEST_MEM2MEM          0U  /*!< memory to memory transfer   */
0429 #define BDMA_REQUEST_GENERATOR0       1U  /*!< DMAMUX2 request generator 0 */
0430 #define BDMA_REQUEST_GENERATOR1       2U  /*!< DMAMUX2 request generator 1 */
0431 #define BDMA_REQUEST_GENERATOR2       3U  /*!< DMAMUX2 request generator 2 */
0432 #define BDMA_REQUEST_GENERATOR3       4U  /*!< DMAMUX2 request generator 3 */
0433 #define BDMA_REQUEST_GENERATOR4       5U  /*!< DMAMUX2 request generator 4 */
0434 #define BDMA_REQUEST_GENERATOR5       6U  /*!< DMAMUX2 request generator 5 */
0435 #define BDMA_REQUEST_GENERATOR6       7U  /*!< DMAMUX2 request generator 6 */
0436 #define BDMA_REQUEST_GENERATOR7       8U  /*!< DMAMUX2 request generator 7 */
0437 #define BDMA_REQUEST_LPUART1_RX       9U  /*!< DMAMUX2 LP_UART1_RX request */
0438 #define BDMA_REQUEST_LPUART1_TX      10U  /*!< DMAMUX2 LP_UART1_TX request */
0439 #define BDMA_REQUEST_SPI6_RX         11U  /*!< DMAMUX2 SPI6 RX request     */
0440 #define BDMA_REQUEST_SPI6_TX         12U  /*!< DMAMUX2 SPI6 TX request     */
0441 #define BDMA_REQUEST_I2C4_RX         13U  /*!< DMAMUX2 I2C4 RX request     */
0442 #define BDMA_REQUEST_I2C4_TX         14U  /*!< DMAMUX2 I2C4 TX request     */
0443 #if defined(SAI4)
0444 #define BDMA_REQUEST_SAI4_A          15U  /*!< DMAMUX2 SAI4 A request      */
0445 #define BDMA_REQUEST_SAI4_B          16U  /*!< DMAMUX2 SAI4 B request      */
0446 #endif /* SAI4 */
0447 #if defined(ADC3)
0448 #define BDMA_REQUEST_ADC3            17U  /*!< DMAMUX2 ADC3 request        */
0449 #endif /* ADC3 */
0450 #if defined(DAC2)
0451 #define BDMA_REQUEST_DAC2_CH1        17U  /*!< DMAMUX2 DAC2 CH1 request    */
0452 #endif /* DAC2 */
0453 #if defined(DFSDM2_Channel0)
0454 #define BDMA_REQUEST_DFSDM2_FLT0     18U  /*!< DMAMUX2 DFSDM2 request      */
0455 #endif /* DFSDM1_Channel0 */
0456 
0457 /**
0458   * @}
0459   */
0460 
0461 /** @defgroup DMA_Data_transfer_direction DMA Data transfer direction
0462   * @ingroup RTEMSBSPsARMSTM32H7
0463   * @brief    DMA data transfer direction
0464   * @{
0465   */
0466 #define DMA_PERIPH_TO_MEMORY         ((uint32_t)0x00000000U)      /*!< Peripheral to memory direction */
0467 #define DMA_MEMORY_TO_PERIPH         ((uint32_t)DMA_SxCR_DIR_0)  /*!< Memory to peripheral direction */
0468 #define DMA_MEMORY_TO_MEMORY         ((uint32_t)DMA_SxCR_DIR_1)  /*!< Memory to memory direction     */
0469 /**
0470   * @}
0471   */
0472 
0473 /** @defgroup DMA_Peripheral_incremented_mode DMA Peripheral incremented mode
0474   * @ingroup RTEMSBSPsARMSTM32H7
0475   * @brief    DMA peripheral incremented mode
0476   * @{
0477   */
0478 #define DMA_PINC_ENABLE        ((uint32_t)DMA_SxCR_PINC)  /*!< Peripheral increment mode enable  */
0479 #define DMA_PINC_DISABLE       ((uint32_t)0x00000000U)     /*!< Peripheral increment mode disable */
0480 /**
0481   * @}
0482   */
0483 
0484 /** @defgroup DMA_Memory_incremented_mode DMA Memory incremented mode
0485   * @ingroup RTEMSBSPsARMSTM32H7
0486   * @brief    DMA memory incremented mode
0487   * @{
0488   */
0489 #define DMA_MINC_ENABLE         ((uint32_t)DMA_SxCR_MINC)  /*!< Memory increment mode enable  */
0490 #define DMA_MINC_DISABLE        ((uint32_t)0x00000000U)     /*!< Memory increment mode disable */
0491 /**
0492   * @}
0493   */
0494 
0495 /** @defgroup DMA_Peripheral_data_size DMA Peripheral data size
0496   * @ingroup RTEMSBSPsARMSTM32H7
0497   * @brief    DMA peripheral data size
0498   * @{
0499   */
0500 #define DMA_PDATAALIGN_BYTE          ((uint32_t)0x00000000U)       /*!< Peripheral data alignment: Byte      */
0501 #define DMA_PDATAALIGN_HALFWORD      ((uint32_t)DMA_SxCR_PSIZE_0)  /*!< Peripheral data alignment: HalfWord  */
0502 #define DMA_PDATAALIGN_WORD          ((uint32_t)DMA_SxCR_PSIZE_1)  /*!< Peripheral data alignment: Word      */
0503 /**
0504   * @}
0505   */
0506 
0507 /** @defgroup DMA_Memory_data_size DMA Memory data size
0508   * @ingroup RTEMSBSPsARMSTM32H7
0509   * @brief    DMA memory data size
0510   * @{
0511   */
0512 #define DMA_MDATAALIGN_BYTE          ((uint32_t)0x00000000U)       /*!< Memory data alignment: Byte     */
0513 #define DMA_MDATAALIGN_HALFWORD      ((uint32_t)DMA_SxCR_MSIZE_0)  /*!< Memory data alignment: HalfWord */
0514 #define DMA_MDATAALIGN_WORD          ((uint32_t)DMA_SxCR_MSIZE_1)  /*!< Memory data alignment: Word     */
0515 /**
0516   * @}
0517   */
0518 
0519 /** @defgroup DMA_mode DMA mode
0520   * @ingroup RTEMSBSPsARMSTM32H7
0521   * @brief    DMA mode
0522   * @{
0523   */
0524 #define DMA_NORMAL              ((uint32_t)0x00000000U)                  /*!< Normal mode                                    */
0525 #define DMA_CIRCULAR            ((uint32_t)DMA_SxCR_CIRC)                /*!< Circular mode                                  */
0526 #define DMA_PFCTRL              ((uint32_t)DMA_SxCR_PFCTRL)              /*!< Peripheral flow control mode                   */
0527 #define DMA_DOUBLE_BUFFER_M0    ((uint32_t)DMA_SxCR_DBM)                 /*!< Double buffer mode with first target memory M0 */
0528 #define DMA_DOUBLE_BUFFER_M1    ((uint32_t)(DMA_SxCR_DBM | DMA_SxCR_CT)) /*!< Double buffer mode with first target memory M1 */
0529 /**
0530   * @}
0531   */
0532 
0533 /** @defgroup DMA_Priority_level DMA Priority level
0534   * @ingroup RTEMSBSPsARMSTM32H7
0535   * @brief    DMA priority levels
0536   * @{
0537   */
0538 #define DMA_PRIORITY_LOW             ((uint32_t)0x00000000U)    /*!< Priority level: Low       */
0539 #define DMA_PRIORITY_MEDIUM          ((uint32_t)DMA_SxCR_PL_0)  /*!< Priority level: Medium    */
0540 #define DMA_PRIORITY_HIGH            ((uint32_t)DMA_SxCR_PL_1)  /*!< Priority level: High      */
0541 #define DMA_PRIORITY_VERY_HIGH       ((uint32_t)DMA_SxCR_PL)    /*!< Priority level: Very High */
0542 /**
0543   * @}
0544   */
0545 
0546 /** @defgroup DMA_FIFO_direct_mode DMA FIFO direct mode
0547   * @ingroup RTEMSBSPsARMSTM32H7
0548   * @brief    DMA FIFO direct mode
0549   * @{
0550   */
0551 #define DMA_FIFOMODE_DISABLE        ((uint32_t)0x00000000U)       /*!< FIFO mode disable */
0552 #define DMA_FIFOMODE_ENABLE         ((uint32_t)DMA_SxFCR_DMDIS)  /*!< FIFO mode enable  */
0553 /**
0554   * @}
0555   */
0556 
0557 /** @defgroup DMA_FIFO_threshold_level DMA FIFO threshold level
0558   * @ingroup RTEMSBSPsARMSTM32H7
0559   * @brief    DMA FIFO level
0560   * @{
0561   */
0562 #define DMA_FIFO_THRESHOLD_1QUARTERFULL       ((uint32_t)0x00000000U)       /*!< FIFO threshold 1 quart full configuration  */
0563 #define DMA_FIFO_THRESHOLD_HALFFULL           ((uint32_t)DMA_SxFCR_FTH_0)  /*!< FIFO threshold half full configuration     */
0564 #define DMA_FIFO_THRESHOLD_3QUARTERSFULL      ((uint32_t)DMA_SxFCR_FTH_1)  /*!< FIFO threshold 3 quarts full configuration */
0565 #define DMA_FIFO_THRESHOLD_FULL               ((uint32_t)DMA_SxFCR_FTH)    /*!< FIFO threshold full configuration          */
0566 /**
0567   * @}
0568   */
0569 
0570 /** @defgroup DMA_Memory_burst DMA Memory burst
0571   * @ingroup RTEMSBSPsARMSTM32H7
0572   * @brief    DMA memory burst
0573   * @{
0574   */
0575 #define DMA_MBURST_SINGLE       ((uint32_t)0x00000000U)
0576 #define DMA_MBURST_INC4         ((uint32_t)DMA_SxCR_MBURST_0)
0577 #define DMA_MBURST_INC8         ((uint32_t)DMA_SxCR_MBURST_1)
0578 #define DMA_MBURST_INC16        ((uint32_t)DMA_SxCR_MBURST)
0579 /**
0580   * @}
0581   */
0582 
0583 /** @defgroup DMA_Peripheral_burst DMA Peripheral burst
0584   * @ingroup RTEMSBSPsARMSTM32H7
0585   * @brief    DMA peripheral burst
0586   * @{
0587   */
0588 #define DMA_PBURST_SINGLE       ((uint32_t)0x00000000U)
0589 #define DMA_PBURST_INC4         ((uint32_t)DMA_SxCR_PBURST_0)
0590 #define DMA_PBURST_INC8         ((uint32_t)DMA_SxCR_PBURST_1)
0591 #define DMA_PBURST_INC16        ((uint32_t)DMA_SxCR_PBURST)
0592 /**
0593   * @}
0594   */
0595 
0596 /** @defgroup DMA_interrupt_enable_definitions DMA interrupt enable definitions
0597   * @ingroup RTEMSBSPsARMSTM32H7
0598   * @brief    DMA interrupts definition
0599   * @{
0600   */
0601 #define DMA_IT_TC                         ((uint32_t)DMA_SxCR_TCIE)
0602 #define DMA_IT_HT                         ((uint32_t)DMA_SxCR_HTIE)
0603 #define DMA_IT_TE                         ((uint32_t)DMA_SxCR_TEIE)
0604 #define DMA_IT_DME                        ((uint32_t)DMA_SxCR_DMEIE)
0605 #define DMA_IT_FE                         ((uint32_t)0x00000080U)
0606 /**
0607   * @}
0608   */
0609 
0610 /** @defgroup DMA_flag_definitions DMA flag definitions
0611   * @ingroup RTEMSBSPsARMSTM32H7
0612   * @brief    DMA flag definitions
0613   * @{
0614   */
0615 #define DMA_FLAG_FEIF0_4                    ((uint32_t)0x00000001U)
0616 #define DMA_FLAG_DMEIF0_4                   ((uint32_t)0x00000004U)
0617 #define DMA_FLAG_TEIF0_4                    ((uint32_t)0x00000008U)
0618 #define DMA_FLAG_HTIF0_4                    ((uint32_t)0x00000010U)
0619 #define DMA_FLAG_TCIF0_4                    ((uint32_t)0x00000020U)
0620 #define DMA_FLAG_FEIF1_5                    ((uint32_t)0x00000040U)
0621 #define DMA_FLAG_DMEIF1_5                   ((uint32_t)0x00000100U)
0622 #define DMA_FLAG_TEIF1_5                    ((uint32_t)0x00000200U)
0623 #define DMA_FLAG_HTIF1_5                    ((uint32_t)0x00000400U)
0624 #define DMA_FLAG_TCIF1_5                    ((uint32_t)0x00000800U)
0625 #define DMA_FLAG_FEIF2_6                    ((uint32_t)0x00010000U)
0626 #define DMA_FLAG_DMEIF2_6                   ((uint32_t)0x00040000U)
0627 #define DMA_FLAG_TEIF2_6                    ((uint32_t)0x00080000U)
0628 #define DMA_FLAG_HTIF2_6                    ((uint32_t)0x00100000U)
0629 #define DMA_FLAG_TCIF2_6                    ((uint32_t)0x00200000U)
0630 #define DMA_FLAG_FEIF3_7                    ((uint32_t)0x00400000U)
0631 #define DMA_FLAG_DMEIF3_7                   ((uint32_t)0x01000000U)
0632 #define DMA_FLAG_TEIF3_7                    ((uint32_t)0x02000000U)
0633 #define DMA_FLAG_HTIF3_7                    ((uint32_t)0x04000000U)
0634 #define DMA_FLAG_TCIF3_7                    ((uint32_t)0x08000000U)
0635 /**
0636   * @}
0637   */
0638 
0639 /** @defgroup BDMA_flag_definitions BDMA flag definitions
0640   * @ingroup RTEMSBSPsARMSTM32H7
0641   * @brief    BDMA flag definitions
0642   * @{
0643   */
0644 #define BDMA_FLAG_GL0                      ((uint32_t)0x00000001)
0645 #define BDMA_FLAG_TC0                      ((uint32_t)0x00000002)
0646 #define BDMA_FLAG_HT0                      ((uint32_t)0x00000004)
0647 #define BDMA_FLAG_TE0                      ((uint32_t)0x00000008)
0648 #define BDMA_FLAG_GL1                      ((uint32_t)0x00000010)
0649 #define BDMA_FLAG_TC1                      ((uint32_t)0x00000020)
0650 #define BDMA_FLAG_HT1                      ((uint32_t)0x00000040)
0651 #define BDMA_FLAG_TE1                      ((uint32_t)0x00000080)
0652 #define BDMA_FLAG_GL2                      ((uint32_t)0x00000100)
0653 #define BDMA_FLAG_TC2                      ((uint32_t)0x00000200)
0654 #define BDMA_FLAG_HT2                      ((uint32_t)0x00000400)
0655 #define BDMA_FLAG_TE2                      ((uint32_t)0x00000800)
0656 #define BDMA_FLAG_GL3                      ((uint32_t)0x00001000)
0657 #define BDMA_FLAG_TC3                      ((uint32_t)0x00002000)
0658 #define BDMA_FLAG_HT3                      ((uint32_t)0x00004000)
0659 #define BDMA_FLAG_TE3                      ((uint32_t)0x00008000)
0660 #define BDMA_FLAG_GL4                      ((uint32_t)0x00010000)
0661 #define BDMA_FLAG_TC4                      ((uint32_t)0x00020000)
0662 #define BDMA_FLAG_HT4                      ((uint32_t)0x00040000)
0663 #define BDMA_FLAG_TE4                      ((uint32_t)0x00080000)
0664 #define BDMA_FLAG_GL5                      ((uint32_t)0x00100000)
0665 #define BDMA_FLAG_TC5                      ((uint32_t)0x00200000)
0666 #define BDMA_FLAG_HT5                      ((uint32_t)0x00400000)
0667 #define BDMA_FLAG_TE5                      ((uint32_t)0x00800000)
0668 #define BDMA_FLAG_GL6                      ((uint32_t)0x01000000)
0669 #define BDMA_FLAG_TC6                      ((uint32_t)0x02000000)
0670 #define BDMA_FLAG_HT6                      ((uint32_t)0x04000000)
0671 #define BDMA_FLAG_TE6                      ((uint32_t)0x08000000)
0672 #define BDMA_FLAG_GL7                      ((uint32_t)0x10000000)
0673 #define BDMA_FLAG_TC7                      ((uint32_t)0x20000000)
0674 #define BDMA_FLAG_HT7                      ((uint32_t)0x40000000)
0675 #define BDMA_FLAG_TE7                      ((uint32_t)0x80000000)
0676 
0677 /**
0678   * @}
0679   */
0680 
0681 /**
0682   * @}
0683   */
0684 
0685 /* Exported macro ------------------------------------------------------------*/
0686 /** @defgroup DMA_Exported_Macros DMA Exported Macros
0687   * @ingroup RTEMSBSPsARMSTM32H7
0688   * @{
0689   */
0690 
0691 /** @brief Reset DMA handle state
0692   * @param  __HANDLE__: specifies the DMA handle.
0693   * @retval None
0694   */
0695 #define __HAL_DMA_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = HAL_DMA_STATE_RESET)
0696 
0697 /**
0698   * @brief  Return the current DMA Stream FIFO filled level.
0699   * @param  __HANDLE__: DMA handle
0700   * @retval The FIFO filling state.
0701   *           - DMA_FIFOStatus_Less1QuarterFull: when FIFO is less than 1 quarter-full
0702   *                                              and not empty.
0703   *           - DMA_FIFOStatus_1QuarterFull: if more than 1 quarter-full.
0704   *           - DMA_FIFOStatus_HalfFull: if more than 1 half-full.
0705   *           - DMA_FIFOStatus_3QuartersFull: if more than 3 quarters-full.
0706   *           - DMA_FIFOStatus_Empty: when FIFO is empty
0707   *           - DMA_FIFOStatus_Full: when FIFO is full
0708   */
0709 #define __HAL_DMA_GET_FS(__HANDLE__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR & (DMA_SxFCR_FS)) : 0)
0710 
0711 /**
0712   * @brief  Enable the specified DMA Stream.
0713   * @param  __HANDLE__: DMA handle
0714   * @retval None
0715   */
0716 #define __HAL_DMA_ENABLE(__HANDLE__) \
0717 ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR |=  DMA_SxCR_EN) : \
0718 (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR |=  BDMA_CCR_EN))
0719 
0720 /**
0721   * @brief  Disable the specified DMA Stream.
0722   * @param  __HANDLE__: DMA handle
0723   * @retval None
0724   */
0725 #define __HAL_DMA_DISABLE(__HANDLE__) \
0726 ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR &=  ~DMA_SxCR_EN) : \
0727 (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR &=  ~BDMA_CCR_EN))
0728 
0729 /* Interrupt & Flag management */
0730 
0731 /**
0732   * @brief  Return the current DMA Stream transfer complete flag.
0733   * @param  __HANDLE__: DMA handle
0734   * @retval The specified transfer complete flag index.
0735   */
0736 #if defined(BDMA1)
0737 #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \
0738 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\
0739  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\
0740  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\
0741  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\
0742  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\
0743  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\
0744  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\
0745  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\
0746  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\
0747  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\
0748  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\
0749  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\
0750  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TCIF3_7 :\
0751  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TCIF3_7 :\
0752  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TCIF3_7 :\
0753  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TCIF3_7 :\
0754  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_FLAG_TC0  :\
0755  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_FLAG_TC0  :\
0756  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_FLAG_TC1  :\
0757  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_FLAG_TC1  :\
0758  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_FLAG_TC2  :\
0759  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_FLAG_TC2  :\
0760  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_FLAG_TC3  :\
0761  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_FLAG_TC3  :\
0762  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_FLAG_TC4  :\
0763  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_FLAG_TC4  :\
0764  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_FLAG_TC5  :\
0765  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_FLAG_TC5  :\
0766  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_FLAG_TC6  :\
0767  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_FLAG_TC6  :\
0768  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_FLAG_TC7  :\
0769  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_FLAG_TC7  :\
0770  (uint32_t)0x00000000)
0771 #else
0772 #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \
0773 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TCIF0_4 :\
0774  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TCIF0_4 :\
0775  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TCIF0_4 :\
0776  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TCIF0_4 :\
0777  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TCIF1_5 :\
0778  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TCIF1_5 :\
0779  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TCIF1_5 :\
0780  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TCIF1_5 :\
0781  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TCIF2_6 :\
0782  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TCIF2_6 :\
0783  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TCIF2_6 :\
0784  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TCIF2_6 :\
0785  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TCIF3_7 :\
0786  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TCIF3_7 :\
0787  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TCIF3_7 :\
0788  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TCIF3_7 :\
0789  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_FLAG_TC0   :\
0790  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_FLAG_TC1   :\
0791  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_FLAG_TC2   :\
0792  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_FLAG_TC3   :\
0793  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_FLAG_TC4   :\
0794  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_FLAG_TC5   :\
0795  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_FLAG_TC6   :\
0796  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_FLAG_TC7   :\
0797  (uint32_t)0x00000000)
0798 #endif /* BDMA1 */
0799 
0800 /**
0801   * @brief  Return the current DMA Stream half transfer complete flag.
0802   * @param  __HANDLE__: DMA handle
0803   * @retval The specified half transfer complete flag index.
0804   */
0805 #if defined(BDMA1)
0806 #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\
0807 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\
0808  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\
0809  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\
0810  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\
0811  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\
0812  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\
0813  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\
0814  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\
0815  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\
0816  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\
0817  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\
0818  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\
0819  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_HTIF3_7 :\
0820  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_HTIF3_7 :\
0821  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_HTIF3_7 :\
0822  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_HTIF3_7 :\
0823  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_FLAG_HT0  :\
0824  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_FLAG_HT0  :\
0825  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_FLAG_HT1  :\
0826  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_FLAG_HT1  :\
0827  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_FLAG_HT2  :\
0828  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_FLAG_HT2  :\
0829  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_FLAG_HT3  :\
0830  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_FLAG_HT3  :\
0831  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_FLAG_HT4  :\
0832  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_FLAG_HT4  :\
0833  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_FLAG_HT5  :\
0834  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_FLAG_HT5  :\
0835  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_FLAG_HT6  :\
0836  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_FLAG_HT6  :\
0837  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_FLAG_HT7  :\
0838  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_FLAG_HT7  :\
0839  (uint32_t)0x00000000)
0840 #else
0841 #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\
0842 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_HTIF0_4 :\
0843  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_HTIF0_4 :\
0844  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_HTIF0_4 :\
0845  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_HTIF0_4 :\
0846  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_HTIF1_5 :\
0847  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_HTIF1_5 :\
0848  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_HTIF1_5 :\
0849  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_HTIF1_5 :\
0850  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_HTIF2_6 :\
0851  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_HTIF2_6 :\
0852  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_HTIF2_6 :\
0853  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_HTIF2_6 :\
0854  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_HTIF3_7 :\
0855  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_HTIF3_7 :\
0856  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_HTIF3_7 :\
0857  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_HTIF3_7 :\
0858  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_FLAG_HT0   :\
0859  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_FLAG_HT1   :\
0860  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_FLAG_HT2   :\
0861  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_FLAG_HT3   :\
0862  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_FLAG_HT4   :\
0863  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_FLAG_HT5   :\
0864  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_FLAG_HT6   :\
0865  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_FLAG_HT7   :\
0866  (uint32_t)0x00000000)
0867 #endif /* BDMA1 */
0868 
0869 /**
0870   * @brief  Return the current DMA Stream transfer error flag.
0871   * @param  __HANDLE__: DMA handle
0872   * @retval The specified transfer error flag index.
0873   */
0874 #if defined(BDMA1)
0875 #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\
0876 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\
0877  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\
0878  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\
0879  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\
0880  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\
0881  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\
0882  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\
0883  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\
0884  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\
0885  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\
0886  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\
0887  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\
0888  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TEIF3_7 :\
0889  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TEIF3_7 :\
0890  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TEIF3_7 :\
0891  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TEIF3_7 :\
0892  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_FLAG_TE0  :\
0893  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_FLAG_TE0  :\
0894  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_FLAG_TE1  :\
0895  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_FLAG_TE1  :\
0896  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_FLAG_TE2  :\
0897  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_FLAG_TE2  :\
0898  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_FLAG_TE3  :\
0899  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_FLAG_TE3  :\
0900  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_FLAG_TE4  :\
0901  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_FLAG_TE4  :\
0902  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_FLAG_TE5  :\
0903  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_FLAG_TE5  :\
0904  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_FLAG_TE6  :\
0905  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_FLAG_TE6  :\
0906  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_FLAG_TE7  :\
0907  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_FLAG_TE7  :\
0908  (uint32_t)0x00000000)
0909 #else
0910 #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\
0911 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_TEIF0_4 :\
0912  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_TEIF0_4 :\
0913  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_TEIF0_4 :\
0914  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_TEIF0_4 :\
0915  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_TEIF1_5 :\
0916  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_TEIF1_5 :\
0917  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_TEIF1_5 :\
0918  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_TEIF1_5 :\
0919  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_TEIF2_6 :\
0920  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_TEIF2_6 :\
0921  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_TEIF2_6 :\
0922  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_TEIF2_6 :\
0923  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_TEIF3_7 :\
0924  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_TEIF3_7 :\
0925  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_TEIF3_7 :\
0926  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_TEIF3_7 :\
0927  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_FLAG_TE0   :\
0928  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_FLAG_TE1   :\
0929  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_FLAG_TE2   :\
0930  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_FLAG_TE3   :\
0931  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_FLAG_TE4   :\
0932  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_FLAG_TE5   :\
0933  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_FLAG_TE6   :\
0934  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_FLAG_TE7   :\
0935  (uint32_t)0x00000000)
0936 #endif /* BDMA1 */
0937 
0938 /**
0939   * @brief  Return the current DMA Stream FIFO error flag.
0940   * @param  __HANDLE__: DMA handle
0941   * @retval The specified FIFO error flag index.
0942   */
0943 #define __HAL_DMA_GET_FE_FLAG_INDEX(__HANDLE__)\
0944 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_FEIF0_4 :\
0945  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_FEIF0_4 :\
0946  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_FEIF0_4 :\
0947  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_FEIF0_4 :\
0948  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_FEIF1_5 :\
0949  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_FEIF1_5 :\
0950  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_FEIF1_5 :\
0951  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_FEIF1_5 :\
0952  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_FEIF2_6 :\
0953  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_FEIF2_6 :\
0954  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_FEIF2_6 :\
0955  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_FEIF2_6 :\
0956  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_FEIF3_7 :\
0957  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_FEIF3_7 :\
0958  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_FEIF3_7 :\
0959  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_FEIF3_7 :\
0960   (uint32_t)0x00000000)
0961 
0962 /**
0963   * @brief  Return the current DMA Stream direct mode error flag.
0964   * @param  __HANDLE__: DMA handle
0965   * @retval The specified direct mode error flag index.
0966   */
0967 #define __HAL_DMA_GET_DME_FLAG_INDEX(__HANDLE__)\
0968 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream0))? DMA_FLAG_DMEIF0_4 :\
0969  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream0))? DMA_FLAG_DMEIF0_4 :\
0970  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream4))? DMA_FLAG_DMEIF0_4 :\
0971  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream4))? DMA_FLAG_DMEIF0_4 :\
0972  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream1))? DMA_FLAG_DMEIF1_5 :\
0973  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream1))? DMA_FLAG_DMEIF1_5 :\
0974  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream5))? DMA_FLAG_DMEIF1_5 :\
0975  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream5))? DMA_FLAG_DMEIF1_5 :\
0976  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream2))? DMA_FLAG_DMEIF2_6 :\
0977  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream2))? DMA_FLAG_DMEIF2_6 :\
0978  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream6))? DMA_FLAG_DMEIF2_6 :\
0979  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream6))? DMA_FLAG_DMEIF2_6 :\
0980  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream3))? DMA_FLAG_DMEIF3_7 :\
0981  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream3))? DMA_FLAG_DMEIF3_7 :\
0982  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Stream7))? DMA_FLAG_DMEIF3_7 :\
0983  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Stream7))? DMA_FLAG_DMEIF3_7 :\
0984   (uint32_t)0x00000000)
0985 
0986 /**
0987   * @brief  Returns the current BDMA Channel Global interrupt flag.
0988   * @param  __HANDLE__: DMA handle
0989   * @retval The specified transfer error flag index.
0990   */
0991 #if defined(BDMA1)
0992 #define __HAL_BDMA_GET_GI_FLAG_INDEX(__HANDLE__)\
0993 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel0))? BDMA_ISR_GIF0 :\
0994  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel0))? BDMA_ISR_GIF0 :\
0995  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel1))? BDMA_ISR_GIF1 :\
0996  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel1))? BDMA_ISR_GIF1 :\
0997  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel2))? BDMA_ISR_GIF2 :\
0998  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel2))? BDMA_ISR_GIF2 :\
0999  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel3))? BDMA_ISR_GIF3 :\
1000  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel3))? BDMA_ISR_GIF3 :\
1001  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel4))? BDMA_ISR_GIF4 :\
1002  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel4))? BDMA_ISR_GIF4 :\
1003  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel5))? BDMA_ISR_GIF5 :\
1004  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel5))? BDMA_ISR_GIF5 :\
1005  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel6))? BDMA_ISR_GIF6 :\
1006  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel6))? BDMA_ISR_GIF6 :\
1007  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA1_Channel7))? BDMA_ISR_GIF7 :\
1008  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA2_Channel7))? BDMA_ISR_GIF7 :\
1009  (uint32_t)0x00000000)
1010 #else
1011 #define __HAL_BDMA_GET_GI_FLAG_INDEX(__HANDLE__)\
1012 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel0))? BDMA_ISR_GIF0 :\
1013  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel1))? BDMA_ISR_GIF1 :\
1014  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel2))? BDMA_ISR_GIF2 :\
1015  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel3))? BDMA_ISR_GIF3 :\
1016  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel4))? BDMA_ISR_GIF4 :\
1017  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel5))? BDMA_ISR_GIF5 :\
1018  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel6))? BDMA_ISR_GIF6 :\
1019  ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)BDMA_Channel7))? BDMA_ISR_GIF7 :\
1020   (uint32_t)0x00000000)
1021 #endif /* BDMA1 */
1022 
1023 /**
1024   * @brief  Get the DMA Stream pending flags.
1025   * @param  __HANDLE__: DMA handle
1026   * @param  __FLAG__: Get the specified flag.
1027   *          This parameter can be any combination of the following values:
1028   *            @arg DMA_FLAG_TCIFx: Transfer complete flag.
1029   *            @arg DMA_FLAG_HTIFx: Half transfer complete flag.
1030   *            @arg DMA_FLAG_TEIFx: Transfer error flag.
1031   *            @arg DMA_FLAG_DMEIFx: Direct mode error flag.
1032   *            @arg DMA_FLAG_FEIFx: FIFO error flag.
1033   *         Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.
1034   * @retval The state of FLAG (SET or RESET).
1035   */
1036 #if defined(BDMA1)
1037 #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\
1038 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)BDMA1_Channel7)?  (BDMA2->ISR & (__FLAG__)) :\
1039  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7  )?  (BDMA1->ISR & (__FLAG__)) :\
1040  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3  )?  (DMA2->HISR & (__FLAG__)) :\
1041  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7  )?  (DMA2->LISR & (__FLAG__)) :\
1042  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3  )?  (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__)))
1043 #else
1044 #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\
1045 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7)? (BDMA->ISR & (__FLAG__))  :\
1046  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HISR & (__FLAG__)) :\
1047  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LISR & (__FLAG__)) :\
1048  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HISR & (__FLAG__)) : (DMA1->LISR & (__FLAG__)))
1049 #endif /* BDMA1 */
1050 
1051 /**
1052   * @brief  Clear the DMA Stream pending flags.
1053   * @param  __HANDLE__: DMA handle
1054   * @param  __FLAG__: specifies the flag to clear.
1055   *          This parameter can be any combination of the following values:
1056   *            @arg DMA_FLAG_TCIFx: Transfer complete flag.
1057   *            @arg DMA_FLAG_HTIFx: Half transfer complete flag.
1058   *            @arg DMA_FLAG_TEIFx: Transfer error flag.
1059   *            @arg DMA_FLAG_DMEIFx: Direct mode error flag.
1060   *            @arg DMA_FLAG_FEIFx: FIFO error flag.
1061   *         Where x can be 0_4, 1_5, 2_6 or 3_7 to select the DMA Stream flag.
1062   * @retval None
1063   */
1064 #if defined(BDMA1)
1065 #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \
1066 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)BDMA1_Channel7)? (BDMA2->IFCR = (__FLAG__)) :\
1067  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7)?  (BDMA1->IFCR = (__FLAG__)) :\
1068  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)?  (DMA2->HIFCR = (__FLAG__)) :\
1069  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)?  (DMA2->LIFCR = (__FLAG__)) :\
1070  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)?  (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__)))
1071 #else
1072 #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \
1073 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream7)? (BDMA->IFCR = (__FLAG__))  :\
1074  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA2_Stream3)? (DMA2->HIFCR = (__FLAG__)) :\
1075  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream7)? (DMA2->LIFCR = (__FLAG__)) :\
1076  ((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Stream3)? (DMA1->HIFCR = (__FLAG__)) : (DMA1->LIFCR = (__FLAG__)))
1077 #endif /* BDMA1 */
1078 
1079 #define DMA_TO_BDMA_IT(__DMA_IT__) \
1080 ((((__DMA_IT__) & (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)) == (DMA_IT_TC | DMA_IT_HT | DMA_IT_TE)) ? (BDMA_CCR_TCIE | BDMA_CCR_HTIE |BDMA_CCR_TEIE) :\
1081  (((__DMA_IT__) & (DMA_IT_TC | DMA_IT_HT)) == (DMA_IT_TC | DMA_IT_HT)) ? (BDMA_CCR_TCIE | BDMA_CCR_HTIE) :\
1082  (((__DMA_IT__) & (DMA_IT_HT | DMA_IT_TE)) == (DMA_IT_HT | DMA_IT_TE)) ? (BDMA_CCR_HTIE |BDMA_CCR_TEIE)  :\
1083  (((__DMA_IT__) & (DMA_IT_TC | DMA_IT_TE)) == (DMA_IT_TC | DMA_IT_TE)) ? (BDMA_CCR_TCIE |BDMA_CCR_TEIE)  :\
1084  ((__DMA_IT__) == DMA_IT_TC) ? BDMA_CCR_TCIE :\
1085  ((__DMA_IT__) == DMA_IT_HT) ? BDMA_CCR_HTIE :\
1086  ((__DMA_IT__) == DMA_IT_TE) ? BDMA_CCR_TEIE :\
1087  (uint32_t)0x00000000)
1088 
1089 
1090 #define __HAL_BDMA_CHANNEL_ENABLE_IT(__HANDLE__, __INTERRUPT__) \
1091 (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR |= (DMA_TO_BDMA_IT(__INTERRUPT__)))
1092 
1093 #define __HAL_DMA_STREAM_ENABLE_IT(__HANDLE__, __INTERRUPT__)   (((__INTERRUPT__) != DMA_IT_FE)? \
1094 (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR |= (__INTERRUPT__)) : (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR |= (__INTERRUPT__)))
1095 
1096 /**
1097   * @brief  Enable the specified DMA Stream interrupts.
1098   * @param  __HANDLE__: DMA handle
1099   * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled.
1100   *        This parameter can be one of the following values:
1101   *           @arg DMA_IT_TC: Transfer complete interrupt mask.
1102   *           @arg DMA_IT_HT: Half transfer complete interrupt mask.
1103   *           @arg DMA_IT_TE: Transfer error interrupt mask.
1104   *           @arg DMA_IT_FE: FIFO error interrupt mask.
1105   *           @arg DMA_IT_DME: Direct mode error interrupt.
1106   * @retval None
1107   */
1108 #define __HAL_DMA_ENABLE_IT(__HANDLE__, __INTERRUPT__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))?\
1109                                                         (__HAL_DMA_STREAM_ENABLE_IT((__HANDLE__), (__INTERRUPT__))) :\
1110                                                         (__HAL_BDMA_CHANNEL_ENABLE_IT((__HANDLE__), (__INTERRUPT__))))
1111 
1112 
1113 #define __HAL_BDMA_CHANNEL_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR &= ~(DMA_TO_BDMA_IT(__INTERRUPT__)))
1114 
1115 #define __HAL_DMA_STREAM_DISABLE_IT(__HANDLE__, __INTERRUPT__)  (((__INTERRUPT__) != DMA_IT_FE)? \
1116 (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR &= ~(__INTERRUPT__)) : (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR &= ~(__INTERRUPT__)))
1117 
1118 /**
1119   * @brief  Disable the specified DMA Stream interrupts.
1120   * @param  __HANDLE__: DMA handle
1121   * @param  __INTERRUPT__: specifies the DMA interrupt sources to be enabled or disabled.
1122   *         This parameter can be one of the following values:
1123   *            @arg DMA_IT_TC: Transfer complete interrupt mask.
1124   *            @arg DMA_IT_HT: Half transfer complete interrupt mask.
1125   *            @arg DMA_IT_TE: Transfer error interrupt mask.
1126   *            @arg DMA_IT_FE: FIFO error interrupt mask.
1127   *            @arg DMA_IT_DME: Direct mode error interrupt.
1128   * @retval None
1129   */
1130 #define __HAL_DMA_DISABLE_IT(__HANDLE__, __INTERRUPT__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))?\
1131                                                          (__HAL_DMA_STREAM_DISABLE_IT((__HANDLE__), (__INTERRUPT__))) :\
1132                                                          (__HAL_BDMA_CHANNEL_DISABLE_IT((__HANDLE__), (__INTERRUPT__))))
1133 
1134 
1135 #define __HAL_BDMA_CHANNEL_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  ((((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CCR & (DMA_TO_BDMA_IT(__INTERRUPT__))))
1136 
1137 #define __HAL_DMA_STREAM_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__)  (((__INTERRUPT__) != DMA_IT_FE)? \
1138                                                         (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->CR & (__INTERRUPT__)) : \
1139                                                         (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->FCR & (__INTERRUPT__)))
1140 
1141 /**
1142   * @brief  Check whether the specified DMA Stream interrupt is enabled or not.
1143   * @param  __HANDLE__: DMA handle
1144   * @param  __INTERRUPT__: specifies the DMA interrupt source to check.
1145   *         This parameter can be one of the following values:
1146   *            @arg DMA_IT_TC: Transfer complete interrupt mask.
1147   *            @arg DMA_IT_HT: Half transfer complete interrupt mask.
1148   *            @arg DMA_IT_TE: Transfer error interrupt mask.
1149   *            @arg DMA_IT_FE: FIFO error interrupt mask.
1150   *            @arg DMA_IT_DME: Direct mode error interrupt.
1151   * @retval The state of DMA_IT.
1152   */
1153 #define __HAL_DMA_GET_IT_SOURCE(__HANDLE__, __INTERRUPT__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? \
1154                                                             (__HAL_DMA_STREAM_GET_IT_SOURCE((__HANDLE__), (__INTERRUPT__))) :\
1155                                                             (__HAL_BDMA_CHANNEL_GET_IT_SOURCE((__HANDLE__), (__INTERRUPT__))))
1156 
1157 /**
1158   * @brief  Writes the number of data units to be transferred on the DMA Stream.
1159   * @param  __HANDLE__: DMA handle
1160   * @param  __COUNTER__: Number of data units to be transferred (from 0 to 65535)
1161   *          Number of data items depends only on the Peripheral data format.
1162   *
1163   * @note   If Peripheral data format is Bytes: number of data units is equal
1164   *         to total number of bytes to be transferred.
1165   *
1166   * @note   If Peripheral data format is Half-Word: number of data units is
1167   *         equal to total number of bytes to be transferred / 2.
1168   *
1169   * @note   If Peripheral data format is Word: number of data units is equal
1170   *         to total  number of bytes to be transferred / 4.
1171   *
1172   * @retval The number of remaining data units in the current DMAy Streamx transfer.
1173   */
1174 #define __HAL_DMA_SET_COUNTER(__HANDLE__, __COUNTER__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? \
1175                                                         (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->NDTR = (uint16_t)(__COUNTER__)) :\
1176                                                         (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CNDTR = (uint16_t)(__COUNTER__)))
1177 
1178 /**
1179   * @brief  Returns the number of remaining data units in the current DMAy Streamx transfer.
1180   * @param  __HANDLE__: DMA handle
1181   *
1182   * @retval The number of remaining data units in the current DMA Stream transfer.
1183   */
1184 #define __HAL_DMA_GET_COUNTER(__HANDLE__) ((IS_DMA_STREAM_INSTANCE((__HANDLE__)->Instance))? \
1185                                            (((DMA_Stream_TypeDef *)(__HANDLE__)->Instance)->NDTR) :\
1186                                            (((BDMA_Channel_TypeDef *)(__HANDLE__)->Instance)->CNDTR))
1187 
1188 /**
1189   * @}
1190   */
1191 
1192 /* Include DMA HAL Extension module */
1193 #include "stm32h7xx_hal_dma_ex.h"
1194 
1195 /* Exported functions --------------------------------------------------------*/
1196 
1197 /** @defgroup DMA_Exported_Functions DMA Exported Functions
1198   * @ingroup RTEMSBSPsARMSTM32H7
1199   * @brief    DMA Exported functions
1200   * @{
1201   */
1202 
1203 /** @defgroup DMA_Exported_Functions_Group1 Initialization and de-initialization functions
1204   * @ingroup RTEMSBSPsARMSTM32H7
1205   * @brief   Initialization and de-initialization functions
1206   * @{
1207   */
1208 HAL_StatusTypeDef HAL_DMA_Init(DMA_HandleTypeDef *hdma);
1209 HAL_StatusTypeDef HAL_DMA_DeInit(DMA_HandleTypeDef *hdma);
1210 /**
1211   * @}
1212   */
1213 
1214 /** @defgroup DMA_Exported_Functions_Group2 I/O operation functions
1215   * @ingroup RTEMSBSPsARMSTM32H7
1216   * @brief   I/O operation functions
1217   * @{
1218   */
1219 HAL_StatusTypeDef HAL_DMA_Start (DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
1220 HAL_StatusTypeDef HAL_DMA_Start_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t DataLength);
1221 HAL_StatusTypeDef HAL_DMA_Abort(DMA_HandleTypeDef *hdma);
1222 HAL_StatusTypeDef HAL_DMA_Abort_IT(DMA_HandleTypeDef *hdma);
1223 HAL_StatusTypeDef HAL_DMA_PollForTransfer(DMA_HandleTypeDef *hdma, HAL_DMA_LevelCompleteTypeDef CompleteLevel, uint32_t Timeout);
1224 void              HAL_DMA_IRQHandler(DMA_HandleTypeDef *hdma);
1225 HAL_StatusTypeDef HAL_DMA_RegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID, void (* pCallback)(DMA_HandleTypeDef *_hdma));
1226 HAL_StatusTypeDef HAL_DMA_UnRegisterCallback(DMA_HandleTypeDef *hdma, HAL_DMA_CallbackIDTypeDef CallbackID);
1227 
1228 /**
1229   * @}
1230   */
1231 
1232 /** @defgroup DMA_Exported_Functions_Group3 Peripheral State functions
1233   * @ingroup RTEMSBSPsARMSTM32H7
1234   * @brief    Peripheral State functions
1235   * @{
1236   */
1237 HAL_DMA_StateTypeDef HAL_DMA_GetState(DMA_HandleTypeDef *hdma);
1238 uint32_t             HAL_DMA_GetError(DMA_HandleTypeDef *hdma);
1239 /**
1240   * @}
1241   */
1242 /**
1243   * @}
1244   */
1245 /* Private Constants -------------------------------------------------------------*/
1246 /** @defgroup DMA_Private_Constants DMA Private Constants
1247   * @ingroup RTEMSBSPsARMSTM32H7
1248   * @brief    DMA private defines and constants
1249   * @{
1250   */
1251 /**
1252   * @}
1253   */
1254 
1255 /* Private types -------------------------------------------------------------*/
1256 /** @defgroup DMA_Private_Types DMA Private Types
1257   * @ingroup RTEMSBSPsARMSTM32H7
1258   * @{
1259   */
1260 /**
1261   * @}
1262   */
1263 
1264 /* Private macros ------------------------------------------------------------*/
1265 /** @defgroup DMA_Private_Macros DMA Private Macros
1266   * @ingroup RTEMSBSPsARMSTM32H7
1267   * @brief    DMA private macros
1268   * @{
1269   */
1270 
1271 #if defined(TIM24)
1272 #define IS_DMA_REQUEST(REQUEST) (((REQUEST) <= DMA_REQUEST_TIM24_TRIG))
1273 #elif defined(ADC3)
1274 #define IS_DMA_REQUEST(REQUEST) (((REQUEST) <= DMA_REQUEST_ADC3))
1275 #else
1276 #define IS_DMA_REQUEST(REQUEST) (((REQUEST) <= DMA_REQUEST_USART10_TX))
1277 #endif /* TIM24 */
1278 
1279 #if defined(ADC3)
1280 #define IS_BDMA_REQUEST(REQUEST) (((REQUEST) <= BDMA_REQUEST_ADC3))
1281 #else
1282 #define IS_BDMA_REQUEST(REQUEST) (((REQUEST) <= BDMA_REQUEST_DFSDM2_FLT0))
1283 #endif /* ADC3 */
1284 
1285 #define IS_DMA_DIRECTION(DIRECTION) (((DIRECTION) == DMA_PERIPH_TO_MEMORY ) || \
1286                                      ((DIRECTION) == DMA_MEMORY_TO_PERIPH)  || \
1287                                      ((DIRECTION) == DMA_MEMORY_TO_MEMORY))
1288 
1289 #define IS_DMA_BUFFER_SIZE(SIZE) (((SIZE) >= 0x01U) && ((SIZE) < 0x10000U))
1290 
1291 #define IS_DMA_PERIPHERAL_INC_STATE(STATE) (((STATE) == DMA_PINC_ENABLE) || \
1292                                             ((STATE) == DMA_PINC_DISABLE))
1293 
1294 #define IS_DMA_MEMORY_INC_STATE(STATE) (((STATE) == DMA_MINC_ENABLE)  || \
1295                                         ((STATE) == DMA_MINC_DISABLE))
1296 
1297 #define IS_DMA_PERIPHERAL_DATA_SIZE(SIZE) (((SIZE) == DMA_PDATAALIGN_BYTE)     || \
1298                                            ((SIZE) == DMA_PDATAALIGN_HALFWORD) || \
1299                                            ((SIZE) == DMA_PDATAALIGN_WORD))
1300 
1301 #define IS_DMA_MEMORY_DATA_SIZE(SIZE) (((SIZE) == DMA_MDATAALIGN_BYTE)     || \
1302                                        ((SIZE) == DMA_MDATAALIGN_HALFWORD) || \
1303                                        ((SIZE) == DMA_MDATAALIGN_WORD ))
1304 
1305 #define IS_DMA_MODE(MODE) (((MODE) == DMA_NORMAL )           || \
1306                            ((MODE) == DMA_CIRCULAR)          || \
1307                            ((MODE) == DMA_PFCTRL)            || \
1308                            ((MODE) == DMA_DOUBLE_BUFFER_M0)  || \
1309                            ((MODE) == DMA_DOUBLE_BUFFER_M1))
1310 
1311 #define IS_DMA_PRIORITY(PRIORITY) (((PRIORITY) == DMA_PRIORITY_LOW )   || \
1312                                    ((PRIORITY) == DMA_PRIORITY_MEDIUM) || \
1313                                    ((PRIORITY) == DMA_PRIORITY_HIGH)   || \
1314                                    ((PRIORITY) == DMA_PRIORITY_VERY_HIGH))
1315 
1316 #define IS_DMA_FIFO_MODE_STATE(STATE) (((STATE) == DMA_FIFOMODE_DISABLE ) || \
1317                                        ((STATE) == DMA_FIFOMODE_ENABLE))
1318 
1319 #define IS_DMA_FIFO_THRESHOLD(THRESHOLD) (((THRESHOLD) == DMA_FIFO_THRESHOLD_1QUARTERFULL ) || \
1320                                           ((THRESHOLD) == DMA_FIFO_THRESHOLD_HALFFULL)      || \
1321                                           ((THRESHOLD) == DMA_FIFO_THRESHOLD_3QUARTERSFULL) || \
1322                                           ((THRESHOLD) == DMA_FIFO_THRESHOLD_FULL))
1323 
1324 #define IS_DMA_MEMORY_BURST(BURST) (((BURST) == DMA_MBURST_SINGLE) || \
1325                                     ((BURST) == DMA_MBURST_INC4)   || \
1326                                     ((BURST) == DMA_MBURST_INC8)   || \
1327                                     ((BURST) == DMA_MBURST_INC16))
1328 
1329 #define IS_DMA_PERIPHERAL_BURST(BURST) (((BURST) == DMA_PBURST_SINGLE) || \
1330                                         ((BURST) == DMA_PBURST_INC4)   || \
1331                                         ((BURST) == DMA_PBURST_INC8)   || \
1332                                         ((BURST) == DMA_PBURST_INC16))
1333 /**
1334   * @}
1335   */
1336 
1337 /* Private functions ---------------------------------------------------------*/
1338 /** @defgroup DMA_Private_Functions DMA Private Functions
1339   * @ingroup RTEMSBSPsARMSTM32H7
1340   * @brief    DMA private  functions
1341   * @{
1342   */
1343 /**
1344   * @}
1345   */
1346 
1347 /**
1348   * @}
1349   */
1350 
1351 /**
1352   * @}
1353   */
1354 
1355 #ifdef __cplusplus
1356 }
1357 #endif
1358 
1359 #endif /* STM32H7xx_HAL_DMA_H */
1360