![]() |
|
|||
File indexing completed on 2025-05-11 08:23:35
0001 /** 0002 ****************************************************************************** 0003 * @file stm32h7xx_hal_dma_ex.h 0004 * @author MCD Application Team 0005 * @brief Header file of DMA HAL extension 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_EX_H 0021 #define STM32H7xx_HAL_DMA_EX_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 DMAEx 0035 * @{ 0036 */ 0037 0038 /* Exported types ------------------------------------------------------------*/ 0039 /** @defgroup DMAEx_Exported_Types DMAEx Exported Types 0040 * @ingroup RTEMSBSPsARMSTM32H7 0041 * @brief DMAEx Exported types 0042 * @{ 0043 */ 0044 0045 /** 0046 * @brief HAL DMA Memory definition 0047 */ 0048 typedef enum 0049 { 0050 MEMORY0 = 0x00U, /*!< Memory 0 */ 0051 MEMORY1 = 0x01U, /*!< Memory 1 */ 0052 0053 }HAL_DMA_MemoryTypeDef; 0054 0055 /** 0056 * @brief HAL DMAMUX Synchronization configuration structure definition 0057 */ 0058 typedef struct 0059 { 0060 uint32_t SyncSignalID; /*!< Specifies the synchronization signal gating the DMA request in periodic mode. 0061 This parameter can be a value of @ref DMAEx_MUX_SyncSignalID_selection */ 0062 0063 uint32_t SyncPolarity; /*!< Specifies the polarity of the signal on which the DMA request is synchronized. 0064 This parameter can be a value of @ref DMAEx_MUX_SyncPolarity_selection */ 0065 0066 FunctionalState SyncEnable; /*!< Specifies if the synchronization shall be enabled or disabled 0067 This parameter can take the value ENABLE or DISABLE*/ 0068 0069 0070 FunctionalState EventEnable; /*!< Specifies if an event shall be generated once the RequestNumber is reached. 0071 This parameter can take the value ENABLE or DISABLE */ 0072 0073 uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be authorized after a sync event. 0074 This parameters can be in the range 1 to 32 */ 0075 0076 }HAL_DMA_MuxSyncConfigTypeDef; 0077 0078 0079 /** 0080 * @brief HAL DMAMUX request generator parameters structure definition 0081 */ 0082 typedef struct 0083 { 0084 uint32_t SignalID; /*!< Specifies the ID of the signal used for DMAMUX request generator 0085 This parameter can be a value of @ref DMAEx_MUX_SignalGeneratorID_selection */ 0086 0087 uint32_t Polarity; /*!< Specifies the polarity of the signal on which the request is generated. 0088 This parameter can be a value of @ref DMAEx_MUX_RequestGeneneratorPolarity_selection */ 0089 0090 uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be generated after a signal event. 0091 This parameters can be in the range 1 to 32 */ 0092 0093 }HAL_DMA_MuxRequestGeneratorConfigTypeDef; 0094 0095 /** 0096 * @} 0097 */ 0098 0099 /* Exported constants --------------------------------------------------------*/ 0100 0101 /** @defgroup DMAEx_Exported_Constants DMA Exported Constants 0102 * @ingroup RTEMSBSPsARMSTM32H7 0103 * @brief DMAEx Exported constants 0104 * @{ 0105 */ 0106 0107 /** @defgroup DMAEx_MUX_SyncSignalID_selection DMAEx MUX SyncSignalID selection 0108 * @ingroup RTEMSBSPsARMSTM32H7 0109 * @brief DMAEx MUX SyncSignalID selection 0110 * @{ 0111 */ 0112 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT 0U /*!< DMAMUX1 synchronization Signal is DMAMUX1 Channel0 Event */ 0113 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT 1U /*!< DMAMUX1 synchronization Signal is DMAMUX1 Channel1 Event */ 0114 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH2_EVT 2U /*!< DMAMUX1 synchronization Signal is DMAMUX1 Channel2 Event */ 0115 #define HAL_DMAMUX1_SYNC_LPTIM1_OUT 3U /*!< DMAMUX1 synchronization Signal is LPTIM1 OUT */ 0116 #define HAL_DMAMUX1_SYNC_LPTIM2_OUT 4U /*!< DMAMUX1 synchronization Signal is LPTIM2 OUT */ 0117 #define HAL_DMAMUX1_SYNC_LPTIM3_OUT 5U /*!< DMAMUX1 synchronization Signal is LPTIM3 OUT */ 0118 #define HAL_DMAMUX1_SYNC_EXTI0 6U /*!< DMAMUX1 synchronization Signal is EXTI0 IT */ 0119 #define HAL_DMAMUX1_SYNC_TIM12_TRGO 7U /*!< DMAMUX1 synchronization Signal is TIM12 TRGO */ 0120 0121 #define HAL_DMAMUX2_SYNC_DMAMUX2_CH0_EVT 0U /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel0 Event */ 0122 #define HAL_DMAMUX2_SYNC_DMAMUX2_CH1_EVT 1U /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel1 Event */ 0123 #define HAL_DMAMUX2_SYNC_DMAMUX2_CH2_EVT 2U /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel2 Event */ 0124 #define HAL_DMAMUX2_SYNC_DMAMUX2_CH3_EVT 3U /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel3 Event */ 0125 #define HAL_DMAMUX2_SYNC_DMAMUX2_CH4_EVT 4U /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel4 Event */ 0126 #define HAL_DMAMUX2_SYNC_DMAMUX2_CH5_EVT 5U /*!< DMAMUX2 synchronization Signal is DMAMUX2 Channel5 Event */ 0127 #define HAL_DMAMUX2_SYNC_LPUART1_RX_WKUP 6U /*!< DMAMUX2 synchronization Signal is LPUART1 RX Wakeup */ 0128 #define HAL_DMAMUX2_SYNC_LPUART1_TX_WKUP 7U /*!< DMAMUX2 synchronization Signal is LPUART1 TX Wakeup */ 0129 #define HAL_DMAMUX2_SYNC_LPTIM2_OUT 8U /*!< DMAMUX2 synchronization Signal is LPTIM2 output */ 0130 #define HAL_DMAMUX2_SYNC_LPTIM3_OUT 9U /*!< DMAMUX2 synchronization Signal is LPTIM3 output */ 0131 #define HAL_DMAMUX2_SYNC_I2C4_WKUP 10U /*!< DMAMUX2 synchronization Signal is I2C4 Wakeup */ 0132 #define HAL_DMAMUX2_SYNC_SPI6_WKUP 11U /*!< DMAMUX2 synchronization Signal is SPI6 Wakeup */ 0133 #define HAL_DMAMUX2_SYNC_COMP1_OUT 12U /*!< DMAMUX2 synchronization Signal is Comparator 1 output */ 0134 #define HAL_DMAMUX2_SYNC_RTC_WKUP 13U /*!< DMAMUX2 synchronization Signal is RTC Wakeup */ 0135 #define HAL_DMAMUX2_SYNC_EXTI0 14U /*!< DMAMUX2 synchronization Signal is EXTI0 IT */ 0136 #define HAL_DMAMUX2_SYNC_EXTI2 15U /*!< DMAMUX2 synchronization Signal is EXTI2 IT */ 0137 0138 /** 0139 * @} 0140 */ 0141 0142 /** @defgroup DMAEx_MUX_SyncPolarity_selection DMAEx MUX SyncPolarity selection 0143 * @ingroup RTEMSBSPsARMSTM32H7 0144 * @brief DMAEx MUX SyncPolarity selection 0145 * @{ 0146 */ 0147 #define HAL_DMAMUX_SYNC_NO_EVENT 0x00000000U /*!< block synchronization events */ 0148 #define HAL_DMAMUX_SYNC_RISING DMAMUX_CxCR_SPOL_0 /*!< synchronize with rising edge events */ 0149 #define HAL_DMAMUX_SYNC_FALLING DMAMUX_CxCR_SPOL_1 /*!< synchronize with falling edge events */ 0150 #define HAL_DMAMUX_SYNC_RISING_FALLING DMAMUX_CxCR_SPOL /*!< synchronize with rising and falling edge events */ 0151 0152 /** 0153 * @} 0154 */ 0155 0156 0157 /** @defgroup DMAEx_MUX_SignalGeneratorID_selection DMAEx MUX SignalGeneratorID selection 0158 * @ingroup RTEMSBSPsARMSTM32H7 0159 * @brief DMAEx MUX SignalGeneratorID selection 0160 * @{ 0161 */ 0162 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT 0U /*!< DMAMUX1 Request generator Signal is DMAMUX1 Channel0 Event */ 0163 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT 1U /*!< DMAMUX1 Request generator Signal is DMAMUX1 Channel1 Event */ 0164 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT 2U /*!< DMAMUX1 Request generator Signal is DMAMUX1 Channel2 Event */ 0165 #define HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT 3U /*!< DMAMUX1 Request generator Signal is LPTIM1 OUT */ 0166 #define HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT 4U /*!< DMAMUX1 Request generator Signal is LPTIM2 OUT */ 0167 #define HAL_DMAMUX1_REQ_GEN_LPTIM3_OUT 5U /*!< DMAMUX1 Request generator Signal is LPTIM3 OUT */ 0168 #define HAL_DMAMUX1_REQ_GEN_EXTI0 6U /*!< DMAMUX1 Request generator Signal is EXTI0 IT */ 0169 #define HAL_DMAMUX1_REQ_GEN_TIM12_TRGO 7U /*!< DMAMUX1 Request generator Signal is TIM12 TRGO */ 0170 0171 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH0_EVT 0U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel0 Event */ 0172 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH1_EVT 1U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel1 Event */ 0173 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH2_EVT 2U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel2 Event */ 0174 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH3_EVT 3U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel3 Event */ 0175 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH4_EVT 4U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel4 Event */ 0176 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH5_EVT 5U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel5 Event */ 0177 #define HAL_DMAMUX2_REQ_GEN_DMAMUX2_CH6_EVT 6U /*!< DMAMUX2 Request generator Signal is DMAMUX2 Channel6 Event */ 0178 #define HAL_DMAMUX2_REQ_GEN_LPUART1_RX_WKUP 7U /*!< DMAMUX2 Request generator Signal is LPUART1 RX Wakeup */ 0179 #define HAL_DMAMUX2_REQ_GEN_LPUART1_TX_WKUP 8U /*!< DMAMUX2 Request generator Signal is LPUART1 TX Wakeup */ 0180 #define HAL_DMAMUX2_REQ_GEN_LPTIM2_WKUP 9U /*!< DMAMUX2 Request generator Signal is LPTIM2 Wakeup */ 0181 #define HAL_DMAMUX2_REQ_GEN_LPTIM2_OUT 10U /*!< DMAMUX2 Request generator Signal is LPTIM2 OUT */ 0182 #define HAL_DMAMUX2_REQ_GEN_LPTIM3_WKUP 11U /*!< DMAMUX2 Request generator Signal is LPTIM3 Wakeup */ 0183 #define HAL_DMAMUX2_REQ_GEN_LPTIM3_OUT 12U /*!< DMAMUX2 Request generator Signal is LPTIM3 OUT */ 0184 #if defined(LPTIM4) 0185 #define HAL_DMAMUX2_REQ_GEN_LPTIM4_WKUP 13U /*!< DMAMUX2 Request generator Signal is LPTIM4 Wakeup */ 0186 #endif /* LPTIM4 */ 0187 #if defined(LPTIM5) 0188 #define HAL_DMAMUX2_REQ_GEN_LPTIM5_WKUP 14U /*!< DMAMUX2 Request generator Signal is LPTIM5 Wakeup */ 0189 #endif /* LPTIM5 */ 0190 #define HAL_DMAMUX2_REQ_GEN_I2C4_WKUP 15U /*!< DMAMUX2 Request generator Signal is I2C4 Wakeup */ 0191 #define HAL_DMAMUX2_REQ_GEN_SPI6_WKUP 16U /*!< DMAMUX2 Request generator Signal is SPI6 Wakeup */ 0192 #define HAL_DMAMUX2_REQ_GEN_COMP1_OUT 17U /*!< DMAMUX2 Request generator Signal is Comparator 1 output */ 0193 #define HAL_DMAMUX2_REQ_GEN_COMP2_OUT 18U /*!< DMAMUX2 Request generator Signal is Comparator 2 output */ 0194 #define HAL_DMAMUX2_REQ_GEN_RTC_WKUP 19U /*!< DMAMUX2 Request generator Signal is RTC Wakeup */ 0195 #define HAL_DMAMUX2_REQ_GEN_EXTI0 20U /*!< DMAMUX2 Request generator Signal is EXTI0 */ 0196 #define HAL_DMAMUX2_REQ_GEN_EXTI2 21U /*!< DMAMUX2 Request generator Signal is EXTI2 */ 0197 #define HAL_DMAMUX2_REQ_GEN_I2C4_IT_EVT 22U /*!< DMAMUX2 Request generator Signal is I2C4 IT Event */ 0198 #define HAL_DMAMUX2_REQ_GEN_SPI6_IT 23U /*!< DMAMUX2 Request generator Signal is SPI6 IT */ 0199 #define HAL_DMAMUX2_REQ_GEN_LPUART1_TX_IT 24U /*!< DMAMUX2 Request generator Signal is LPUART1 Tx IT */ 0200 #define HAL_DMAMUX2_REQ_GEN_LPUART1_RX_IT 25U /*!< DMAMUX2 Request generator Signal is LPUART1 Rx IT */ 0201 #if defined(ADC3) 0202 #define HAL_DMAMUX2_REQ_GEN_ADC3_IT 26U /*!< DMAMUX2 Request generator Signal is ADC3 IT */ 0203 #define HAL_DMAMUX2_REQ_GEN_ADC3_AWD1_OUT 27U /*!< DMAMUX2 Request generator Signal is ADC3 Analog Watchdog 1 output */ 0204 #endif /* ADC3 */ 0205 #define HAL_DMAMUX2_REQ_GEN_BDMA_CH0_IT 28U /*!< DMAMUX2 Request generator Signal is BDMA Channel 0 IT */ 0206 #define HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT 29U /*!< DMAMUX2 Request generator Signal is BDMA Channel 1 IT */ 0207 0208 0209 /** 0210 * @} 0211 */ 0212 0213 /** @defgroup DMAEx_MUX_RequestGeneneratorPolarity_selection DMAEx MUX RequestGeneneratorPolarity selection 0214 * @ingroup RTEMSBSPsARMSTM32H7 0215 * @brief DMAEx MUX RequestGeneneratorPolarity selection 0216 * @{ 0217 */ 0218 #define HAL_DMAMUX_REQ_GEN_NO_EVENT 0x00000000U /*!< block request generator events */ 0219 #define HAL_DMAMUX_REQ_GEN_RISING DMAMUX_RGxCR_GPOL_0 /*!< generate request on rising edge events */ 0220 #define HAL_DMAMUX_REQ_GEN_FALLING DMAMUX_RGxCR_GPOL_1 /*!< generate request on falling edge events */ 0221 #define HAL_DMAMUX_REQ_GEN_RISING_FALLING DMAMUX_RGxCR_GPOL /*!< generate request on rising and falling edge events */ 0222 0223 /** 0224 * @} 0225 */ 0226 0227 /** 0228 * @} 0229 */ 0230 0231 /* Exported functions --------------------------------------------------------*/ 0232 /** @defgroup DMAEx_Exported_Functions DMAEx Exported Functions 0233 * @ingroup RTEMSBSPsARMSTM32H7 0234 * @brief DMAEx Exported functions 0235 * @{ 0236 */ 0237 0238 /** @defgroup DMAEx_Exported_Functions_Group1 Extended features functions 0239 * @ingroup RTEMSBSPsARMSTM32H7 0240 * @brief Extended features functions 0241 * @{ 0242 */ 0243 0244 /* IO operation functions *******************************************************/ 0245 HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength); 0246 HAL_StatusTypeDef HAL_DMAEx_MultiBufferStart_IT(DMA_HandleTypeDef *hdma, uint32_t SrcAddress, uint32_t DstAddress, uint32_t SecondMemAddress, uint32_t DataLength); 0247 HAL_StatusTypeDef HAL_DMAEx_ChangeMemory(DMA_HandleTypeDef *hdma, uint32_t Address, HAL_DMA_MemoryTypeDef memory); 0248 HAL_StatusTypeDef HAL_DMAEx_ConfigMuxSync(DMA_HandleTypeDef *hdma, HAL_DMA_MuxSyncConfigTypeDef *pSyncConfig); 0249 HAL_StatusTypeDef HAL_DMAEx_ConfigMuxRequestGenerator (DMA_HandleTypeDef *hdma, HAL_DMA_MuxRequestGeneratorConfigTypeDef *pRequestGeneratorConfig); 0250 HAL_StatusTypeDef HAL_DMAEx_EnableMuxRequestGenerator (DMA_HandleTypeDef *hdma); 0251 HAL_StatusTypeDef HAL_DMAEx_DisableMuxRequestGenerator (DMA_HandleTypeDef *hdma); 0252 0253 void HAL_DMAEx_MUX_IRQHandler(DMA_HandleTypeDef *hdma); 0254 /** 0255 * @} 0256 */ 0257 /** 0258 * @} 0259 */ 0260 0261 /* Private macros ------------------------------------------------------------*/ 0262 /** @defgroup DMAEx_Private_Macros DMA Private Macros 0263 * @ingroup RTEMSBSPsARMSTM32H7 0264 * @brief DMAEx private macros 0265 * @{ 0266 */ 0267 0268 #define IS_DMA_DMAMUX_SYNC_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX1_SYNC_TIM12_TRGO) 0269 #define IS_BDMA_DMAMUX_SYNC_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX2_SYNC_EXTI2) 0270 0271 #define IS_DMAMUX_SYNC_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0U) && ((REQUEST_NUMBER) <= 32U)) 0272 0273 #define IS_DMAMUX_SYNC_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_SYNC_NO_EVENT) || \ 0274 ((POLARITY) == HAL_DMAMUX_SYNC_RISING) || \ 0275 ((POLARITY) == HAL_DMAMUX_SYNC_FALLING) || \ 0276 ((POLARITY) == HAL_DMAMUX_SYNC_RISING_FALLING)) 0277 0278 #define IS_DMAMUX_SYNC_STATE(SYNC) (((SYNC) == DISABLE) || ((SYNC) == ENABLE)) 0279 0280 #define IS_DMAMUX_SYNC_EVENT(EVENT) (((EVENT) == DISABLE) || \ 0281 ((EVENT) == ENABLE)) 0282 0283 #define IS_DMA_DMAMUX_REQUEST_GEN_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX1_REQ_GEN_TIM12_TRGO) 0284 #define IS_BDMA_DMAMUX_REQUEST_GEN_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX2_REQ_GEN_BDMA_CH1_IT) 0285 0286 #define IS_DMAMUX_REQUEST_GEN_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0U) && ((REQUEST_NUMBER) <= 32U)) 0287 0288 #define IS_DMAMUX_REQUEST_GEN_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_REQ_GEN_NO_EVENT) || \ 0289 ((POLARITY) == HAL_DMAMUX_REQ_GEN_RISING) || \ 0290 ((POLARITY) == HAL_DMAMUX_REQ_GEN_FALLING) || \ 0291 ((POLARITY) == HAL_DMAMUX_REQ_GEN_RISING_FALLING)) 0292 0293 /** 0294 * @} 0295 */ 0296 0297 /* Private functions ---------------------------------------------------------*/ 0298 /** @defgroup DMAEx_Private_Functions DMAEx Private Functions 0299 * @ingroup RTEMSBSPsARMSTM32H7 0300 * @brief DMAEx Private functions 0301 * @{ 0302 */ 0303 /** 0304 * @} 0305 */ 0306 0307 /** 0308 * @} 0309 */ 0310 0311 /** 0312 * @} 0313 */ 0314 0315 #ifdef __cplusplus 0316 } 0317 #endif 0318 0319 #endif /* STM32H7xx_HAL_DMA_H */ 0320
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |