STM32L486xx HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32l4xx_hal_dma_ex.h 00004 * @author MCD Application Team 00005 * @brief Header file of DMA HAL extension module. 00006 ****************************************************************************** 00007 * @attention 00008 * 00009 * <h2><center>© COPYRIGHT(c) 2017 STMicroelectronics</center></h2> 00010 * 00011 * Redistribution and use in source and binary forms, with or without modification, 00012 * are permitted provided that the following conditions are met: 00013 * 1. Redistributions of source code must retain the above copyright notice, 00014 * this list of conditions and the following disclaimer. 00015 * 2. Redistributions in binary form must reproduce the above copyright notice, 00016 * this list of conditions and the following disclaimer in the documentation 00017 * and/or other materials provided with the distribution. 00018 * 3. Neither the name of STMicroelectronics nor the names of its contributors 00019 * may be used to endorse or promote products derived from this software 00020 * without specific prior written permission. 00021 * 00022 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 00023 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 00024 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 00025 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 00026 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 00027 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 00028 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 00029 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 00030 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 00031 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00032 * 00033 ****************************************************************************** 00034 */ 00035 00036 /* Define to prevent recursive inclusion -------------------------------------*/ 00037 #ifndef __STM32L4xx_HAL_DMA_EX_H 00038 #define __STM32L4xx_HAL_DMA_EX_H 00039 00040 #ifdef __cplusplus 00041 extern "C" { 00042 #endif 00043 00044 #if defined(DMAMUX1) 00045 00046 /* Includes ------------------------------------------------------------------*/ 00047 #include "stm32l4xx_hal_def.h" 00048 00049 /** @addtogroup STM32L4xx_HAL_Driver 00050 * @{ 00051 */ 00052 00053 /** @addtogroup DMAEx 00054 * @{ 00055 */ 00056 00057 /* Exported types ------------------------------------------------------------*/ 00058 /** @defgroup DMAEx_Exported_Types DMAEx Exported Types 00059 * @{ 00060 */ 00061 00062 /** 00063 * @brief HAL DMA Synchro definition 00064 */ 00065 00066 00067 /** 00068 * @brief HAL DMAMUX Synchronization configuration structure definition 00069 */ 00070 typedef struct 00071 { 00072 uint32_t SyncSignalID; /*!< Specifies the synchronization signal gating the DMA request in periodic mode. 00073 This parameter can be a value of @ref DMAEx_DMAMUX_SyncSignalID_selection */ 00074 00075 uint32_t SyncPolarity; /*!< Specifies the polarity of the signal on which the DMA request is synchronized. 00076 This parameter can be a value of @ref DMAEx_DMAMUX_SyncPolarity_selection */ 00077 00078 FunctionalState SyncEnable; /*!< Specifies if the synchronization shall be enabled or disabled 00079 This parameter can take the value ENABLE or DISABLE*/ 00080 00081 00082 FunctionalState EventEnable; /*!< Specifies if an event shall be generated once the RequestNumber is reached. 00083 This parameter can take the value ENABLE or DISABLE */ 00084 00085 uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be authorized after a sync event 00086 This parameter must be a number between Min_Data = 1 and Max_Data = 32 */ 00087 00088 00089 }HAL_DMA_MuxSyncConfigTypeDef; 00090 00091 00092 /** 00093 * @brief HAL DMAMUX request generator parameters structure definition 00094 */ 00095 typedef struct 00096 { 00097 uint32_t SignalID; /*!< Specifies the ID of the signal used for DMAMUX request generator 00098 This parameter can be a value of @ref DMAEx_DMAMUX_SignalGeneratorID_selection */ 00099 00100 uint32_t Polarity; /*!< Specifies the polarity of the signal on which the request is generated. 00101 This parameter can be a value of @ref DMAEx_DMAMUX_RequestGeneneratorPolarity_selection */ 00102 00103 uint32_t RequestNumber; /*!< Specifies the number of DMA request that will be generated after a signal event 00104 This parameter must be a number between Min_Data = 1 and Max_Data = 32 */ 00105 00106 }HAL_DMA_MuxRequestGeneratorConfigTypeDef; 00107 00108 /** 00109 * @} 00110 */ 00111 00112 /* Exported constants --------------------------------------------------------*/ 00113 /** @defgroup DMAEx_Exported_Constants DMAEx Exported Constants 00114 * @{ 00115 */ 00116 00117 /** @defgroup DMAEx_DMAMUX_SyncSignalID_selection DMAMUX SyncSignalID selection 00118 * @{ 00119 */ 00120 #define HAL_DMAMUX1_SYNC_EXTI0 0U /*!< Synchronization Signal is EXTI0 IT */ 00121 #define HAL_DMAMUX1_SYNC_EXTI1 1U /*!< Synchronization Signal is EXTI1 IT */ 00122 #define HAL_DMAMUX1_SYNC_EXTI2 2U /*!< Synchronization Signal is EXTI2 IT */ 00123 #define HAL_DMAMUX1_SYNC_EXTI3 3U /*!< Synchronization Signal is EXTI3 IT */ 00124 #define HAL_DMAMUX1_SYNC_EXTI4 4U /*!< Synchronization Signal is EXTI4 IT */ 00125 #define HAL_DMAMUX1_SYNC_EXTI5 5U /*!< Synchronization Signal is EXTI5 IT */ 00126 #define HAL_DMAMUX1_SYNC_EXTI6 6U /*!< Synchronization Signal is EXTI6 IT */ 00127 #define HAL_DMAMUX1_SYNC_EXTI7 7U /*!< Synchronization Signal is EXTI7 IT */ 00128 #define HAL_DMAMUX1_SYNC_EXTI8 8U /*!< Synchronization Signal is EXTI8 IT */ 00129 #define HAL_DMAMUX1_SYNC_EXTI9 9U /*!< Synchronization Signal is EXTI9 IT */ 00130 #define HAL_DMAMUX1_SYNC_EXTI10 10U /*!< Synchronization Signal is EXTI10 IT */ 00131 #define HAL_DMAMUX1_SYNC_EXTI11 11U /*!< Synchronization Signal is EXTI11 IT */ 00132 #define HAL_DMAMUX1_SYNC_EXTI12 12U /*!< Synchronization Signal is EXTI12 IT */ 00133 #define HAL_DMAMUX1_SYNC_EXTI13 13U /*!< Synchronization Signal is EXTI13 IT */ 00134 #define HAL_DMAMUX1_SYNC_EXTI14 14U /*!< Synchronization Signal is EXTI14 IT */ 00135 #define HAL_DMAMUX1_SYNC_EXTI15 15U /*!< Synchronization Signal is EXTI15 IT */ 00136 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH0_EVT 16U /*!< Synchronization Signal is DMAMUX1 Channel0 Event */ 00137 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH1_EVT 17U /*!< Synchronization Signal is DMAMUX1 Channel1 Event */ 00138 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH2_EVT 18U /*!< Synchronization Signal is DMAMUX1 Channel2 Event */ 00139 #define HAL_DMAMUX1_SYNC_DMAMUX1_CH3_EVT 19U /*!< Synchronization Signal is DMAMUX1 Channel3 Event */ 00140 #define HAL_DMAMUX1_SYNC_LPTIM1_OUT 20U /*!< Synchronization Signal is LPTIM1 OUT */ 00141 #define HAL_DMAMUX1_SYNC_LPTIM2_OUT 21U /*!< Synchronization Signal is LPTIM2 OUT */ 00142 #define HAL_DMAMUX1_SYNC_DSI_TE 22U /*!< Synchronization Signal is DSI Tearing Effect */ 00143 #define HAL_DMAMUX1_SYNC_DSI_EOT 23U /*!< Synchronization Signal is DSI End of refresh */ 00144 #define HAL_DMAMUX1_SYNC_DMA2D_EOT 24U /*!< Synchronization Signal is DMA2D End of Transfer */ 00145 #define HAL_DMAMUX1_SYNC_LDTC_IT 25U /*!< Synchronization Signal is LDTC IT */ 00146 00147 /** 00148 * @} 00149 */ 00150 00151 /** @defgroup DMAEx_DMAMUX_SyncPolarity_selection DMAMUX SyncPolarity selection 00152 * @{ 00153 */ 00154 #define HAL_DMAMUX_SYNC_NO_EVENT 0U /*!< block synchronization events */ 00155 #define HAL_DMAMUX_SYNC_RISING ((uint32_t)DMAMUX_CxCR_SPOL_0) /*!< synchronize with rising edge events */ 00156 #define HAL_DMAMUX_SYNC_FALLING ((uint32_t)DMAMUX_CxCR_SPOL_1) /*!< synchronize with falling edge events */ 00157 #define HAL_DMAMUX_SYNC_RISING_FALLING ((uint32_t)DMAMUX_CxCR_SPOL) /*!< synchronize with rising and falling edge events */ 00158 00159 /** 00160 * @} 00161 */ 00162 00163 /** @defgroup DMAEx_DMAMUX_SignalGeneratorID_selection DMAMUX SignalGeneratorID selection 00164 * @{ 00165 */ 00166 00167 #define HAL_DMAMUX1_REQ_GEN_EXTI0 0U /*!< Request generator Signal is EXTI0 IT */ 00168 #define HAL_DMAMUX1_REQ_GEN_EXTI1 1U /*!< Request generator Signal is EXTI1 IT */ 00169 #define HAL_DMAMUX1_REQ_GEN_EXTI2 2U /*!< Request generator Signal is EXTI2 IT */ 00170 #define HAL_DMAMUX1_REQ_GEN_EXTI3 3U /*!< Request generator Signal is EXTI3 IT */ 00171 #define HAL_DMAMUX1_REQ_GEN_EXTI4 4U /*!< Request generator Signal is EXTI4 IT */ 00172 #define HAL_DMAMUX1_REQ_GEN_EXTI5 5U /*!< Request generator Signal is EXTI5 IT */ 00173 #define HAL_DMAMUX1_REQ_GEN_EXTI6 6U /*!< Request generator Signal is EXTI6 IT */ 00174 #define HAL_DMAMUX1_REQ_GEN_EXTI7 7U /*!< Request generator Signal is EXTI7 IT */ 00175 #define HAL_DMAMUX1_REQ_GEN_EXTI8 8U /*!< Request generator Signal is EXTI8 IT */ 00176 #define HAL_DMAMUX1_REQ_GEN_EXTI9 9U /*!< Request generator Signal is EXTI9 IT */ 00177 #define HAL_DMAMUX1_REQ_GEN_EXTI10 10U /*!< Request generator Signal is EXTI10 IT */ 00178 #define HAL_DMAMUX1_REQ_GEN_EXTI11 11U /*!< Request generator Signal is EXTI11 IT */ 00179 #define HAL_DMAMUX1_REQ_GEN_EXTI12 12U /*!< Request generator Signal is EXTI12 IT */ 00180 #define HAL_DMAMUX1_REQ_GEN_EXTI13 13U /*!< Request generator Signal is EXTI13 IT */ 00181 #define HAL_DMAMUX1_REQ_GEN_EXTI14 14U /*!< Request generator Signal is EXTI14 IT */ 00182 #define HAL_DMAMUX1_REQ_GEN_EXTI15 15U /*!< Request generator Signal is EXTI15 IT */ 00183 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH0_EVT 16U /*!< Request generator Signal is DMAMUX1 Channel0 Event */ 00184 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH1_EVT 17U /*!< Request generator Signal is DMAMUX1 Channel1 Event */ 00185 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH2_EVT 18U /*!< Request generator Signal is DMAMUX1 Channel2 Event */ 00186 #define HAL_DMAMUX1_REQ_GEN_DMAMUX1_CH3_EVT 19U /*!< Request generator Signal is DMAMUX1 Channel3 Event */ 00187 #define HAL_DMAMUX1_REQ_GEN_LPTIM1_OUT 20U /*!< Request generator Signal is LPTIM1 OUT */ 00188 #define HAL_DMAMUX1_REQ_GEN_LPTIM2_OUT 21U /*!< Request generator Signal is LPTIM2 OUT */ 00189 #define HAL_DMAMUX1_REQ_GEN_DSI_TE 22U /*!< Request generator Signal is DSI Tearing Effect */ 00190 #define HAL_DMAMUX1_REQ_GEN_DSI_EOT 23U /*!< Request generator Signal is DSI End of refresh */ 00191 #define HAL_DMAMUX1_REQ_GEN_DMA2D_EOT 24U /*!< Request generator Signal is DMA2D End of Transfer */ 00192 #define HAL_DMAMUX1_REQ_GEN_LTDC_IT 25U /*!< Request generator Signal is LTDC IT */ 00193 00194 /** 00195 * @} 00196 */ 00197 00198 /** @defgroup DMAEx_DMAMUX_RequestGeneneratorPolarity_selection DMAMUX RequestGeneneratorPolarity selection 00199 * @{ 00200 */ 00201 #define HAL_DMAMUX_REQ_GEN_NO_EVENT 0U /*!< block request generator events */ 00202 #define HAL_DMAMUX_REQ_GEN_RISING DMAMUX_RGxCR_GPOL_0 /*!< generate request on rising edge events */ 00203 #define HAL_DMAMUX_REQ_GEN_FALLING DMAMUX_RGxCR_GPOL_1 /*!< generate request on falling edge events */ 00204 #define HAL_DMAMUX_REQ_GEN_RISING_FALLING DMAMUX_RGxCR_GPOL /*!< generate request on rising and falling edge events */ 00205 00206 /** 00207 * @} 00208 */ 00209 00210 /** 00211 * @} 00212 */ 00213 00214 /* Exported macro ------------------------------------------------------------*/ 00215 00216 /* Exported functions --------------------------------------------------------*/ 00217 /** @addtogroup DMAEx_Exported_Functions 00218 * @{ 00219 */ 00220 00221 /* IO operation functions *****************************************************/ 00222 /** @addtogroup DMAEx_Exported_Functions_Group1 00223 * @{ 00224 */ 00225 00226 /* ------------------------- REQUEST -----------------------------------------*/ 00227 HAL_StatusTypeDef HAL_DMAEx_ConfigMuxRequestGenerator (DMA_HandleTypeDef *hdma, 00228 HAL_DMA_MuxRequestGeneratorConfigTypeDef *pRequestGeneratorConfig); 00229 HAL_StatusTypeDef HAL_DMAEx_EnableMuxRequestGenerator (DMA_HandleTypeDef *hdma); 00230 HAL_StatusTypeDef HAL_DMAEx_DisableMuxRequestGenerator (DMA_HandleTypeDef *hdma); 00231 /* -------------------------------------------------------------------------- */ 00232 00233 /* ------------------------- SYNCHRO -----------------------------------------*/ 00234 HAL_StatusTypeDef HAL_DMAEx_ConfigMuxSync(DMA_HandleTypeDef *hdma, HAL_DMA_MuxSyncConfigTypeDef *pSyncConfig); 00235 /* -------------------------------------------------------------------------- */ 00236 00237 void HAL_DMAEx_MUX_IRQHandler(DMA_HandleTypeDef *hdma); 00238 00239 /** 00240 * @} 00241 */ 00242 00243 /** 00244 * @} 00245 */ 00246 00247 00248 /* Private macros ------------------------------------------------------------*/ 00249 /** @defgroup DMAEx_Private_Macros DMAEx Private Macros 00250 * @brief DMAEx private macros 00251 * @{ 00252 */ 00253 00254 #define IS_DMAMUX_SYNC_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX1_SYNC_LDTC_IT) 00255 00256 #define IS_DMAMUX_SYNC_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0) && ((REQUEST_NUMBER) <= 32)) 00257 00258 #define IS_DMAMUX_SYNC_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_SYNC_NO_EVENT) || \ 00259 ((POLARITY) == HAL_DMAMUX_SYNC_RISING) || \ 00260 ((POLARITY) == HAL_DMAMUX_SYNC_FALLING) || \ 00261 ((POLARITY) == HAL_DMAMUX_SYNC_RISING_FALLING)) 00262 00263 #define IS_DMAMUX_SYNC_STATE(SYNC) (((SYNC) == DISABLE) || ((SYNC) == ENABLE)) 00264 00265 #define IS_DMAMUX_SYNC_EVENT(EVENT) (((EVENT) == DISABLE) || \ 00266 ((EVENT) == ENABLE)) 00267 00268 #define IS_DMAMUX_REQUEST_GEN_SIGNAL_ID(SIGNAL_ID) ((SIGNAL_ID) <= HAL_DMAMUX1_REQ_GEN_LTDC_IT) 00269 00270 #define IS_DMAMUX_REQUEST_GEN_REQUEST_NUMBER(REQUEST_NUMBER) (((REQUEST_NUMBER) > 0) && ((REQUEST_NUMBER) <= 32)) 00271 00272 #define IS_DMAMUX_REQUEST_GEN_POLARITY(POLARITY) (((POLARITY) == HAL_DMAMUX_REQUEST_GEN_NO_EVENT) || \ 00273 ((POLARITY) == HAL_DMAMUX_REQUEST_GEN_RISING) || \ 00274 ((POLARITY) == HAL_DMAMUX_REQUEST_GEN_FALLING) || \ 00275 ((POLARITY) == HAL_DMAMUX_REQUEST_GEN_RISING_FALLING)) 00276 00277 /** 00278 * @} 00279 */ 00280 00281 00282 /** 00283 * @} 00284 */ 00285 00286 /** 00287 * @} 00288 */ 00289 00290 #endif /* DMAMUX1 */ 00291 00292 #ifdef __cplusplus 00293 } 00294 #endif 00295 00296 #endif /* __STM32L4xx_HAL_DMA_H */ 00297 00298 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/