Hal Drivers for L4

Dependents:   BSP OneHopeOnePrayer FINAL_AUDIO_RECORD AudioDemo

Fork of STM32L4xx_HAL_Driver by Senior Design: Sound Monitor

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers stm32l4xx_ll_dma.h Source File

stm32l4xx_ll_dma.h

Go to the documentation of this file.
00001 /**
00002   ******************************************************************************
00003   * @file    stm32l4xx_ll_dma.h
00004   * @author  MCD Application Team
00005   * @version V1.1.0
00006   * @date    16-September-2015
00007   * @brief   Header file of DMA LL module.
00008   ******************************************************************************
00009   * @attention
00010   *
00011   * <h2><center>&copy; COPYRIGHT(c) 2015 STMicroelectronics</center></h2>
00012   *
00013   * Redistribution and use in source and binary forms, with or without modification,
00014   * are permitted provided that the following conditions are met:
00015   *   1. Redistributions of source code must retain the above copyright notice,
00016   *      this list of conditions and the following disclaimer.
00017   *   2. Redistributions in binary form must reproduce the above copyright notice,
00018   *      this list of conditions and the following disclaimer in the documentation
00019   *      and/or other materials provided with the distribution.
00020   *   3. Neither the name of STMicroelectronics nor the names of its contributors
00021   *      may be used to endorse or promote products derived from this software
00022   *      without specific prior written permission.
00023   *
00024   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
00025   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
00026   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
00027   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
00028   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
00029   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
00030   * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00031   * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
00032   * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
00033   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
00034   *
00035   ******************************************************************************
00036   */
00037 
00038 /* Define to prevent recursive inclusion -------------------------------------*/
00039 #ifndef __STM32L4xx_LL_DMA_H
00040 #define __STM32L4xx_LL_DMA_H
00041 
00042 #ifdef __cplusplus
00043 extern "C" {
00044 #endif
00045 
00046 /* Includes ------------------------------------------------------------------*/
00047 #include "stm32l4xx.h"
00048 
00049 /** @addtogroup STM32L4xx_LL_Driver
00050   * @{
00051   */
00052 
00053 #if defined (DMA1) || defined (DMA2)
00054 
00055 /** @defgroup DMA_LL DMA
00056   * @{
00057   */
00058 
00059 /* Private types -------------------------------------------------------------*/
00060 /* Private variables ---------------------------------------------------------*/
00061 /** @defgroup DMA_LL_Private_Variables DMA Private Variables
00062   * @{
00063   */
00064 /* Array used to get the DMA channel register offset versus channel index LL_DMA_CHANNEL_x */
00065 static const uint8_t CHANNEL_OFFSET_TAB[] =
00066 {
00067   (uint8_t)(DMA1_Channel1_BASE - DMA1_BASE),
00068   (uint8_t)(DMA1_Channel2_BASE - DMA1_BASE),
00069   (uint8_t)(DMA1_Channel3_BASE - DMA1_BASE),
00070   (uint8_t)(DMA1_Channel4_BASE - DMA1_BASE),
00071   (uint8_t)(DMA1_Channel5_BASE - DMA1_BASE),
00072   (uint8_t)(DMA1_Channel6_BASE - DMA1_BASE),
00073   (uint8_t)(DMA1_Channel7_BASE - DMA1_BASE)
00074 };
00075 /**
00076   * @}
00077   */
00078 
00079 /* Private constants ---------------------------------------------------------*/
00080 /** @defgroup DMA_LL_Private_Constants DMA Private Constants
00081   * @{
00082   */
00083 /* Define used to get CSELR register offset */
00084 #define DMA_CSELR_OFFSET                  (uint32_t)(DMA1_CSELR_BASE - DMA1_BASE)
00085 /**
00086   * @}
00087   */
00088 
00089 /* Private macros ------------------------------------------------------------*/
00090 
00091 /* Exported types ------------------------------------------------------------*/
00092 /* Exported constants --------------------------------------------------------*/
00093 /** @defgroup DMA_LL_Exported_Constants DMA Exported Constants
00094   * @{
00095   */
00096 /** @defgroup DMA_LL_EC_CLEAR_FLAG Clear Flags Defines
00097   * @brief    Flags defines which can be used with LL_DMA_WriteReg function
00098   * @{
00099   */
00100 #define LL_DMA_IFCR_CGIF1                 DMA_IFCR_CGIF1
00101 #define LL_DMA_IFCR_CTCIF1                DMA_IFCR_CTCIF1
00102 #define LL_DMA_IFCR_CHTIF1                DMA_IFCR_CHTIF1
00103 #define LL_DMA_IFCR_CTEIF1                DMA_IFCR_CTEIF1
00104 #define LL_DMA_IFCR_CGIF2                 DMA_IFCR_CGIF2
00105 #define LL_DMA_IFCR_CTCIF2                DMA_IFCR_CTCIF2
00106 #define LL_DMA_IFCR_CHTIF2                DMA_IFCR_CHTIF2
00107 #define LL_DMA_IFCR_CTEIF2                DMA_IFCR_CTEIF2
00108 #define LL_DMA_IFCR_CGIF3                 DMA_IFCR_CGIF3
00109 #define LL_DMA_IFCR_CTCIF3                DMA_IFCR_CTCIF3
00110 #define LL_DMA_IFCR_CHTIF3                DMA_IFCR_CHTIF3
00111 #define LL_DMA_IFCR_CTEIF3                DMA_IFCR_CTEIF3
00112 #define LL_DMA_IFCR_CGIF4                 DMA_IFCR_CGIF4
00113 #define LL_DMA_IFCR_CTCIF4                DMA_IFCR_CTCIF4
00114 #define LL_DMA_IFCR_CHTIF4                DMA_IFCR_CHTIF4
00115 #define LL_DMA_IFCR_CTEIF4                DMA_IFCR_CTEIF4
00116 #define LL_DMA_IFCR_CGIF5                 DMA_IFCR_CGIF5
00117 #define LL_DMA_IFCR_CTCIF5                DMA_IFCR_CTCIF5
00118 #define LL_DMA_IFCR_CHTIF5                DMA_IFCR_CHTIF5
00119 #define LL_DMA_IFCR_CTEIF5                DMA_IFCR_CTEIF5
00120 #define LL_DMA_IFCR_CGIF6                 DMA_IFCR_CGIF6
00121 #define LL_DMA_IFCR_CTCIF6                DMA_IFCR_CTCIF6
00122 #define LL_DMA_IFCR_CHTIF6                DMA_IFCR_CHTIF6
00123 #define LL_DMA_IFCR_CTEIF6                DMA_IFCR_CTEIF6
00124 #define LL_DMA_IFCR_CGIF7                 DMA_IFCR_CGIF7
00125 #define LL_DMA_IFCR_CTCIF7                DMA_IFCR_CTCIF7
00126 #define LL_DMA_IFCR_CHTIF7                DMA_IFCR_CHTIF7
00127 #define LL_DMA_IFCR_CTEIF7                DMA_IFCR_CTEIF7
00128 /**
00129   * @}
00130   */
00131 
00132 /** @defgroup DMA_LL_EC_GET_FLAG Get Flags Defines
00133   * @brief    Flags defines which can be used with LL_DMA_ReadReg function
00134   * @{
00135   */
00136 #define LL_DMA_ISR_GIF1                   DMA_ISR_GIF1
00137 #define LL_DMA_ISR_GIF2                   DMA_ISR_GIF2
00138 #define LL_DMA_ISR_GIF3                   DMA_ISR_GIF3
00139 #define LL_DMA_ISR_GIF4                   DMA_ISR_GIF4
00140 #define LL_DMA_ISR_GIF5                   DMA_ISR_GIF5
00141 #define LL_DMA_ISR_GIF6                   DMA_ISR_GIF6
00142 #define LL_DMA_ISR_GIF7                   DMA_ISR_GIF7
00143 #define LL_DMA_ISR_TCIF1                  DMA_ISR_TCIF1
00144 #define LL_DMA_ISR_TCIF2                  DMA_ISR_TCIF2
00145 #define LL_DMA_ISR_TCIF3                  DMA_ISR_TCIF3
00146 #define LL_DMA_ISR_TCIF4                  DMA_ISR_TCIF4
00147 #define LL_DMA_ISR_TCIF5                  DMA_ISR_TCIF5
00148 #define LL_DMA_ISR_TCIF6                  DMA_ISR_TCIF6
00149 #define LL_DMA_ISR_TCIF7                  DMA_ISR_TCIF7
00150 #define LL_DMA_ISR_HTIF1                  DMA_ISR_HTIF1
00151 #define LL_DMA_ISR_HTIF2                  DMA_ISR_HTIF2
00152 #define LL_DMA_ISR_HTIF3                  DMA_ISR_HTIF3
00153 #define LL_DMA_ISR_HTIF4                  DMA_ISR_HTIF4
00154 #define LL_DMA_ISR_HTIF5                  DMA_ISR_HTIF5
00155 #define LL_DMA_ISR_HTIF6                  DMA_ISR_HTIF6
00156 #define LL_DMA_ISR_HTIF7                  DMA_ISR_HTIF7
00157 #define LL_DMA_ISR_TEIF1                  DMA_ISR_TEIF1
00158 #define LL_DMA_ISR_TEIF2                  DMA_ISR_TEIF2
00159 #define LL_DMA_ISR_TEIF3                  DMA_ISR_TEIF3
00160 #define LL_DMA_ISR_TEIF4                  DMA_ISR_TEIF4
00161 #define LL_DMA_ISR_TEIF5                  DMA_ISR_TEIF5
00162 #define LL_DMA_ISR_TEIF6                  DMA_ISR_TEIF6
00163 #define LL_DMA_ISR_TEIF7                  DMA_ISR_TEIF7
00164 /**
00165   * @}
00166   */
00167 
00168 /** @defgroup DMA_LL_EC_IT IT Defines
00169   * @brief    IT defines which can be used with LL_DMA_ReadReg and  LL_DMA_WriteReg functions
00170   * @{
00171   */
00172 #define LL_DMA_CCR_TCIE                   DMA_CCR_TCIE
00173 #define LL_DMA_CCR_HTIE                   DMA_CCR_HTIE
00174 #define LL_DMA_CCR_TEIE                   DMA_CCR_TEIE
00175 /**
00176   * @}
00177   */
00178 
00179 /** @defgroup DMA_LL_EC_CHANNEL CHANNEL
00180   * @{
00181   */
00182 #define LL_DMA_CHANNEL_1                  ((uint32_t)0x00000001)
00183 #define LL_DMA_CHANNEL_2                  ((uint32_t)0x00000002)
00184 #define LL_DMA_CHANNEL_3                  ((uint32_t)0x00000003)
00185 #define LL_DMA_CHANNEL_4                  ((uint32_t)0x00000004)
00186 #define LL_DMA_CHANNEL_5                  ((uint32_t)0x00000005)
00187 #define LL_DMA_CHANNEL_6                  ((uint32_t)0x00000006)
00188 #define LL_DMA_CHANNEL_7                  ((uint32_t)0x00000007)
00189 /**
00190   * @}
00191   */
00192 
00193 /** @defgroup DMA_LL_EC_DIRECTION DIRECTION
00194   * @{
00195   */
00196 #define LL_DMA_DIRECTION_PERIPH_TO_MEMORY ((uint32_t)0x00000000) /*!< Peripheral to memory direction */
00197 #define LL_DMA_DIRECTION_MEMORY_TO_PERIPH DMA_CCR_DIR            /*!< Memory to peripheral direction */
00198 #define LL_DMA_DIRECTION_MEMORY_TO_MEMORY DMA_CCR_MEM2MEM        /*!< Memory to memory direction     */
00199 /**
00200   * @}
00201   */
00202 
00203 /** @defgroup DMA_LL_EC_MODE MODE
00204   * @{
00205   */
00206 #define LL_DMA_MODE_NORMAL                ((uint32_t)0x00000000) /*!< Normal Mode                  */
00207 #define LL_DMA_MODE_CIRCULAR              DMA_CCR_CIRC           /*!< Circular Mode                */
00208 /**
00209   * @}
00210   */
00211 
00212 /** @defgroup DMA_LL_EC_PERIPH PERIPH
00213   * @{
00214   */
00215 #define LL_DMA_PERIPH_INCREMENT           DMA_CCR_PINC           /*!< Peripheral increment mode Enable */
00216 #define LL_DMA_PERIPH_NOINCREMENT         ((uint32_t)0x00000000) /*!< Peripheral increment mode Disable */
00217 /**
00218   * @}
00219   */
00220 
00221 /** @defgroup DMA_LL_EC_MEMORY MEMORY
00222   * @{
00223   */
00224 #define LL_DMA_MEMORY_INCREMENT           DMA_CCR_MINC           /*!< Memory increment mode Enable  */
00225 #define LL_DMA_MEMORY_NOINCREMENT         ((uint32_t)0x00000000) /*!< Memory increment mode Disable */
00226 /**
00227   * @}
00228   */
00229 
00230 /** @defgroup DMA_LL_EC_PDATAALIGN PDATAALIGN
00231   * @{
00232   */
00233 #define LL_DMA_PDATAALIGN_BYTE            ((uint32_t)0x00000000) /*!< Peripheral data alignment : Byte     */
00234 #define LL_DMA_PDATAALIGN_HALFWORD        DMA_CCR_PSIZE_0        /*!< Peripheral data alignment : HalfWord */
00235 #define LL_DMA_PDATAALIGN_WORD            DMA_CCR_PSIZE_1        /*!< Peripheral data alignment : Word     */
00236 /**
00237   * @}
00238   */
00239 
00240 /** @defgroup DMA_LL_EC_MDATAALIGN MDATAALIGN
00241   * @{
00242   */
00243 #define LL_DMA_MDATAALIGN_BYTE            ((uint32_t)0x00000000) /*!< Memory data alignment : Byte     */
00244 #define LL_DMA_MDATAALIGN_HALFWORD        DMA_CCR_MSIZE_0        /*!< Memory data alignment : HalfWord */
00245 #define LL_DMA_MDATAALIGN_WORD            DMA_CCR_MSIZE_1        /*!< Memory data alignment : Word     */
00246 /**
00247   * @}
00248   */
00249 
00250 /** @defgroup DMA_LL_EC_PRIORITY PRIORITY
00251   * @{
00252   */
00253 #define LL_DMA_PRIORITY_LOW               ((uint32_t)0x00000000) /*!< Priority level : Low       */
00254 #define LL_DMA_PRIORITY_MEDIUM            DMA_CCR_PL_0           /*!< Priority level : Medium    */
00255 #define LL_DMA_PRIORITY_HIGH              DMA_CCR_PL_1           /*!< Priority level : High      */
00256 #define LL_DMA_PRIORITY_VERYHIGH          DMA_CCR_PL             /*!< Priority level : Very_High */
00257 /**
00258   * @}
00259   */
00260 
00261 /** @defgroup DMA_LL_EC_REQUEST REQUEST
00262   * @{
00263   */
00264 #define LL_DMA_REQUEST_0                  ((uint32_t)0x00000000)
00265 #define LL_DMA_REQUEST_1                  ((uint32_t)0x00000001)
00266 #define LL_DMA_REQUEST_2                  ((uint32_t)0x00000002)
00267 #define LL_DMA_REQUEST_3                  ((uint32_t)0x00000003)
00268 #define LL_DMA_REQUEST_4                  ((uint32_t)0x00000004)
00269 #define LL_DMA_REQUEST_5                  ((uint32_t)0x00000005)
00270 #define LL_DMA_REQUEST_6                  ((uint32_t)0x00000006)
00271 #define LL_DMA_REQUEST_7                  ((uint32_t)0x00000007)
00272 /**
00273   * @}
00274   */
00275 
00276 /**
00277   * @}
00278   */
00279 
00280 /* Exported macro ------------------------------------------------------------*/
00281 /** @defgroup DMA_LL_Exported_Macros DMA Exported Macros
00282   * @{
00283   */
00284 
00285 /** @defgroup DMA_LL_EM_WRITE_READ Common Write and read registers macros
00286   * @{
00287   */
00288 /**
00289   * @brief  Write a value in DMA register
00290   * @param  __INSTANCE__ DMA Instance
00291   * @param  __REG__ Register to be written
00292   * @param  __VALUE__ Value to be written in the register
00293   * @retval None
00294   */
00295 #define LL_DMA_WriteReg(__INSTANCE__, __REG__, __VALUE__) WRITE_REG(__INSTANCE__->__REG__, (__VALUE__))
00296 
00297 /**
00298   * @brief  Read a value in DMA register
00299   * @param  __INSTANCE__ DMA Instance
00300   * @param  __REG__ Register to be read
00301   * @retval Register value
00302   */
00303 #define LL_DMA_ReadReg(__INSTANCE__, __REG__) READ_REG(__INSTANCE__->__REG__)
00304 /**
00305   * @}
00306   */
00307 
00308 /** @defgroup DMA_LL_EM_CONVERT_DMAxCHANNELy Convert DMAxChannely
00309   * @{
00310   */
00311 /**
00312   * @brief  Convert DMAx_Channely into DMAx
00313   * @param  __CHANNEL_INSTANCE__ DMAx_Channely
00314   * @retval DMAx
00315   */
00316 #define __LL_DMA_GET_INSTANCE(__CHANNEL_INSTANCE__)   \
00317 (((uint32_t)(__CHANNEL_INSTANCE__) > ((uint32_t)DMA1_Channel7)) ?  DMA2 : DMA1)
00318 
00319 /**
00320   * @brief  Convert DMAx_Channely into LL_DMA_CHANNEL_y
00321   * @param  __CHANNEL_INSTANCE__ DMAx_Channely
00322   * @retval LL_DMA_CHANNEL_y
00323   */
00324 #define __LL_DMA_GET_CHANNEL(__CHANNEL_INSTANCE__)   \
00325 (((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel1)) ? LL_DMA_CHANNEL_1 : \
00326  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel1)) ? LL_DMA_CHANNEL_1 : \
00327  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel2)) ? LL_DMA_CHANNEL_2 : \
00328  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel2)) ? LL_DMA_CHANNEL_2 : \
00329  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel3)) ? LL_DMA_CHANNEL_3 : \
00330  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel3)) ? LL_DMA_CHANNEL_3 : \
00331  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel4)) ? LL_DMA_CHANNEL_4 : \
00332  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel4)) ? LL_DMA_CHANNEL_4 : \
00333  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel5)) ? LL_DMA_CHANNEL_5 : \
00334  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel5)) ? LL_DMA_CHANNEL_5 : \
00335  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA1_Channel6)) ? LL_DMA_CHANNEL_6 : \
00336  ((uint32_t)(__CHANNEL_INSTANCE__) == ((uint32_t)DMA2_Channel6)) ? LL_DMA_CHANNEL_6 : \
00337  LL_DMA_CHANNEL_7)
00338 
00339 /**
00340   * @}
00341   */
00342 
00343 /**
00344   * @}
00345   */
00346 
00347 /* Exported functions --------------------------------------------------------*/
00348 /** @defgroup DMA_LL_Exported_Functions DMA Exported Functions
00349  * @{
00350  */
00351 
00352 /** @defgroup DMA_LL_EF_Configuration Configuration
00353   * @{
00354   */
00355 /**
00356   * @brief  Enable DMA channel.
00357   * @rmtoll CCR          EN            LL_DMA_EnableChannel
00358   * @param  DMAx DMAx Instance
00359   * @param  Channel This parameter can be one of the following values:
00360   *         @arg @ref LL_DMA_CHANNEL_1
00361   *         @arg @ref LL_DMA_CHANNEL_2
00362   *         @arg @ref LL_DMA_CHANNEL_3
00363   *         @arg @ref LL_DMA_CHANNEL_4
00364   *         @arg @ref LL_DMA_CHANNEL_5
00365   *         @arg @ref LL_DMA_CHANNEL_6
00366   *         @arg @ref LL_DMA_CHANNEL_7
00367   * @retval None
00368   */
00369 __STATIC_INLINE void LL_DMA_EnableChannel(DMA_TypeDef *DMAx, uint32_t Channel)
00370 {
00371   SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_EN);
00372 }
00373 
00374 /**
00375   * @brief  Disable DMA channel.
00376   * @rmtoll CCR          EN            LL_DMA_DisableChannel
00377   * @param  DMAx DMAx Instance
00378   * @param  Channel This parameter can be one of the following values:
00379   *         @arg @ref LL_DMA_CHANNEL_1
00380   *         @arg @ref LL_DMA_CHANNEL_2
00381   *         @arg @ref LL_DMA_CHANNEL_3
00382   *         @arg @ref LL_DMA_CHANNEL_4
00383   *         @arg @ref LL_DMA_CHANNEL_5
00384   *         @arg @ref LL_DMA_CHANNEL_6
00385   *         @arg @ref LL_DMA_CHANNEL_7
00386   * @retval None
00387   */
00388 __STATIC_INLINE void LL_DMA_DisableChannel(DMA_TypeDef *DMAx, uint32_t Channel)
00389 {
00390   CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_EN);
00391 }
00392 
00393 /**
00394   * @brief  Check if DMA channel is enabled or disabled.
00395   * @rmtoll CCR          EN            LL_DMA_IsEnabledChannel
00396   * @param  DMAx DMAx Instance
00397   * @param  Channel This parameter can be one of the following values:
00398   *         @arg @ref LL_DMA_CHANNEL_1
00399   *         @arg @ref LL_DMA_CHANNEL_2
00400   *         @arg @ref LL_DMA_CHANNEL_3
00401   *         @arg @ref LL_DMA_CHANNEL_4
00402   *         @arg @ref LL_DMA_CHANNEL_5
00403   *         @arg @ref LL_DMA_CHANNEL_6
00404   *         @arg @ref LL_DMA_CHANNEL_7
00405   * @retval State of bit (1 or 0).
00406   */
00407 __STATIC_INLINE uint32_t LL_DMA_IsEnabledChannel(DMA_TypeDef *DMAx, uint32_t Channel)
00408 {
00409   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_EN) == (DMA_CCR_EN));
00410 }
00411 
00412 /**
00413   * @brief  Configure all parameters link to DMA transfer.
00414   * @rmtoll CCR          DIR           LL_DMA_ConfigTransfer\n
00415   *         CCR          MEM2MEM       LL_DMA_ConfigTransfer\n
00416   *         CCR          CIRC          LL_DMA_ConfigTransfer\n
00417   *         CCR          PINC          LL_DMA_ConfigTransfer\n
00418   *         CCR          MINC          LL_DMA_ConfigTransfer\n
00419   *         CCR          PSIZE         LL_DMA_ConfigTransfer\n
00420   *         CCR          MSIZE         LL_DMA_ConfigTransfer\n
00421   *         CCR          PL            LL_DMA_ConfigTransfer
00422   * @param  DMAx DMAx Instance
00423   * @param  Channel This parameter can be one of the following values:
00424   *         @arg @ref LL_DMA_CHANNEL_1
00425   *         @arg @ref LL_DMA_CHANNEL_2
00426   *         @arg @ref LL_DMA_CHANNEL_3
00427   *         @arg @ref LL_DMA_CHANNEL_4
00428   *         @arg @ref LL_DMA_CHANNEL_5
00429   *         @arg @ref LL_DMA_CHANNEL_6
00430   *         @arg @ref LL_DMA_CHANNEL_7
00431   * @param  Configuration This parameter must be a combination of all the following values:
00432   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY or @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH or @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00433   *         @arg @ref LL_DMA_MODE_NORMAL or @ref LL_DMA_MODE_CIRCULAR
00434   *         @arg @ref LL_DMA_PERIPH_INCREMENT or @ref LL_DMA_PERIPH_NOINCREMENT
00435   *         @arg @ref LL_DMA_MEMORY_INCREMENT or @ref LL_DMA_MEMORY_NOINCREMENT
00436   *         @arg @ref LL_DMA_PDATAALIGN_BYTE or @ref LL_DMA_PDATAALIGN_HALFWORD or @ref LL_DMA_PDATAALIGN_WORD
00437   *         @arg @ref LL_DMA_MDATAALIGN_BYTE or @ref LL_DMA_MDATAALIGN_HALFWORD or @ref LL_DMA_MDATAALIGN_WORD
00438   *         @arg @ref LL_DMA_PRIORITY_LOW or @ref LL_DMA_PRIORITY_MEDIUM or @ref LL_DMA_PRIORITY_HIGH or @ref LL_DMA_PRIORITY_VERYHIGH
00439   * @retval None
00440   */
00441 __STATIC_INLINE void LL_DMA_ConfigTransfer(DMA_TypeDef* DMAx, uint32_t Channel, uint32_t Configuration)
00442 {
00443   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_DIR | DMA_CCR_MEM2MEM | DMA_CCR_CIRC | DMA_CCR_PINC | DMA_CCR_MINC | DMA_CCR_PSIZE | DMA_CCR_MSIZE | DMA_CCR_PL, Configuration);
00444 }
00445 
00446 /**
00447   * @brief  Set Data transfer direction (read from peripheral or from memory).
00448   * @rmtoll CCR          DIR           LL_DMA_SetDataTransferDirection\n
00449   *         CCR          MEM2MEM       LL_DMA_SetDataTransferDirection
00450   * @param  DMAx DMAx Instance
00451   * @param  Channel This parameter can be one of the following values:
00452   *         @arg @ref LL_DMA_CHANNEL_1
00453   *         @arg @ref LL_DMA_CHANNEL_2
00454   *         @arg @ref LL_DMA_CHANNEL_3
00455   *         @arg @ref LL_DMA_CHANNEL_4
00456   *         @arg @ref LL_DMA_CHANNEL_5
00457   *         @arg @ref LL_DMA_CHANNEL_6
00458   *         @arg @ref LL_DMA_CHANNEL_7
00459   * @param  Direction This parameter can be one of the following values:
00460   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
00461   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
00462   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00463   * @retval None
00464   */
00465 __STATIC_INLINE void LL_DMA_SetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  Direction)
00466 {
00467   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_DIR | DMA_CCR_MEM2MEM, Direction);
00468 }
00469 
00470 /**
00471   * @brief  Get Data transfer direction (read from peripheral or from memory).
00472   * @rmtoll CCR          DIR           LL_DMA_GetDataTransferDirection\n
00473   *         CCR          MEM2MEM       LL_DMA_GetDataTransferDirection
00474   * @param  DMAx DMAx Instance
00475   * @param  Channel This parameter can be one of the following values:
00476   *         @arg @ref LL_DMA_CHANNEL_1
00477   *         @arg @ref LL_DMA_CHANNEL_2
00478   *         @arg @ref LL_DMA_CHANNEL_3
00479   *         @arg @ref LL_DMA_CHANNEL_4
00480   *         @arg @ref LL_DMA_CHANNEL_5
00481   *         @arg @ref LL_DMA_CHANNEL_6
00482   *         @arg @ref LL_DMA_CHANNEL_7
00483   * @retval Returned value can be one of the following values:
00484   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
00485   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
00486   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00487   */
00488 __STATIC_INLINE uint32_t LL_DMA_GetDataTransferDirection(DMA_TypeDef *DMAx, uint32_t Channel)
00489 {
00490   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_DIR | DMA_CCR_MEM2MEM));
00491 }
00492 
00493 /**
00494   * @brief  Set DMA mode circular or normal.
00495   * @note The circular buffer mode cannot be used if the memory-to-memory
00496   * data transfer is configured on the selected Channel.
00497   * @rmtoll CCR          CIRC          LL_DMA_SetMode
00498   * @param  DMAx DMAx Instance
00499   * @param  Channel This parameter can be one of the following values:
00500   *         @arg @ref LL_DMA_CHANNEL_1
00501   *         @arg @ref LL_DMA_CHANNEL_2
00502   *         @arg @ref LL_DMA_CHANNEL_3
00503   *         @arg @ref LL_DMA_CHANNEL_4
00504   *         @arg @ref LL_DMA_CHANNEL_5
00505   *         @arg @ref LL_DMA_CHANNEL_6
00506   *         @arg @ref LL_DMA_CHANNEL_7
00507   * @param  Mode This parameter can be one of the following values:
00508   *         @arg @ref LL_DMA_MODE_NORMAL
00509   *         @arg @ref LL_DMA_MODE_CIRCULAR
00510   * @retval None
00511   */
00512 __STATIC_INLINE void LL_DMA_SetMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Mode)
00513 {
00514   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_CIRC, Mode);
00515 }
00516 
00517 /**
00518   * @brief  Get DMA mode circular or normal.
00519   * @rmtoll CCR          CIRC          LL_DMA_GetMode
00520   * @param  DMAx DMAx Instance
00521   * @param  Channel This parameter can be one of the following values:
00522   *         @arg @ref LL_DMA_CHANNEL_1
00523   *         @arg @ref LL_DMA_CHANNEL_2
00524   *         @arg @ref LL_DMA_CHANNEL_3
00525   *         @arg @ref LL_DMA_CHANNEL_4
00526   *         @arg @ref LL_DMA_CHANNEL_5
00527   *         @arg @ref LL_DMA_CHANNEL_6
00528   *         @arg @ref LL_DMA_CHANNEL_7
00529   * @retval Returned value can be one of the following values:
00530   *         @arg @ref LL_DMA_MODE_NORMAL
00531   *         @arg @ref LL_DMA_MODE_CIRCULAR
00532   */
00533 __STATIC_INLINE uint32_t LL_DMA_GetMode(DMA_TypeDef *DMAx, uint32_t Channel)
00534 {
00535   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_CIRC));
00536 }
00537 
00538 /**
00539   * @brief  Set Peripheral increment mode.
00540   * @rmtoll CCR          PINC          LL_DMA_SetPeriphIncMode
00541   * @param  DMAx DMAx Instance
00542   * @param  Channel This parameter can be one of the following values:
00543   *         @arg @ref LL_DMA_CHANNEL_1
00544   *         @arg @ref LL_DMA_CHANNEL_2
00545   *         @arg @ref LL_DMA_CHANNEL_3
00546   *         @arg @ref LL_DMA_CHANNEL_4
00547   *         @arg @ref LL_DMA_CHANNEL_5
00548   *         @arg @ref LL_DMA_CHANNEL_6
00549   *         @arg @ref LL_DMA_CHANNEL_7
00550   * @param  IncrementMode This parameter can be one of the following values:
00551   *         @arg @ref LL_DMA_PERIPH_INCREMENT
00552   *         @arg @ref LL_DMA_PERIPH_NOINCREMENT
00553   * @retval None
00554   */
00555 __STATIC_INLINE void LL_DMA_SetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t IncrementMode)
00556 {
00557   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_PINC, IncrementMode);
00558 }
00559 
00560 /**
00561   * @brief  Get Peripheral increment mode.
00562   * @rmtoll CCR          PINC          LL_DMA_GetPeriphIncMode
00563   * @param  DMAx DMAx Instance
00564   * @param  Channel This parameter can be one of the following values:
00565   *         @arg @ref LL_DMA_CHANNEL_1
00566   *         @arg @ref LL_DMA_CHANNEL_2
00567   *         @arg @ref LL_DMA_CHANNEL_3
00568   *         @arg @ref LL_DMA_CHANNEL_4
00569   *         @arg @ref LL_DMA_CHANNEL_5
00570   *         @arg @ref LL_DMA_CHANNEL_6
00571   *         @arg @ref LL_DMA_CHANNEL_7
00572   * @retval Returned value can be one of the following values:
00573   *         @arg @ref LL_DMA_PERIPH_INCREMENT
00574   *         @arg @ref LL_DMA_PERIPH_NOINCREMENT
00575   */
00576 __STATIC_INLINE uint32_t LL_DMA_GetPeriphIncMode(DMA_TypeDef *DMAx, uint32_t Channel)
00577 {
00578   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_PINC));
00579 }
00580 
00581 /**
00582   * @brief  Set Memory increment mode.
00583   * @rmtoll CCR          MINC          LL_DMA_SetMemoryIncMode
00584   * @param  DMAx DMAx Instance
00585   * @param  Channel This parameter can be one of the following values:
00586   *         @arg @ref LL_DMA_CHANNEL_1
00587   *         @arg @ref LL_DMA_CHANNEL_2
00588   *         @arg @ref LL_DMA_CHANNEL_3
00589   *         @arg @ref LL_DMA_CHANNEL_4
00590   *         @arg @ref LL_DMA_CHANNEL_5
00591   *         @arg @ref LL_DMA_CHANNEL_6
00592   *         @arg @ref LL_DMA_CHANNEL_7
00593   * @param  IncrementMode This parameter can be one of the following values:
00594   *         @arg @ref LL_DMA_MEMORY_INCREMENT
00595   *         @arg @ref LL_DMA_MEMORY_NOINCREMENT
00596   * @retval None
00597   */
00598 __STATIC_INLINE void LL_DMA_SetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t IncrementMode)
00599 {
00600   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_MINC, IncrementMode);
00601 }
00602 
00603 /**
00604   * @brief  Get Memory increment mode.
00605   * @rmtoll CCR          MINC          LL_DMA_GetMemoryIncMode
00606   * @param  DMAx DMAx Instance
00607   * @param  Channel This parameter can be one of the following values:
00608   *         @arg @ref LL_DMA_CHANNEL_1
00609   *         @arg @ref LL_DMA_CHANNEL_2
00610   *         @arg @ref LL_DMA_CHANNEL_3
00611   *         @arg @ref LL_DMA_CHANNEL_4
00612   *         @arg @ref LL_DMA_CHANNEL_5
00613   *         @arg @ref LL_DMA_CHANNEL_6
00614   *         @arg @ref LL_DMA_CHANNEL_7
00615   * @retval Returned value can be one of the following values:
00616   *         @arg @ref LL_DMA_MEMORY_INCREMENT
00617   *         @arg @ref LL_DMA_MEMORY_NOINCREMENT
00618   */
00619 __STATIC_INLINE uint32_t LL_DMA_GetMemoryIncMode(DMA_TypeDef *DMAx, uint32_t Channel)
00620 {
00621   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_MINC));
00622 }
00623 
00624 /**
00625   * @brief  Set Peripheral size.
00626   * @rmtoll CCR          PSIZE         LL_DMA_SetPeriphSize
00627   * @param  DMAx DMAx Instance
00628   * @param  Channel This parameter can be one of the following values:
00629   *         @arg @ref LL_DMA_CHANNEL_1
00630   *         @arg @ref LL_DMA_CHANNEL_2
00631   *         @arg @ref LL_DMA_CHANNEL_3
00632   *         @arg @ref LL_DMA_CHANNEL_4
00633   *         @arg @ref LL_DMA_CHANNEL_5
00634   *         @arg @ref LL_DMA_CHANNEL_6
00635   *         @arg @ref LL_DMA_CHANNEL_7
00636   * @param  Size This parameter can be one of the following values:
00637   *         @arg @ref LL_DMA_PDATAALIGN_BYTE
00638   *         @arg @ref LL_DMA_PDATAALIGN_HALFWORD
00639   *         @arg @ref LL_DMA_PDATAALIGN_WORD
00640   * @retval None
00641   */
00642 __STATIC_INLINE void LL_DMA_SetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  Size)
00643 {
00644   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_PSIZE, Size);
00645 }
00646 
00647 /**
00648   * @brief  Get Peripheral size.
00649   * @rmtoll CCR          PSIZE         LL_DMA_GetPeriphSize
00650   * @param  DMAx DMAx Instance
00651   * @param  Channel This parameter can be one of the following values:
00652   *         @arg @ref LL_DMA_CHANNEL_1
00653   *         @arg @ref LL_DMA_CHANNEL_2
00654   *         @arg @ref LL_DMA_CHANNEL_3
00655   *         @arg @ref LL_DMA_CHANNEL_4
00656   *         @arg @ref LL_DMA_CHANNEL_5
00657   *         @arg @ref LL_DMA_CHANNEL_6
00658   *         @arg @ref LL_DMA_CHANNEL_7
00659   * @retval Returned value can be one of the following values:
00660   *         @arg @ref LL_DMA_PDATAALIGN_BYTE
00661   *         @arg @ref LL_DMA_PDATAALIGN_HALFWORD
00662   *         @arg @ref LL_DMA_PDATAALIGN_WORD
00663   */
00664 __STATIC_INLINE uint32_t LL_DMA_GetPeriphSize(DMA_TypeDef *DMAx, uint32_t Channel)
00665 {
00666   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_PSIZE));
00667 }
00668 
00669 /**
00670   * @brief  Set Memory size.
00671   * @rmtoll CCR          MSIZE         LL_DMA_SetMemorySize
00672   * @param  DMAx DMAx Instance
00673   * @param  Channel This parameter can be one of the following values:
00674   *         @arg @ref LL_DMA_CHANNEL_1
00675   *         @arg @ref LL_DMA_CHANNEL_2
00676   *         @arg @ref LL_DMA_CHANNEL_3
00677   *         @arg @ref LL_DMA_CHANNEL_4
00678   *         @arg @ref LL_DMA_CHANNEL_5
00679   *         @arg @ref LL_DMA_CHANNEL_6
00680   *         @arg @ref LL_DMA_CHANNEL_7
00681   * @param  Size This parameter can be one of the following values:
00682   *         @arg @ref LL_DMA_MDATAALIGN_BYTE
00683   *         @arg @ref LL_DMA_MDATAALIGN_HALFWORD
00684   *         @arg @ref LL_DMA_MDATAALIGN_WORD
00685   * @retval None
00686   */
00687 __STATIC_INLINE void LL_DMA_SetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  Size)
00688 {
00689   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_MSIZE, Size);
00690 }
00691 
00692 /**
00693   * @brief  Get Memory size.
00694   * @rmtoll CCR          MSIZE         LL_DMA_GetMemorySize
00695   * @param  DMAx DMAx Instance
00696   * @param  Channel This parameter can be one of the following values:
00697   *         @arg @ref LL_DMA_CHANNEL_1
00698   *         @arg @ref LL_DMA_CHANNEL_2
00699   *         @arg @ref LL_DMA_CHANNEL_3
00700   *         @arg @ref LL_DMA_CHANNEL_4
00701   *         @arg @ref LL_DMA_CHANNEL_5
00702   *         @arg @ref LL_DMA_CHANNEL_6
00703   *         @arg @ref LL_DMA_CHANNEL_7
00704   * @retval Returned value can be one of the following values:
00705   *         @arg @ref LL_DMA_MDATAALIGN_BYTE
00706   *         @arg @ref LL_DMA_MDATAALIGN_HALFWORD
00707   *         @arg @ref LL_DMA_MDATAALIGN_WORD
00708   */
00709 __STATIC_INLINE uint32_t LL_DMA_GetMemorySize(DMA_TypeDef *DMAx, uint32_t Channel)
00710 {
00711   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_MSIZE));
00712 }
00713 
00714 /**
00715   * @brief  Set Channel priority level.
00716   * @rmtoll CCR          PL            LL_DMA_SetChannelPriorityLevel
00717   * @param  DMAx DMAx Instance
00718   * @param  Channel This parameter can be one of the following values:
00719   *         @arg @ref LL_DMA_CHANNEL_1
00720   *         @arg @ref LL_DMA_CHANNEL_2
00721   *         @arg @ref LL_DMA_CHANNEL_3
00722   *         @arg @ref LL_DMA_CHANNEL_4
00723   *         @arg @ref LL_DMA_CHANNEL_5
00724   *         @arg @ref LL_DMA_CHANNEL_6
00725   *         @arg @ref LL_DMA_CHANNEL_7
00726   * @param  Priority This parameter can be one of the following values:
00727   *         @arg @ref LL_DMA_PRIORITY_LOW
00728   *         @arg @ref LL_DMA_PRIORITY_MEDIUM
00729   *         @arg @ref LL_DMA_PRIORITY_HIGH
00730   *         @arg @ref LL_DMA_PRIORITY_VERYHIGH
00731   * @retval None
00732   */
00733 __STATIC_INLINE void LL_DMA_SetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t  Priority)
00734 {
00735   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_PL, Priority);
00736 }
00737 
00738 /**
00739   * @brief  Get Channel priority level.
00740   * @rmtoll CCR          PL            LL_DMA_GetChannelPriorityLevel
00741   * @param  DMAx DMAx Instance
00742   * @param  Channel This parameter can be one of the following values:
00743   *         @arg @ref LL_DMA_CHANNEL_1
00744   *         @arg @ref LL_DMA_CHANNEL_2
00745   *         @arg @ref LL_DMA_CHANNEL_3
00746   *         @arg @ref LL_DMA_CHANNEL_4
00747   *         @arg @ref LL_DMA_CHANNEL_5
00748   *         @arg @ref LL_DMA_CHANNEL_6
00749   *         @arg @ref LL_DMA_CHANNEL_7
00750   * @retval Returned value can be one of the following values:
00751   *         @arg @ref LL_DMA_PRIORITY_LOW
00752   *         @arg @ref LL_DMA_PRIORITY_MEDIUM
00753   *         @arg @ref LL_DMA_PRIORITY_HIGH
00754   *         @arg @ref LL_DMA_PRIORITY_VERYHIGH
00755   */
00756 __STATIC_INLINE uint32_t LL_DMA_GetChannelPriorityLevel(DMA_TypeDef *DMAx, uint32_t Channel)
00757 {
00758   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_PL));
00759 }
00760 
00761 /**
00762   * @brief  Set Number of data to transfer.
00763   * @note   This action has no effect if
00764   *         channel is enabled.
00765   * @rmtoll CNDTR        NDT           LL_DMA_SetDataLength
00766   * @param  DMAx DMAx Instance
00767   * @param  Channel This parameter can be one of the following values:
00768   *         @arg @ref LL_DMA_CHANNEL_1
00769   *         @arg @ref LL_DMA_CHANNEL_2
00770   *         @arg @ref LL_DMA_CHANNEL_3
00771   *         @arg @ref LL_DMA_CHANNEL_4
00772   *         @arg @ref LL_DMA_CHANNEL_5
00773   *         @arg @ref LL_DMA_CHANNEL_6
00774   *         @arg @ref LL_DMA_CHANNEL_7
00775   * @param  NbData Between 0 to 0xFFFFFFFF
00776   * @retval None
00777   */
00778 __STATIC_INLINE void LL_DMA_SetDataLength(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t NbData)
00779 {
00780   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CNDTR, DMA_CNDTR_NDT, NbData);
00781 }
00782 
00783 /**
00784   * @brief  Get Number of data to transfer.
00785   * @note   Once the channel is enabled, the return value indicate the
00786   *         remaining bytes to be transmitted.
00787   * @rmtoll CNDTR        NDT           LL_DMA_GetDataLength
00788   * @param  DMAx DMAx Instance
00789   * @param  Channel This parameter can be one of the following values:
00790   *         @arg @ref LL_DMA_CHANNEL_1
00791   *         @arg @ref LL_DMA_CHANNEL_2
00792   *         @arg @ref LL_DMA_CHANNEL_3
00793   *         @arg @ref LL_DMA_CHANNEL_4
00794   *         @arg @ref LL_DMA_CHANNEL_5
00795   *         @arg @ref LL_DMA_CHANNEL_6
00796   *         @arg @ref LL_DMA_CHANNEL_7
00797   * @retval Between 0 to 0xFFFFFFFF
00798   */
00799 __STATIC_INLINE uint32_t LL_DMA_GetDataLength(DMA_TypeDef *DMAx, uint32_t Channel)
00800 {
00801   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CNDTR, DMA_CNDTR_NDT));
00802 }
00803 
00804 /**
00805   * @brief  Configure the Source and Destination addresses.
00806   * @note   Each IP using DMA provides an API to get directly the register adress (LL_PPP_DMA_GetRegAddr)
00807   * @rmtoll CPAR         PA            LL_DMA_ConfigAddresses\n
00808   *         CMAR         MA            LL_DMA_ConfigAddresses
00809   * @param  DMAx DMAx Instance
00810   * @param  Channel This parameter can be one of the following values:
00811   *         @arg @ref LL_DMA_CHANNEL_1
00812   *         @arg @ref LL_DMA_CHANNEL_2
00813   *         @arg @ref LL_DMA_CHANNEL_3
00814   *         @arg @ref LL_DMA_CHANNEL_4
00815   *         @arg @ref LL_DMA_CHANNEL_5
00816   *         @arg @ref LL_DMA_CHANNEL_6
00817   *         @arg @ref LL_DMA_CHANNEL_7
00818   * @param  SrcAddress Between 0 to 0xFFFFFFFF
00819   * @param  DstAddress Between 0 to 0xFFFFFFFF
00820   * @param  Direction This parameter can be one of the following values:
00821   *         @arg @ref LL_DMA_DIRECTION_PERIPH_TO_MEMORY
00822   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_PERIPH
00823   *         @arg @ref LL_DMA_DIRECTION_MEMORY_TO_MEMORY
00824   * @retval None
00825   */
00826 __STATIC_INLINE void LL_DMA_ConfigAddresses(DMA_TypeDef* DMAx, uint32_t Channel, uint32_t SrcAddress, uint32_t DstAddress, uint32_t Direction)
00827 {
00828   /* Direction Memory to Periph */
00829   if (Direction == LL_DMA_DIRECTION_MEMORY_TO_PERIPH)
00830   {
00831     MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CMAR, DMA_CMAR_MA, SrcAddress);
00832     MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CPAR, DMA_CPAR_PA, DstAddress);
00833   }
00834   /* Direction Periph to Memory and Memory to Memory */
00835   else
00836   {
00837     MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CPAR, DMA_CPAR_PA, SrcAddress);
00838     MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CMAR, DMA_CMAR_MA, DstAddress);
00839   }
00840 }
00841 
00842 /**
00843   * @brief  Set the Memory address.
00844   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
00845   * @rmtoll CMAR         MA            LL_DMA_SetMemoryAddress
00846   * @param  DMAx DMAx Instance
00847   * @param  Channel This parameter can be one of the following values:
00848   *         @arg @ref LL_DMA_CHANNEL_1
00849   *         @arg @ref LL_DMA_CHANNEL_2
00850   *         @arg @ref LL_DMA_CHANNEL_3
00851   *         @arg @ref LL_DMA_CHANNEL_4
00852   *         @arg @ref LL_DMA_CHANNEL_5
00853   *         @arg @ref LL_DMA_CHANNEL_6
00854   *         @arg @ref LL_DMA_CHANNEL_7
00855   * @param  MemoryAddress Between 0 to 0xFFFFFFFF
00856   * @retval None
00857   */
00858 __STATIC_INLINE void LL_DMA_SetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Channel, uint32_t MemoryAddress)
00859 {
00860   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CMAR, DMA_CMAR_MA, MemoryAddress);
00861 }
00862 
00863 /**
00864   * @brief  Set the Peripheral address.
00865   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
00866   * @rmtoll CPAR         PA            LL_DMA_SetPeriphAddress
00867   * @param  DMAx DMAx Instance
00868   * @param  Channel This parameter can be one of the following values:
00869   *         @arg @ref LL_DMA_CHANNEL_1
00870   *         @arg @ref LL_DMA_CHANNEL_2
00871   *         @arg @ref LL_DMA_CHANNEL_3
00872   *         @arg @ref LL_DMA_CHANNEL_4
00873   *         @arg @ref LL_DMA_CHANNEL_5
00874   *         @arg @ref LL_DMA_CHANNEL_6
00875   *         @arg @ref LL_DMA_CHANNEL_7
00876   * @param  PeriphAddress Between 0 to 0xFFFFFFFF
00877   * @retval None
00878   */
00879 __STATIC_INLINE void LL_DMA_SetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Channel, uint32_t PeriphAddress)
00880   {
00881   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CPAR, DMA_CPAR_PA, PeriphAddress);
00882   }
00883 
00884 /**
00885   * @brief  Get Memory address.
00886   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
00887   * @rmtoll CMAR         MA            LL_DMA_GetMemoryAddress
00888   * @param  DMAx DMAx Instance
00889   * @param  Channel This parameter can be one of the following values:
00890   *         @arg @ref LL_DMA_CHANNEL_1
00891   *         @arg @ref LL_DMA_CHANNEL_2
00892   *         @arg @ref LL_DMA_CHANNEL_3
00893   *         @arg @ref LL_DMA_CHANNEL_4
00894   *         @arg @ref LL_DMA_CHANNEL_5
00895   *         @arg @ref LL_DMA_CHANNEL_6
00896   *         @arg @ref LL_DMA_CHANNEL_7
00897   * @retval Between 0 to 0xFFFFFFFF
00898   */
00899 __STATIC_INLINE uint32_t LL_DMA_GetMemoryAddress(DMA_TypeDef* DMAx, uint32_t Channel)
00900   {
00901   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CMAR, DMA_CMAR_MA));
00902   }
00903 
00904 /**
00905   * @brief  Get Peripheral address.
00906   * @note   Interface used for direction LL_DMA_DIRECTION_PERIPH_TO_MEMORY or LL_DMA_DIRECTION_MEMORY_TO_PERIPH only.
00907   * @rmtoll CPAR         PA            LL_DMA_GetPeriphAddress
00908   * @param  DMAx DMAx Instance
00909   * @param  Channel This parameter can be one of the following values:
00910   *         @arg @ref LL_DMA_CHANNEL_1
00911   *         @arg @ref LL_DMA_CHANNEL_2
00912   *         @arg @ref LL_DMA_CHANNEL_3
00913   *         @arg @ref LL_DMA_CHANNEL_4
00914   *         @arg @ref LL_DMA_CHANNEL_5
00915   *         @arg @ref LL_DMA_CHANNEL_6
00916   *         @arg @ref LL_DMA_CHANNEL_7
00917   * @retval Between 0 to 0xFFFFFFFF
00918   */
00919 __STATIC_INLINE uint32_t LL_DMA_GetPeriphAddress(DMA_TypeDef* DMAx, uint32_t Channel)
00920 {
00921   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CPAR, DMA_CPAR_PA));
00922 }
00923 
00924 /**
00925   * @brief  Set the Memory to Memory Source address.
00926   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
00927   * @rmtoll CPAR         PA            LL_DMA_SetM2MSrcAddress
00928   * @param  DMAx DMAx Instance
00929   * @param  Channel This parameter can be one of the following values:
00930   *         @arg @ref LL_DMA_CHANNEL_1
00931   *         @arg @ref LL_DMA_CHANNEL_2
00932   *         @arg @ref LL_DMA_CHANNEL_3
00933   *         @arg @ref LL_DMA_CHANNEL_4
00934   *         @arg @ref LL_DMA_CHANNEL_5
00935   *         @arg @ref LL_DMA_CHANNEL_6
00936   *         @arg @ref LL_DMA_CHANNEL_7
00937   * @param  MemoryAddress Between 0 to 0xFFFFFFFF
00938   * @retval None
00939   */
00940 __STATIC_INLINE void LL_DMA_SetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Channel, uint32_t MemoryAddress)
00941 {
00942   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CPAR, DMA_CPAR_PA, MemoryAddress);
00943 }
00944 
00945 /**
00946   * @brief  Set the Memory to Memory Destination address.
00947   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
00948   * @rmtoll CMAR         MA            LL_DMA_SetM2MDstAddress
00949   * @param  DMAx DMAx Instance
00950   * @param  Channel This parameter can be one of the following values:
00951   *         @arg @ref LL_DMA_CHANNEL_1
00952   *         @arg @ref LL_DMA_CHANNEL_2
00953   *         @arg @ref LL_DMA_CHANNEL_3
00954   *         @arg @ref LL_DMA_CHANNEL_4
00955   *         @arg @ref LL_DMA_CHANNEL_5
00956   *         @arg @ref LL_DMA_CHANNEL_6
00957   *         @arg @ref LL_DMA_CHANNEL_7
00958   * @param  MemoryAddress Between 0 to 0xFFFFFFFF
00959   * @retval None
00960   */
00961 __STATIC_INLINE void LL_DMA_SetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Channel, uint32_t MemoryAddress)
00962   {
00963   MODIFY_REG(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CMAR, DMA_CMAR_MA, MemoryAddress);
00964   }
00965 
00966 /**
00967   * @brief  Get the Memory to Memory Source address.
00968   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
00969   * @rmtoll CPAR         PA            LL_DMA_GetM2MSrcAddress
00970   * @param  DMAx DMAx Instance
00971   * @param  Channel This parameter can be one of the following values:
00972   *         @arg @ref LL_DMA_CHANNEL_1
00973   *         @arg @ref LL_DMA_CHANNEL_2
00974   *         @arg @ref LL_DMA_CHANNEL_3
00975   *         @arg @ref LL_DMA_CHANNEL_4
00976   *         @arg @ref LL_DMA_CHANNEL_5
00977   *         @arg @ref LL_DMA_CHANNEL_6
00978   *         @arg @ref LL_DMA_CHANNEL_7
00979   * @retval Between 0 to 0xFFFFFFFF
00980   */
00981 __STATIC_INLINE uint32_t LL_DMA_GetM2MSrcAddress(DMA_TypeDef* DMAx, uint32_t Channel)
00982   {
00983   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CPAR, DMA_CPAR_PA));
00984   }
00985 
00986 /**
00987   * @brief  Get the Memory to Memory Destination address.
00988   * @note   Interface used for direction LL_DMA_DIRECTION_MEMORY_TO_MEMORY only.
00989   * @rmtoll CMAR         MA            LL_DMA_GetM2MDstAddress
00990   * @param  DMAx DMAx Instance
00991   * @param  Channel This parameter can be one of the following values:
00992   *         @arg @ref LL_DMA_CHANNEL_1
00993   *         @arg @ref LL_DMA_CHANNEL_2
00994   *         @arg @ref LL_DMA_CHANNEL_3
00995   *         @arg @ref LL_DMA_CHANNEL_4
00996   *         @arg @ref LL_DMA_CHANNEL_5
00997   *         @arg @ref LL_DMA_CHANNEL_6
00998   *         @arg @ref LL_DMA_CHANNEL_7
00999   * @retval Between 0 to 0xFFFFFFFF
01000   */
01001 __STATIC_INLINE uint32_t LL_DMA_GetM2MDstAddress(DMA_TypeDef* DMAx, uint32_t Channel)
01002 {
01003   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CMAR, DMA_CMAR_MA));
01004 }
01005 
01006 /**
01007   * @brief  Set DMA request for DMA instance on Channel x.
01008   * @note   Please refer to Reference Manual to get the available mapping of Request value link to Channel Selection.
01009   * @rmtoll CSELR        C1S           LL_DMA_SetPeriphRequest\n
01010   *         CSELR        C2S           LL_DMA_SetPeriphRequest\n
01011   *         CSELR        C3S           LL_DMA_SetPeriphRequest\n
01012   *         CSELR        C4S           LL_DMA_SetPeriphRequest\n
01013   *         CSELR        C5S           LL_DMA_SetPeriphRequest\n
01014   *         CSELR        C6S           LL_DMA_SetPeriphRequest\n
01015   *         CSELR        C7S           LL_DMA_SetPeriphRequest
01016   * @param  DMAx DMAx Instance
01017   * @param  Channel This parameter can be one of the following values:
01018   *         @arg @ref LL_DMA_CHANNEL_1
01019   *         @arg @ref LL_DMA_CHANNEL_2
01020   *         @arg @ref LL_DMA_CHANNEL_3
01021   *         @arg @ref LL_DMA_CHANNEL_4
01022   *         @arg @ref LL_DMA_CHANNEL_5
01023   *         @arg @ref LL_DMA_CHANNEL_6
01024   *         @arg @ref LL_DMA_CHANNEL_7
01025   * @param  Request This parameter can be one of the following values:
01026   *         @arg @ref LL_DMA_REQUEST_0
01027   *         @arg @ref LL_DMA_REQUEST_1
01028   *         @arg @ref LL_DMA_REQUEST_2
01029   *         @arg @ref LL_DMA_REQUEST_3
01030   *         @arg @ref LL_DMA_REQUEST_4
01031   *         @arg @ref LL_DMA_REQUEST_5
01032   *         @arg @ref LL_DMA_REQUEST_6
01033   *         @arg @ref LL_DMA_REQUEST_7
01034   * @retval None
01035   */
01036 __STATIC_INLINE void LL_DMA_SetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel, uint32_t Request)
01037 {
01038   MODIFY_REG(((DMA_request_TypeDef*)((uint32_t)((uint32_t)DMAx + DMA_CSELR_OFFSET)))->CSELR, DMA_CSELR_C1S << ((Channel-1)*4), Request << POSITION_VAL(DMA_CSELR_C1S << ((Channel-1)*4)));
01039 }
01040 
01041 /**
01042   * @brief  Get DMA request for DMA instance on Channel x.
01043   * @rmtoll CSELR        C1S           LL_DMA_GetPeriphRequest\n
01044   *         CSELR        C2S           LL_DMA_GetPeriphRequest\n
01045   *         CSELR        C3S           LL_DMA_GetPeriphRequest\n
01046   *         CSELR        C4S           LL_DMA_GetPeriphRequest\n
01047   *         CSELR        C5S           LL_DMA_GetPeriphRequest\n
01048   *         CSELR        C6S           LL_DMA_GetPeriphRequest\n
01049   *         CSELR        C7S           LL_DMA_GetPeriphRequest
01050   * @param  DMAx DMAx Instance
01051   * @param  Channel This parameter can be one of the following values:
01052   *         @arg @ref LL_DMA_CHANNEL_1
01053   *         @arg @ref LL_DMA_CHANNEL_2
01054   *         @arg @ref LL_DMA_CHANNEL_3
01055   *         @arg @ref LL_DMA_CHANNEL_4
01056   *         @arg @ref LL_DMA_CHANNEL_5
01057   *         @arg @ref LL_DMA_CHANNEL_6
01058   *         @arg @ref LL_DMA_CHANNEL_7
01059   * @retval Returned value can be one of the following values:
01060   *         @arg @ref LL_DMA_REQUEST_0
01061   *         @arg @ref LL_DMA_REQUEST_1
01062   *         @arg @ref LL_DMA_REQUEST_2
01063   *         @arg @ref LL_DMA_REQUEST_3
01064   *         @arg @ref LL_DMA_REQUEST_4
01065   *         @arg @ref LL_DMA_REQUEST_5
01066   *         @arg @ref LL_DMA_REQUEST_6
01067   *         @arg @ref LL_DMA_REQUEST_7
01068   */
01069 __STATIC_INLINE uint32_t LL_DMA_GetPeriphRequest(DMA_TypeDef *DMAx, uint32_t Channel)
01070 {
01071   return (READ_BIT(((DMA_request_TypeDef*)((uint32_t)((uint32_t)DMAx + DMA_CSELR_OFFSET)))->CSELR, DMA_CSELR_C1S << ((Channel-1)*4)) >> POSITION_VAL(DMA_CSELR_C1S << ((Channel-1)*4)));
01072 }
01073 
01074 /**
01075   * @}
01076   */
01077 
01078 /** @defgroup DMA_LL_EF_FLAG_Management FLAG_Management
01079   * @{
01080   */
01081 
01082 /**
01083   * @brief  Get Channel 1 global interrupt flag.
01084   * @rmtoll ISR          GIF1          LL_DMA_IsActiveFlag_GI1
01085   * @param  DMAx DMAx Instance
01086   * @retval State of bit (1 or 0).
01087   */
01088 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI1(DMA_TypeDef* DMAx)
01089 {
01090   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF1) == (DMA_ISR_GIF1));
01091 }
01092 
01093 /**
01094   * @brief  Get Channel 2 global interrupt flag.
01095   * @rmtoll ISR          GIF2          LL_DMA_IsActiveFlag_GI2
01096   * @param  DMAx DMAx Instance
01097   * @retval State of bit (1 or 0).
01098   */
01099 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI2(DMA_TypeDef* DMAx)
01100 {
01101   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF2) == (DMA_ISR_GIF2));
01102 }
01103 
01104 /**
01105   * @brief  Get Channel 3 global interrupt flag.
01106   * @rmtoll ISR          GIF3          LL_DMA_IsActiveFlag_GI3
01107   * @param  DMAx DMAx Instance
01108   * @retval State of bit (1 or 0).
01109   */
01110 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI3(DMA_TypeDef* DMAx)
01111 {
01112   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF3) == (DMA_ISR_GIF3));
01113 }
01114 
01115 /**
01116   * @brief  Get Channel 4 global interrupt flag.
01117   * @rmtoll ISR          GIF4          LL_DMA_IsActiveFlag_GI4
01118   * @param  DMAx DMAx Instance
01119   * @retval State of bit (1 or 0).
01120   */
01121 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI4(DMA_TypeDef* DMAx)
01122 {
01123   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF4) == (DMA_ISR_GIF4));
01124 }
01125 
01126 /**
01127   * @brief  Get Channel 5 global interrupt flag.
01128   * @rmtoll ISR          GIF5          LL_DMA_IsActiveFlag_GI5
01129   * @param  DMAx DMAx Instance
01130   * @retval State of bit (1 or 0).
01131   */
01132 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI5(DMA_TypeDef* DMAx)
01133 {
01134   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF5) == (DMA_ISR_GIF5));
01135 }
01136 
01137 /**
01138   * @brief  Get Channel 6 global interrupt flag.
01139   * @rmtoll ISR          GIF6          LL_DMA_IsActiveFlag_GI6
01140   * @param  DMAx DMAx Instance
01141   * @retval State of bit (1 or 0).
01142   */
01143 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI6(DMA_TypeDef* DMAx)
01144 {
01145   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF6) == (DMA_ISR_GIF6));
01146 }
01147 
01148 /**
01149   * @brief  Get Channel 7 global interrupt flag.
01150   * @rmtoll ISR          GIF7          LL_DMA_IsActiveFlag_GI7
01151   * @param  DMAx DMAx Instance
01152   * @retval State of bit (1 or 0).
01153   */
01154 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_GI7(DMA_TypeDef* DMAx)
01155 {
01156   return (READ_BIT(DMAx->ISR, DMA_ISR_GIF7) == (DMA_ISR_GIF7));
01157 }
01158 
01159 /**
01160   * @brief  Get Channel 1 transfer complete flag.
01161   * @rmtoll ISR          TCIF1         LL_DMA_IsActiveFlag_TC1
01162   * @param  DMAx DMAx Instance
01163   * @retval State of bit (1 or 0).
01164   */
01165 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC1(DMA_TypeDef* DMAx)
01166 {
01167   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF1) == (DMA_ISR_TCIF1));
01168 }
01169 
01170 /**
01171   * @brief  Get Channel 2 transfer complete flag.
01172   * @rmtoll ISR          TCIF2         LL_DMA_IsActiveFlag_TC2
01173   * @param  DMAx DMAx Instance
01174   * @retval State of bit (1 or 0).
01175   */
01176 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC2(DMA_TypeDef* DMAx)
01177 {
01178   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF2) == (DMA_ISR_TCIF2));
01179 }
01180 
01181 /**
01182   * @brief  Get Channel 3 transfer complete flag.
01183   * @rmtoll ISR          TCIF3         LL_DMA_IsActiveFlag_TC3
01184   * @param  DMAx DMAx Instance
01185   * @retval State of bit (1 or 0).
01186   */
01187 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC3(DMA_TypeDef* DMAx)
01188 {
01189   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF3) == (DMA_ISR_TCIF3));
01190 }
01191 
01192 /**
01193   * @brief  Get Channel 4 transfer complete flag.
01194   * @rmtoll ISR          TCIF4         LL_DMA_IsActiveFlag_TC4
01195   * @param  DMAx DMAx Instance
01196   * @retval State of bit (1 or 0).
01197   */
01198 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC4(DMA_TypeDef* DMAx)
01199 {
01200   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF4) == (DMA_ISR_TCIF4));
01201 }
01202 
01203 /**
01204   * @brief  Get Channel 5 transfer complete flag.
01205   * @rmtoll ISR          TCIF5         LL_DMA_IsActiveFlag_TC5
01206   * @param  DMAx DMAx Instance
01207   * @retval State of bit (1 or 0).
01208   */
01209 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC5(DMA_TypeDef* DMAx)
01210 {
01211   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF5) == (DMA_ISR_TCIF5));
01212 }
01213 
01214 /**
01215   * @brief  Get Channel 6 transfer complete flag.
01216   * @rmtoll ISR          TCIF6         LL_DMA_IsActiveFlag_TC6
01217   * @param  DMAx DMAx Instance
01218   * @retval State of bit (1 or 0).
01219   */
01220 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC6(DMA_TypeDef* DMAx)
01221 {
01222   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF6) == (DMA_ISR_TCIF6));
01223 }
01224 
01225 /**
01226   * @brief  Get Channel 7 transfer complete flag.
01227   * @rmtoll ISR          TCIF7         LL_DMA_IsActiveFlag_TC7
01228   * @param  DMAx DMAx Instance
01229   * @retval State of bit (1 or 0).
01230   */
01231 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TC7(DMA_TypeDef* DMAx)
01232 {
01233   return (READ_BIT(DMAx->ISR, DMA_ISR_TCIF7) == (DMA_ISR_TCIF7));
01234 }
01235 
01236 /**
01237   * @brief  Get Channel 1 half transfer flag.
01238   * @rmtoll ISR          HTIF1         LL_DMA_IsActiveFlag_HT1
01239   * @param  DMAx DMAx Instance
01240   * @retval State of bit (1 or 0).
01241   */
01242 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT1(DMA_TypeDef* DMAx)
01243 {
01244   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF1) == (DMA_ISR_HTIF1));
01245 }
01246 
01247 /**
01248   * @brief  Get Channel 2 half transfer flag.
01249   * @rmtoll ISR          HTIF2         LL_DMA_IsActiveFlag_HT2
01250   * @param  DMAx DMAx Instance
01251   * @retval State of bit (1 or 0).
01252   */
01253 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT2(DMA_TypeDef* DMAx)
01254 {
01255   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF2) == (DMA_ISR_HTIF2));
01256 }
01257 
01258 /**
01259   * @brief  Get Channel 3 half transfer flag.
01260   * @rmtoll ISR          HTIF3         LL_DMA_IsActiveFlag_HT3
01261   * @param  DMAx DMAx Instance
01262   * @retval State of bit (1 or 0).
01263   */
01264 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT3(DMA_TypeDef* DMAx)
01265 {
01266   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF3) == (DMA_ISR_HTIF3));
01267 }
01268 
01269 /**
01270   * @brief  Get Channel 4 half transfer flag.
01271   * @rmtoll ISR          HTIF4         LL_DMA_IsActiveFlag_HT4
01272   * @param  DMAx DMAx Instance
01273   * @retval State of bit (1 or 0).
01274   */
01275 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT4(DMA_TypeDef* DMAx)
01276 {
01277   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF4) == (DMA_ISR_HTIF4));
01278 }
01279 
01280 /**
01281   * @brief  Get Channel 5 half transfer flag.
01282   * @rmtoll ISR          HTIF5         LL_DMA_IsActiveFlag_HT5
01283   * @param  DMAx DMAx Instance
01284   * @retval State of bit (1 or 0).
01285   */
01286 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT5(DMA_TypeDef* DMAx)
01287 {
01288   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF5) == (DMA_ISR_HTIF5));
01289 }
01290 
01291 /**
01292   * @brief  Get Channel 6 half transfer flag.
01293   * @rmtoll ISR          HTIF6         LL_DMA_IsActiveFlag_HT6
01294   * @param  DMAx DMAx Instance
01295   * @retval State of bit (1 or 0).
01296   */
01297 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT6(DMA_TypeDef* DMAx)
01298 {
01299   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF6) == (DMA_ISR_HTIF6));
01300 }
01301 
01302 /**
01303   * @brief  Get Channel 7 half transfer flag.
01304   * @rmtoll ISR          HTIF7         LL_DMA_IsActiveFlag_HT7
01305   * @param  DMAx DMAx Instance
01306   * @retval State of bit (1 or 0).
01307   */
01308 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_HT7(DMA_TypeDef* DMAx)
01309 {
01310   return (READ_BIT(DMAx->ISR, DMA_ISR_HTIF7) == (DMA_ISR_HTIF7));
01311 }
01312 
01313 /**
01314   * @brief  Get Channel 1 transfer error flag.
01315   * @rmtoll ISR          TEIF1         LL_DMA_IsActiveFlag_TE1
01316   * @param  DMAx DMAx Instance
01317   * @retval State of bit (1 or 0).
01318   */
01319 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE1(DMA_TypeDef* DMAx)
01320 {
01321   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF1) == (DMA_ISR_TEIF1));
01322 }
01323 
01324 /**
01325   * @brief  Get Channel 2 transfer error flag.
01326   * @rmtoll ISR          TEIF2         LL_DMA_IsActiveFlag_TE2
01327   * @param  DMAx DMAx Instance
01328   * @retval State of bit (1 or 0).
01329   */
01330 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE2(DMA_TypeDef* DMAx)
01331 {
01332   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF2) == (DMA_ISR_TEIF2));
01333 }
01334 
01335 /**
01336   * @brief  Get Channel 3 transfer error flag.
01337   * @rmtoll ISR          TEIF3         LL_DMA_IsActiveFlag_TE3
01338   * @param  DMAx DMAx Instance
01339   * @retval State of bit (1 or 0).
01340   */
01341 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE3(DMA_TypeDef* DMAx)
01342 {
01343   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF3) == (DMA_ISR_TEIF3));
01344 }
01345 
01346 /**
01347   * @brief  Get Channel 4 transfer error flag.
01348   * @rmtoll ISR          TEIF4         LL_DMA_IsActiveFlag_TE4
01349   * @param  DMAx DMAx Instance
01350   * @retval State of bit (1 or 0).
01351   */
01352 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE4(DMA_TypeDef* DMAx)
01353 {
01354   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF4) == (DMA_ISR_TEIF4));
01355 }
01356 
01357 /**
01358   * @brief  Get Channel 5 transfer error flag.
01359   * @rmtoll ISR          TEIF5         LL_DMA_IsActiveFlag_TE5
01360   * @param  DMAx DMAx Instance
01361   * @retval State of bit (1 or 0).
01362   */
01363 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE5(DMA_TypeDef* DMAx)
01364 {
01365   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF5) == (DMA_ISR_TEIF5));
01366 }
01367 
01368 /**
01369   * @brief  Get Channel 6 transfer error flag.
01370   * @rmtoll ISR          TEIF6         LL_DMA_IsActiveFlag_TE6
01371   * @param  DMAx DMAx Instance
01372   * @retval State of bit (1 or 0).
01373   */
01374 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE6(DMA_TypeDef* DMAx)
01375 {
01376   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF6) == (DMA_ISR_TEIF6));
01377 }
01378 
01379 /**
01380   * @brief  Get Channel 7 transfer error flag.
01381   * @rmtoll ISR          TEIF7         LL_DMA_IsActiveFlag_TE7
01382   * @param  DMAx DMAx Instance
01383   * @retval State of bit (1 or 0).
01384   */
01385 __STATIC_INLINE uint32_t LL_DMA_IsActiveFlag_TE7(DMA_TypeDef* DMAx)
01386 {
01387   return (READ_BIT(DMAx->ISR, DMA_ISR_TEIF7) == (DMA_ISR_TEIF7));
01388 }
01389 
01390 /**
01391   * @brief  Clear Channel 1 global interrupt flag.
01392   * @rmtoll IFCR         CGIF1         LL_DMA_ClearFlag_GI1
01393   * @param  DMAx DMAx Instance
01394   * @retval None
01395   */
01396 __STATIC_INLINE void LL_DMA_ClearFlag_GI1(DMA_TypeDef* DMAx)
01397 {
01398   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF1);
01399 }
01400 
01401 /**
01402   * @brief  Clear Channel 2 global interrupt flag.
01403   * @rmtoll IFCR         CGIF2         LL_DMA_ClearFlag_GI2
01404   * @param  DMAx DMAx Instance
01405   * @retval None
01406   */
01407 __STATIC_INLINE void LL_DMA_ClearFlag_GI2(DMA_TypeDef* DMAx)
01408 {
01409   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF2);
01410 }
01411 
01412 /**
01413   * @brief  Clear Channel 3 global interrupt flag.
01414   * @rmtoll IFCR         CGIF3         LL_DMA_ClearFlag_GI3
01415   * @param  DMAx DMAx Instance
01416   * @retval None
01417   */
01418 __STATIC_INLINE void LL_DMA_ClearFlag_GI3(DMA_TypeDef* DMAx)
01419 {
01420   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF3);
01421 }
01422 
01423 /**
01424   * @brief  Clear Channel 4 global interrupt flag.
01425   * @rmtoll IFCR         CGIF4         LL_DMA_ClearFlag_GI4
01426   * @param  DMAx DMAx Instance
01427   * @retval None
01428   */
01429 __STATIC_INLINE void LL_DMA_ClearFlag_GI4(DMA_TypeDef* DMAx)
01430 {
01431   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF4);
01432 }
01433 
01434 /**
01435   * @brief  Clear Channel 5 global interrupt flag.
01436   * @rmtoll IFCR         CGIF5         LL_DMA_ClearFlag_GI5
01437   * @param  DMAx DMAx Instance
01438   * @retval None
01439   */
01440 __STATIC_INLINE void LL_DMA_ClearFlag_GI5(DMA_TypeDef* DMAx)
01441 {
01442   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF5);
01443 }
01444 
01445 /**
01446   * @brief  Clear Channel 6 global interrupt flag.
01447   * @rmtoll IFCR         CGIF6         LL_DMA_ClearFlag_GI6
01448   * @param  DMAx DMAx Instance
01449   * @retval None
01450   */
01451 __STATIC_INLINE void LL_DMA_ClearFlag_GI6(DMA_TypeDef* DMAx)
01452 {
01453   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF6);
01454 }
01455 
01456 /**
01457   * @brief  Clear Channel 7 global interrupt flag.
01458   * @rmtoll IFCR         CGIF7         LL_DMA_ClearFlag_GI7
01459   * @param  DMAx DMAx Instance
01460   * @retval None
01461   */
01462 __STATIC_INLINE void LL_DMA_ClearFlag_GI7(DMA_TypeDef* DMAx)
01463 {
01464   SET_BIT(DMAx->IFCR, DMA_IFCR_CGIF7);
01465 }
01466 
01467 /**
01468   * @brief  Clear Channel 1  transfer complete flag.
01469   * @rmtoll IFCR         CTCIF1        LL_DMA_ClearFlag_TC1
01470   * @param  DMAx DMAx Instance
01471   * @retval None
01472   */
01473 __STATIC_INLINE void LL_DMA_ClearFlag_TC1(DMA_TypeDef* DMAx)
01474 {
01475   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF1);
01476 }
01477 
01478 /**
01479   * @brief  Clear Channel 2  transfer complete flag.
01480   * @rmtoll IFCR         CTCIF2        LL_DMA_ClearFlag_TC2
01481   * @param  DMAx DMAx Instance
01482   * @retval None
01483   */
01484 __STATIC_INLINE void LL_DMA_ClearFlag_TC2(DMA_TypeDef* DMAx)
01485 {
01486   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF2);
01487 }
01488 
01489 /**
01490   * @brief  Clear Channel 3  transfer complete flag.
01491   * @rmtoll IFCR         CTCIF3        LL_DMA_ClearFlag_TC3
01492   * @param  DMAx DMAx Instance
01493   * @retval None
01494   */
01495 __STATIC_INLINE void LL_DMA_ClearFlag_TC3(DMA_TypeDef* DMAx)
01496 {
01497   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF3);
01498 }
01499 
01500 /**
01501   * @brief  Clear Channel 4  transfer complete flag.
01502   * @rmtoll IFCR         CTCIF4        LL_DMA_ClearFlag_TC4
01503   * @param  DMAx DMAx Instance
01504   * @retval None
01505   */
01506 __STATIC_INLINE void LL_DMA_ClearFlag_TC4(DMA_TypeDef* DMAx)
01507 {
01508   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF4);
01509 }
01510 
01511 /**
01512   * @brief  Clear Channel 5  transfer complete flag.
01513   * @rmtoll IFCR         CTCIF5        LL_DMA_ClearFlag_TC5
01514   * @param  DMAx DMAx Instance
01515   * @retval None
01516   */
01517 __STATIC_INLINE void LL_DMA_ClearFlag_TC5(DMA_TypeDef* DMAx)
01518 {
01519   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF5);
01520 }
01521 
01522 /**
01523   * @brief  Clear Channel 6  transfer complete flag.
01524   * @rmtoll IFCR         CTCIF6        LL_DMA_ClearFlag_TC6
01525   * @param  DMAx DMAx Instance
01526   * @retval None
01527   */
01528 __STATIC_INLINE void LL_DMA_ClearFlag_TC6(DMA_TypeDef* DMAx)
01529 {
01530   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF6);
01531 }
01532 
01533 /**
01534   * @brief  Clear Channel 7  transfer complete flag.
01535   * @rmtoll IFCR         CTCIF7        LL_DMA_ClearFlag_TC7
01536   * @param  DMAx DMAx Instance
01537   * @retval None
01538   */
01539 __STATIC_INLINE void LL_DMA_ClearFlag_TC7(DMA_TypeDef* DMAx)
01540 {
01541   SET_BIT(DMAx->IFCR, DMA_IFCR_CTCIF7);
01542 }
01543 
01544 /**
01545   * @brief  Clear Channel 1  half transfer flag.
01546   * @rmtoll IFCR         CHTIF1        LL_DMA_ClearFlag_HT1
01547   * @param  DMAx DMAx Instance
01548   * @retval None
01549   */
01550 __STATIC_INLINE void LL_DMA_ClearFlag_HT1(DMA_TypeDef* DMAx)
01551 {
01552   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF1);
01553 }
01554 
01555 /**
01556   * @brief  Clear Channel 2  half transfer flag.
01557   * @rmtoll IFCR         CHTIF2        LL_DMA_ClearFlag_HT2
01558   * @param  DMAx DMAx Instance
01559   * @retval None
01560   */
01561 __STATIC_INLINE void LL_DMA_ClearFlag_HT2(DMA_TypeDef* DMAx)
01562 {
01563   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF2);
01564 }
01565 
01566 /**
01567   * @brief  Clear Channel 3  half transfer flag.
01568   * @rmtoll IFCR         CHTIF3        LL_DMA_ClearFlag_HT3
01569   * @param  DMAx DMAx Instance
01570   * @retval None
01571   */
01572 __STATIC_INLINE void LL_DMA_ClearFlag_HT3(DMA_TypeDef* DMAx)
01573 {
01574   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF3);
01575 }
01576 
01577 /**
01578   * @brief  Clear Channel 4  half transfer flag.
01579   * @rmtoll IFCR         CHTIF4        LL_DMA_ClearFlag_HT4
01580   * @param  DMAx DMAx Instance
01581   * @retval None
01582   */
01583 __STATIC_INLINE void LL_DMA_ClearFlag_HT4(DMA_TypeDef* DMAx)
01584 {
01585   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF4);
01586 }
01587 
01588 /**
01589   * @brief  Clear Channel 5  half transfer flag.
01590   * @rmtoll IFCR         CHTIF5        LL_DMA_ClearFlag_HT5
01591   * @param  DMAx DMAx Instance
01592   * @retval None
01593   */
01594 __STATIC_INLINE void LL_DMA_ClearFlag_HT5(DMA_TypeDef* DMAx)
01595 {
01596   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF5);
01597 }
01598 
01599 /**
01600   * @brief  Clear Channel 6  half transfer flag.
01601   * @rmtoll IFCR         CHTIF6        LL_DMA_ClearFlag_HT6
01602   * @param  DMAx DMAx Instance
01603   * @retval None
01604   */
01605 __STATIC_INLINE void LL_DMA_ClearFlag_HT6(DMA_TypeDef* DMAx)
01606 {
01607   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF6);
01608 }
01609 
01610 /**
01611   * @brief  Clear Channel 7  half transfer flag.
01612   * @rmtoll IFCR         CHTIF7        LL_DMA_ClearFlag_HT7
01613   * @param  DMAx DMAx Instance
01614   * @retval None
01615   */
01616 __STATIC_INLINE void LL_DMA_ClearFlag_HT7(DMA_TypeDef* DMAx)
01617 {
01618   SET_BIT(DMAx->IFCR, DMA_IFCR_CHTIF7);
01619 }
01620 
01621 /**
01622   * @brief  Clear Channel 1 transfer error flag.
01623   * @rmtoll IFCR         CTEIF1        LL_DMA_ClearFlag_TE1
01624   * @param  DMAx DMAx Instance
01625   * @retval None
01626   */
01627 __STATIC_INLINE void LL_DMA_ClearFlag_TE1(DMA_TypeDef* DMAx)
01628 {
01629   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF1);
01630 }
01631 
01632 /**
01633   * @brief  Clear Channel 2 transfer error flag.
01634   * @rmtoll IFCR         CTEIF2        LL_DMA_ClearFlag_TE2
01635   * @param  DMAx DMAx Instance
01636   * @retval None
01637   */
01638 __STATIC_INLINE void LL_DMA_ClearFlag_TE2(DMA_TypeDef* DMAx)
01639 {
01640   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF2);
01641 }
01642 
01643 /**
01644   * @brief  Clear Channel 3 transfer error flag.
01645   * @rmtoll IFCR         CTEIF3        LL_DMA_ClearFlag_TE3
01646   * @param  DMAx DMAx Instance
01647   * @retval None
01648   */
01649 __STATIC_INLINE void LL_DMA_ClearFlag_TE3(DMA_TypeDef* DMAx)
01650 {
01651   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF3);
01652 }
01653 
01654 /**
01655   * @brief  Clear Channel 4 transfer error flag.
01656   * @rmtoll IFCR         CTEIF4        LL_DMA_ClearFlag_TE4
01657   * @param  DMAx DMAx Instance
01658   * @retval None
01659   */
01660 __STATIC_INLINE void LL_DMA_ClearFlag_TE4(DMA_TypeDef* DMAx)
01661 {
01662   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF4);
01663 }
01664 
01665 /**
01666   * @brief  Clear Channel 5 transfer error flag.
01667   * @rmtoll IFCR         CTEIF5        LL_DMA_ClearFlag_TE5
01668   * @param  DMAx DMAx Instance
01669   * @retval None
01670   */
01671 __STATIC_INLINE void LL_DMA_ClearFlag_TE5(DMA_TypeDef* DMAx)
01672 {
01673   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF5);
01674 }
01675 
01676 /**
01677   * @brief  Clear Channel 6 transfer error flag.
01678   * @rmtoll IFCR         CTEIF6        LL_DMA_ClearFlag_TE6
01679   * @param  DMAx DMAx Instance
01680   * @retval None
01681   */
01682 __STATIC_INLINE void LL_DMA_ClearFlag_TE6(DMA_TypeDef* DMAx)
01683 {
01684   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF6);
01685 }
01686 
01687 /**
01688   * @brief  Clear Channel 7 transfer error flag.
01689   * @rmtoll IFCR         CTEIF7        LL_DMA_ClearFlag_TE7
01690   * @param  DMAx DMAx Instance
01691   * @retval None
01692   */
01693 __STATIC_INLINE void LL_DMA_ClearFlag_TE7(DMA_TypeDef* DMAx)
01694 {
01695   SET_BIT(DMAx->IFCR, DMA_IFCR_CTEIF7);
01696 }
01697 
01698 /**
01699   * @}
01700   */
01701 
01702 /** @defgroup DMA_LL_EF_IT_Management IT_Management
01703   * @{
01704   */
01705 /**
01706   * @brief  Enable Transfer complete interrupt.
01707   * @rmtoll CCR          TCIE          LL_DMA_EnableIT_TC
01708   * @param  DMAx DMAx Instance
01709   * @param  Channel This parameter can be one of the following values:
01710   *         @arg @ref LL_DMA_CHANNEL_1
01711   *         @arg @ref LL_DMA_CHANNEL_2
01712   *         @arg @ref LL_DMA_CHANNEL_3
01713   *         @arg @ref LL_DMA_CHANNEL_4
01714   *         @arg @ref LL_DMA_CHANNEL_5
01715   *         @arg @ref LL_DMA_CHANNEL_6
01716   *         @arg @ref LL_DMA_CHANNEL_7
01717   * @retval None
01718   */
01719 __STATIC_INLINE void LL_DMA_EnableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel)
01720 {
01721   SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_TCIE);
01722 }
01723 
01724 /**
01725   * @brief  Enable Half transfer interrupt.
01726   * @rmtoll CCR          HTIE          LL_DMA_EnableIT_HT
01727   * @param  DMAx DMAx Instance
01728   * @param  Channel This parameter can be one of the following values:
01729   *         @arg @ref LL_DMA_CHANNEL_1
01730   *         @arg @ref LL_DMA_CHANNEL_2
01731   *         @arg @ref LL_DMA_CHANNEL_3
01732   *         @arg @ref LL_DMA_CHANNEL_4
01733   *         @arg @ref LL_DMA_CHANNEL_5
01734   *         @arg @ref LL_DMA_CHANNEL_6
01735   *         @arg @ref LL_DMA_CHANNEL_7
01736   * @retval None
01737   */
01738 __STATIC_INLINE void LL_DMA_EnableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel)
01739 {
01740   SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_HTIE);
01741 }
01742 
01743 /**
01744   * @brief  Enable Transfer error interrupt.
01745   * @rmtoll CCR          TEIE          LL_DMA_EnableIT_TE
01746   * @param  DMAx DMAx Instance
01747   * @param  Channel This parameter can be one of the following values:
01748   *         @arg @ref LL_DMA_CHANNEL_1
01749   *         @arg @ref LL_DMA_CHANNEL_2
01750   *         @arg @ref LL_DMA_CHANNEL_3
01751   *         @arg @ref LL_DMA_CHANNEL_4
01752   *         @arg @ref LL_DMA_CHANNEL_5
01753   *         @arg @ref LL_DMA_CHANNEL_6
01754   *         @arg @ref LL_DMA_CHANNEL_7
01755   * @retval None
01756   */
01757 __STATIC_INLINE void LL_DMA_EnableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel)
01758 {
01759   SET_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_TEIE);
01760 }
01761 
01762 /**
01763   * @brief  Disable Transfer complete interrupt.
01764   * @rmtoll CCR          TCIE          LL_DMA_DisableIT_TC
01765   * @param  DMAx DMAx Instance
01766   * @param  Channel This parameter can be one of the following values:
01767   *         @arg @ref LL_DMA_CHANNEL_1
01768   *         @arg @ref LL_DMA_CHANNEL_2
01769   *         @arg @ref LL_DMA_CHANNEL_3
01770   *         @arg @ref LL_DMA_CHANNEL_4
01771   *         @arg @ref LL_DMA_CHANNEL_5
01772   *         @arg @ref LL_DMA_CHANNEL_6
01773   *         @arg @ref LL_DMA_CHANNEL_7
01774   * @retval None
01775   */
01776 __STATIC_INLINE void LL_DMA_DisableIT_TC(DMA_TypeDef *DMAx, uint32_t Channel)
01777 {
01778   CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_TCIE);
01779 }
01780 
01781 /**
01782   * @brief  Disable Half transfer interrupt.
01783   * @rmtoll CCR          HTIE          LL_DMA_DisableIT_HT
01784   * @param  DMAx DMAx Instance
01785   * @param  Channel This parameter can be one of the following values:
01786   *         @arg @ref LL_DMA_CHANNEL_1
01787   *         @arg @ref LL_DMA_CHANNEL_2
01788   *         @arg @ref LL_DMA_CHANNEL_3
01789   *         @arg @ref LL_DMA_CHANNEL_4
01790   *         @arg @ref LL_DMA_CHANNEL_5
01791   *         @arg @ref LL_DMA_CHANNEL_6
01792   *         @arg @ref LL_DMA_CHANNEL_7
01793   * @retval None
01794   */
01795 __STATIC_INLINE void LL_DMA_DisableIT_HT(DMA_TypeDef *DMAx, uint32_t Channel)
01796 {
01797   CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_HTIE);
01798 }
01799 
01800 /**
01801   * @brief  Disable Transfer error interrupt.
01802   * @rmtoll CCR          TEIE          LL_DMA_DisableIT_TE
01803   * @param  DMAx DMAx Instance
01804   * @param  Channel This parameter can be one of the following values:
01805   *         @arg @ref LL_DMA_CHANNEL_1
01806   *         @arg @ref LL_DMA_CHANNEL_2
01807   *         @arg @ref LL_DMA_CHANNEL_3
01808   *         @arg @ref LL_DMA_CHANNEL_4
01809   *         @arg @ref LL_DMA_CHANNEL_5
01810   *         @arg @ref LL_DMA_CHANNEL_6
01811   *         @arg @ref LL_DMA_CHANNEL_7
01812   * @retval None
01813   */
01814 __STATIC_INLINE void LL_DMA_DisableIT_TE(DMA_TypeDef *DMAx, uint32_t Channel)
01815 {
01816   CLEAR_BIT(((DMA_Channel_TypeDef *)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel - 1])))->CCR, DMA_CCR_TEIE);
01817 }
01818 
01819 /**
01820   * @brief  Check if Transfer complete Interrup is enabled.
01821   * @rmtoll CCR          TCIE          LL_DMA_IsEnabledIT_TC
01822   * @param  DMAx DMAx Instance
01823   * @param  Channel This parameter can be one of the following values:
01824   *         @arg @ref LL_DMA_CHANNEL_1
01825   *         @arg @ref LL_DMA_CHANNEL_2
01826   *         @arg @ref LL_DMA_CHANNEL_3
01827   *         @arg @ref LL_DMA_CHANNEL_4
01828   *         @arg @ref LL_DMA_CHANNEL_5
01829   *         @arg @ref LL_DMA_CHANNEL_6
01830   *         @arg @ref LL_DMA_CHANNEL_7
01831   * @retval State of bit (1 or 0).
01832   */
01833 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TC(DMA_TypeDef *DMAx, uint32_t Channel)
01834 {
01835   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_TCIE) == (DMA_CCR_TCIE));
01836 }
01837 
01838 /**
01839   * @brief  Check if Half transfer Interrup is enabled.
01840   * @rmtoll CCR          HTIE          LL_DMA_IsEnabledIT_HT
01841   * @param  DMAx DMAx Instance
01842   * @param  Channel This parameter can be one of the following values:
01843   *         @arg @ref LL_DMA_CHANNEL_1
01844   *         @arg @ref LL_DMA_CHANNEL_2
01845   *         @arg @ref LL_DMA_CHANNEL_3
01846   *         @arg @ref LL_DMA_CHANNEL_4
01847   *         @arg @ref LL_DMA_CHANNEL_5
01848   *         @arg @ref LL_DMA_CHANNEL_6
01849   *         @arg @ref LL_DMA_CHANNEL_7
01850   * @retval State of bit (1 or 0).
01851   */
01852 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_HT(DMA_TypeDef *DMAx, uint32_t Channel)
01853 {
01854   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_HTIE) == (DMA_CCR_HTIE));
01855 }
01856 
01857 /**
01858   * @brief  Check if Transfer error Interrup is enabled.
01859   * @rmtoll CCR          TEIE          LL_DMA_IsEnabledIT_TE
01860   * @param  DMAx DMAx Instance
01861   * @param  Channel This parameter can be one of the following values:
01862   *         @arg @ref LL_DMA_CHANNEL_1
01863   *         @arg @ref LL_DMA_CHANNEL_2
01864   *         @arg @ref LL_DMA_CHANNEL_3
01865   *         @arg @ref LL_DMA_CHANNEL_4
01866   *         @arg @ref LL_DMA_CHANNEL_5
01867   *         @arg @ref LL_DMA_CHANNEL_6
01868   *         @arg @ref LL_DMA_CHANNEL_7
01869   * @retval State of bit (1 or 0).
01870   */
01871 __STATIC_INLINE uint32_t LL_DMA_IsEnabledIT_TE(DMA_TypeDef *DMAx, uint32_t Channel)
01872 {
01873   return (READ_BIT(((DMA_Channel_TypeDef*)((uint32_t)((uint32_t)DMAx + CHANNEL_OFFSET_TAB[Channel-1])))->CCR, DMA_CCR_TEIE) == (DMA_CCR_TEIE));
01874 }
01875 
01876 /**
01877   * @}
01878   */
01879 
01880 
01881 /**
01882   * @}
01883   */
01884 
01885 /**
01886   * @}
01887   */
01888 
01889 #endif /* DMA1 || DMA2 */
01890 
01891 /**
01892   * @}
01893   */
01894 
01895 #ifdef __cplusplus
01896 }
01897 #endif
01898 
01899 #endif /* __STM32L4xx_LL_DMA_H */
01900 
01901 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
01902