⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 91x_dma.c

📁 a set or ARM9 examples by STM
💻 C
📖 第 1 页 / 共 3 页
字号:
/******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
* File Name          : 91x_dma.c
* Author             : MCD Application Team
* Date First Issued  : 05/18/2006 : Version 1.0
* Description        : This file provides all the DMA software functions
*                      needed to access all DMA registers.
********************************************************************************
* History:v 1.0
* 05/24/2006 : Version 1.1
* 05/18/2006 : Version 1.0
********************************************************************************
* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
*******************************************************************************/

/* Includes ------------------------------------------------------------------*/

# include"91x_dma.h"
# include"91x_scu.h"

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
/* Private variables ---------------------------------------------------------*/


/* DMA Masks "used" only in this module */

#define       DMA_Width_DES_MASK	            0xFF1FFFFF
#define       DMA_Width_SRC_MASK	            0xFFE3FFFF
#define       DMA_Bst_DES_MASK           	    0xFFFC7FFF
#define       DMA_Bst_SRC_MASK	                0xFFFF8FFF
#define       DMA_FlowCntrl_Mask	            0xFFFFC7FF
#define       DMA_TrsfSisze_Mask	            0xFFFFF000
#define       SRC_Mask	                        0xFFFFFFE1
#define       DES_Mask	                        0xFFFFFC3F
#define       DMA_TCIE	                        0x80000000
#define       DMA_ChannelDESInc	                0x08000000
#define       DMA_ChannelSRCInc	                0x04000000
#define       DMA_BufferChannel	                0x20000000
#define       DMA_HaltChannel	                0x00040000
#define       DMA_LockChannel	                0x00010000
#define       DMA_CacheChannel	                0x40000000
#define       DMA_ChannelActive	                0x00020000
#define       DMA_Enable                        0x00000001
#define       DMA_ChannelEnable                 0x00000001




/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/*******************************************************************************
* Function Name  : DMA_ITMaskConfig
* Description    : Enables or disables the specified DMA_Channelx Mask interrupt.
* Input          :
*                  -DMA_Channelx: where x can be 0,1,2,3,4,5,6,or 7 to select the DMA Channel.
*                  -DMA_ITMask: specifies the DMA interrupt mask source to be enabled or disabled.
*                                This parameter can be:
*                                    - DMA_ITMask_IE  (Interrupt error mask).
*                                    - DMA_ITMask_ITC (Terminal count interrupt mask).
*                                    - DMA_ITMask_ALL ( All interrupts mask)
*
*                  -NewState: new state of the specified DMA_Channelx mask interrupt.
*                             This parameter can be: ENABLE or DISABLE.
* Output         : None.
* Return         : None.
*******************************************************************************/


void DMA_ITMaskConfig(DMA_Channel_TypeDef * DMA_Channelx, u16 DMA_ITMask , FunctionalState NewState)

{
  if (NewState==ENABLE) /* Mask the Interrupt */
  {
    DMA_Channelx-> CCNF |= DMA_ITMask ;
  }

  else /* Disable the Interrupt Mask*/
  {
    DMA_Channelx-> CCNF &= ~ DMA_ITMask ;
  }
}





/*******************************************************************************
* Function Name  : DMA_ITConfig
* Description    : Enables or disables the DMA_Channelx Terminal Count interrupt.
* Input          :
*                 -DMA_Channelx: where x can be 0,1,2,3,4,5,6,or 7 to select the DMA Channel.
*                 -NewState: new state of the specified DMA_Channelx mask interrupt.
*                             This parameter can be: ENABLE or DISABLE.
* Output         : None.
* Return         : None.
*******************************************************************************/


void DMA_ITConfig(DMA_Channel_TypeDef * DMA_Channelx, FunctionalState NewState)

{
  if (NewState==ENABLE) /* Enable the Terminal Count Interrupt */
  {
    DMA_Channelx->CC |= DMA_TCIE ;
  }

  else /* Disable the Terminal Count Interrupt  */
  {
    DMA_Channelx-> CC &= ~ DMA_TCIE ;
  }
}


