📄 91x_dma.c
字号:
/******************** (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 + -