STM32F103xB HAL User Manual
|
00001 /** 00002 ****************************************************************************** 00003 * @file stm32f1xx_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) 2016 STMicroelectronics. 00010 * All rights reserved.</center></h2> 00011 * 00012 * This software component is licensed by ST under BSD 3-Clause license, 00013 * the "License"; You may not use this file except in compliance with the 00014 * License. You may obtain a copy of the License at: 00015 * opensource.org/licenses/BSD-3-Clause 00016 * 00017 ****************************************************************************** 00018 */ 00019 00020 /* Define to prevent recursive inclusion -------------------------------------*/ 00021 #ifndef __STM32F1xx_HAL_DMA_EX_H 00022 #define __STM32F1xx_HAL_DMA_EX_H 00023 00024 #ifdef __cplusplus 00025 extern "C" { 00026 #endif 00027 00028 /* Includes ------------------------------------------------------------------*/ 00029 #include "stm32f1xx_hal_def.h" 00030 00031 /** @addtogroup STM32F1xx_HAL_Driver 00032 * @{ 00033 */ 00034 00035 /** @defgroup DMAEx DMAEx 00036 * @{ 00037 */ 00038 00039 /* Exported types ------------------------------------------------------------*/ 00040 /* Exported constants --------------------------------------------------------*/ 00041 /* Exported macro ------------------------------------------------------------*/ 00042 /** @defgroup DMAEx_Exported_Macros DMA Extended Exported Macros 00043 * @{ 00044 */ 00045 /* Interrupt & Flag management */ 00046 #if defined (STM32F100xE) || defined (STM32F101xE) || defined (STM32F101xG) || defined (STM32F103xE) || \ 00047 defined (STM32F103xG) || defined (STM32F105xC) || defined (STM32F107xC) 00048 /** @defgroup DMAEx_High_density_XL_density_Product_devices DMAEx High density and XL density product devices 00049 * @{ 00050 */ 00051 00052 /** 00053 * @brief Returns the current DMA Channel transfer complete flag. 00054 * @param __HANDLE__: DMA handle 00055 * @retval The specified transfer complete flag index. 00056 */ 00057 #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ 00058 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ 00059 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ 00060 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ 00061 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ 00062 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ 00063 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ 00064 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TC7 :\ 00065 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TC1 :\ 00066 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TC2 :\ 00067 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TC3 :\ 00068 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TC4 :\ 00069 DMA_FLAG_TC5) 00070 00071 /** 00072 * @brief Returns the current DMA Channel half transfer complete flag. 00073 * @param __HANDLE__: DMA handle 00074 * @retval The specified half transfer complete flag index. 00075 */ 00076 #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ 00077 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ 00078 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ 00079 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ 00080 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ 00081 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ 00082 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ 00083 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_HT7 :\ 00084 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_HT1 :\ 00085 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_HT2 :\ 00086 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_HT3 :\ 00087 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_HT4 :\ 00088 DMA_FLAG_HT5) 00089 00090 /** 00091 * @brief Returns the current DMA Channel transfer error flag. 00092 * @param __HANDLE__: DMA handle 00093 * @retval The specified transfer error flag index. 00094 */ 00095 #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ 00096 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ 00097 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ 00098 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ 00099 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ 00100 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ 00101 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ 00102 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_TE7 :\ 00103 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_TE1 :\ 00104 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_TE2 :\ 00105 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_TE3 :\ 00106 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_TE4 :\ 00107 DMA_FLAG_TE5) 00108 00109 /** 00110 * @brief Return the current DMA Channel Global interrupt flag. 00111 * @param __HANDLE__: DMA handle 00112 * @retval The specified transfer error flag index. 00113 */ 00114 #define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__)\ 00115 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GL1 :\ 00116 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GL2 :\ 00117 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GL3 :\ 00118 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GL4 :\ 00119 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_GL5 :\ 00120 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_GL6 :\ 00121 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel7))? DMA_FLAG_GL7 :\ 00122 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel1))? DMA_FLAG_GL1 :\ 00123 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel2))? DMA_FLAG_GL2 :\ 00124 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel3))? DMA_FLAG_GL3 :\ 00125 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA2_Channel4))? DMA_FLAG_GL4 :\ 00126 DMA_FLAG_GL5) 00127 00128 /** 00129 * @brief Get the DMA Channel pending flags. 00130 * @param __HANDLE__: DMA handle 00131 * @param __FLAG__: Get the specified flag. 00132 * This parameter can be any combination of the following values: 00133 * @arg DMA_FLAG_TCx: Transfer complete flag 00134 * @arg DMA_FLAG_HTx: Half transfer complete flag 00135 * @arg DMA_FLAG_TEx: Transfer error flag 00136 * Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag. 00137 * @retval The state of FLAG (SET or RESET). 00138 */ 00139 #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__)\ 00140 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->ISR & (__FLAG__)) :\ 00141 (DMA1->ISR & (__FLAG__))) 00142 00143 /** 00144 * @brief Clears the DMA Channel pending flags. 00145 * @param __HANDLE__: DMA handle 00146 * @param __FLAG__: specifies the flag to clear. 00147 * This parameter can be any combination of the following values: 00148 * @arg DMA_FLAG_TCx: Transfer complete flag 00149 * @arg DMA_FLAG_HTx: Half transfer complete flag 00150 * @arg DMA_FLAG_TEx: Transfer error flag 00151 * Where x can be 1_7 or 1_5 (depending on DMA1 or DMA2) to select the DMA Channel flag. 00152 * @retval None 00153 */ 00154 #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) \ 00155 (((uint32_t)((__HANDLE__)->Instance) > (uint32_t)DMA1_Channel7)? (DMA2->IFCR = (__FLAG__)) :\ 00156 (DMA1->IFCR = (__FLAG__))) 00157 00158 /** 00159 * @} 00160 */ 00161 00162 #else 00163 /** @defgroup DMA_Low_density_Medium_density_Product_devices DMA Low density and Medium density product devices 00164 * @{ 00165 */ 00166 00167 /** 00168 * @brief Returns the current DMA Channel transfer complete flag. 00169 * @param __HANDLE__: DMA handle 00170 * @retval The specified transfer complete flag index. 00171 */ 00172 #define __HAL_DMA_GET_TC_FLAG_INDEX(__HANDLE__) \ 00173 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TC1 :\ 00174 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TC2 :\ 00175 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TC3 :\ 00176 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TC4 :\ 00177 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TC5 :\ 00178 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TC6 :\ 00179 DMA_FLAG_TC7) 00180 00181 /** 00182 * @brief Return the current DMA Channel half transfer complete flag. 00183 * @param __HANDLE__: DMA handle 00184 * @retval The specified half transfer complete flag index. 00185 */ 00186 #define __HAL_DMA_GET_HT_FLAG_INDEX(__HANDLE__)\ 00187 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_HT1 :\ 00188 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_HT2 :\ 00189 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_HT3 :\ 00190 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_HT4 :\ 00191 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_HT5 :\ 00192 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_HT6 :\ 00193 DMA_FLAG_HT7) 00194 00195 /** 00196 * @brief Return the current DMA Channel transfer error flag. 00197 * @param __HANDLE__: DMA handle 00198 * @retval The specified transfer error flag index. 00199 */ 00200 #define __HAL_DMA_GET_TE_FLAG_INDEX(__HANDLE__)\ 00201 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_TE1 :\ 00202 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_TE2 :\ 00203 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_TE3 :\ 00204 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_TE4 :\ 00205 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_TE5 :\ 00206 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_TE6 :\ 00207 DMA_FLAG_TE7) 00208 00209 /** 00210 * @brief Return the current DMA Channel Global interrupt flag. 00211 * @param __HANDLE__: DMA handle 00212 * @retval The specified transfer error flag index. 00213 */ 00214 #define __HAL_DMA_GET_GI_FLAG_INDEX(__HANDLE__)\ 00215 (((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel1))? DMA_FLAG_GL1 :\ 00216 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel2))? DMA_FLAG_GL2 :\ 00217 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel3))? DMA_FLAG_GL3 :\ 00218 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel4))? DMA_FLAG_GL4 :\ 00219 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel5))? DMA_FLAG_GL5 :\ 00220 ((uint32_t)((__HANDLE__)->Instance) == ((uint32_t)DMA1_Channel6))? DMA_FLAG_GL6 :\ 00221 DMA_FLAG_GL7) 00222 00223 /** 00224 * @brief Get the DMA Channel pending flags. 00225 * @param __HANDLE__: DMA handle 00226 * @param __FLAG__: Get the specified flag. 00227 * This parameter can be any combination of the following values: 00228 * @arg DMA_FLAG_TCx: Transfer complete flag 00229 * @arg DMA_FLAG_HTx: Half transfer complete flag 00230 * @arg DMA_FLAG_TEx: Transfer error flag 00231 * @arg DMA_FLAG_GLx: Global interrupt flag 00232 * Where x can be 1_7 to select the DMA Channel flag. 00233 * @retval The state of FLAG (SET or RESET). 00234 */ 00235 00236 #define __HAL_DMA_GET_FLAG(__HANDLE__, __FLAG__) (DMA1->ISR & (__FLAG__)) 00237 00238 /** 00239 * @brief Clear the DMA Channel pending flags. 00240 * @param __HANDLE__: DMA handle 00241 * @param __FLAG__: specifies the flag to clear. 00242 * This parameter can be any combination of the following values: 00243 * @arg DMA_FLAG_TCx: Transfer complete flag 00244 * @arg DMA_FLAG_HTx: Half transfer complete flag 00245 * @arg DMA_FLAG_TEx: Transfer error flag 00246 * @arg DMA_FLAG_GLx: Global interrupt flag 00247 * Where x can be 1_7 to select the DMA Channel flag. 00248 * @retval None 00249 */ 00250 #define __HAL_DMA_CLEAR_FLAG(__HANDLE__, __FLAG__) (DMA1->IFCR = (__FLAG__)) 00251 00252 /** 00253 * @} 00254 */ 00255 00256 #endif 00257 00258 /** 00259 * @} 00260 */ 00261 00262 /** 00263 * @} 00264 */ 00265 00266 /** 00267 * @} 00268 */ 00269 00270 #ifdef __cplusplus 00271 } 00272 #endif /* STM32F100xE || STM32F101xE || STM32F101xG || STM32F103xE || */ 00273 /* STM32F103xG || STM32F105xC || STM32F107xC */ 00274 00275 #endif /* __STM32F1xx_HAL_DMA_H */ 00276 00277 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/