/********************************************************************************
* Function Name  : DMA_SyncConfig
* Description    : Enables or disables synchronization logic for the corresponding DMA Request Signal.
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
*
*                  -NewState: new state of the specified DMA_Channelx mask interrupt.
*                             This parameter can be: ENABLE or DISABLE.
* Output         : None.
* Return         : None.
*******************************************************************************/


void DMA_SyncConfig(u16 SRCReq, FunctionalState NewState)

{
  if (NewState==ENABLE) /* Enable the synchronization logic for the corresponding DMA Request Signal */
  {

    DMA->SYNR &= ~ SRCReq ;

  }

  else /* Disable the synchronization logic for the corresponding DMA Request Signal.  */
  {
    DMA->SYNR |= SRCReq ;

  }
}


/********************************************************************************
* Function Name  : DMA_SetSReq
* Description    : Set the DMA to generate a Single transfer request for the corresponding DMA Request Source.
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
*
* Output         : None.
* Return         : None.
*******************************************************************************/


void DMA_SetSReq(u16 SRCReq)

{ /* Set the DMA to generate a Single transfer request for the corresponding DMA Request Source */
  DMA->SSRR |= SRCReq ;
}




/********************************************************************************
* Function Name  : DMA_SetLSReq
* Description    : Set the DMA to generate a Last Single transfer request for the corresponding DMA Request Source.
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
* Output         : None.
* Return         : None.
*******************************************************************************/

void DMA_SetLSReq(u16 SRCReq )
{ /* Set the DMA to generate a Last Single transfer request for the corresponding DMA Request Source */
  DMA->SLSRR |= SRCReq ;
}


/********************************************************************************
* Function Name  : DMA_SetBReq
* Description    : Set the DMA to generate a Burst transfer request for the corresponding DMA Request Source.
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
* Output         : None.
* Return         : None.
*******************************************************************************/


void DMA_SetBReq(u16 SRCReq)

{ /* Set the DMA to generate a Burst transfer request for the corresponding DMA Request Source */
  DMA->SBRR |= SRCReq ;
}



/********************************************************************************
* Function Name  : DMA_SetLBReq
* Description    : Set the DMA to generate a Last Burst transfer request for the corresponding DMA Request Source.
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
* Output         : None.
* Return         : None.
*******************************************************************************/


void DMA_SetLBReq(u16 SRCReq)

{ /* Set the DMA to generate a Last Burst transfer request for the corresponding DMA Request Source */
  DMA->SLBRR |= SRCReq ;
}


/********************************************************************************
* Function Name  : DMA_GetSReq
* Description    : Check for a specific source if it request a Single transfer .
* Input          :
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
* Output         : None.
* Return         : SET or RESET.
*******************************************************************************/


FlagStatus DMA_GetSReq(u16 SRCReq)

{ /* Check for a specific source if it request a Single transfer . */
 if ( (DMA->SSRR & SRCReq )!= RESET )
 {
   return SET;
 }

 else
 {
  return RESET;
 }
}


/********************************************************************************
* Function Name  : DMA_GetLSReq
* Description    : Check for a specific source if it request a Last Single transfer .
* Input          :
*                 -SRCReq:specifies the DMA Request Source.
*                  This parameter can be:
*                     -DMA_USB_RX_Mask	           
*                     -DMA_USB_TX_Mask	           
*                     -DMA_TIM0_Mask	               
*                     -DMA_TIM1_Mask	              
*                     -DMA_UART0_RX_Mask             
*                     -DMA_UART0_TX_Mask             
*                     -DMA_UART1_RX_Mask           
*                     -DMA_UART1_TX_Mask            
*                     -DMA_External_Req0_Mask        
*                     -DMA_External_Req1_Mask	    
*                     -DMA_I2C0_Mask	                
*                     -DMA_I2C1_Mask	               
*                     -DMA_SSP0_RX_Mask	            
*                     -DMA_SSP0_TX_Mask	            
*                     -DMA_SSP1_RX_Mask	            
*                     -DMA_SSP1_TX_Mask	            
* Output         : None.
* Return         : SET or RESET.
*******************************************************************************/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -