hal_dma.h

来自「最新版IAR FOR ARM(EWARM)5.11中的代码例子」· C头文件 代码 · 共 127 行

H
127
字号
//-----------------------------------------------------------------------------
// HAL_DMA
//-----------------------------------------------------------------------------
#ifndef HAL_DMA_H
#define HAL_DMA_H

#include "hal_map.h"

typedef union {
  struct {
    u32 address;
  };
  struct {
    u16 address_h;
    u16 address_l;
  };
}Address_SrcDest;

//*************************************************
//REGISTER DMACtrl
//*************************************************

//*********  Masks
#define DMA_DMACtrl_Mask 0x27FF

#define DMA_Enable    0x0001
#define DMA_SoInc     0x0006
#define DMA_DeInc     0x0018
#define DMA_SoSize    0x0060
#define DMA_SoBurst   0x0180
#define DMA_DeSize    0x0600
#define DMA_Mem2Mem   0x0800
#define DMA_Dir       0x2000

//*********  Values
//for DMA_SoSize DMA_DeSize
#define DMA_DeSize_8    0x0000
#define DMA_DeSize_16   0x0200
#define DMA_DeSize_32   0x0400

#define DMA_SoSize_8    0x0000
#define DMA_SoSize_16   0x0020
#define DMA_SoSize_32   0x0040

//for DMA_SoBurst
#define DMA_SoBurst_Single  0x0000
#define DMA_SoBurst_4       0x0080
#define DMA_SoBurst_8       0x0100
#define DMA_SoBurst_16      0x0180

//for DMA_SoInc
#define DMA_SoInc_unchanged 0x0000
#define DMA_SoInc_Inc       0x0002
#define DMA_SoInc_Dec       0x0004

//for DMA_SoInc
#define DMA_DeInc_unchanged 0x0000
#define DMA_DeInc_Inc       0x0008
#define DMA_DeInc_Dec       0x0010

//*************************************************
//REGISTER DMA_DMAMask
//*************************************************

//*********  Mask
#define DMA_DMAMask_Mask    0x00FF
//*********  Values
#define DMA_DMAMask_Mask0   0x0001
#define DMA_DMAMask_Mask1   0x0002
#define DMA_DMAMask_Mask2   0x0004
#define DMA_DMAMask_Mask3   0x0008
#define DMA_DMAMask_MaskE0  0x0010
#define DMA_DMAMask_MaskE1  0x0020
#define DMA_DMAMask_MaskE2  0x0040
#define DMA_DMAMask_MaskE3  0x0080

//*************************************************
//REGISTER DMA_DMAClr
//*************************************************
//*********  Mask
#define DMA_DMAClr_Mask     0x00FF

//*********  Values
#define DMA_DMAClr_Clear0   0x0001
#define DMA_DMAClr_Clear1   0x0002
#define DMA_DMAClr_Clear2   0x0004
#define DMA_DMAClr_Clear3   0x0008
#define DMA_DMAClr_ClearE0  0x0010
#define DMA_DMAClr_ClearE1  0x0020
#define DMA_DMAClr_ClearE2  0x0040
#define DMA_DMAClr_ClearE3  0x0080

//*************************************************
//REGISTER DMA_DMAStatus
//*************************************************
//*********  Mask
#define DMA_DMAStatus_Mask  0x0FFF

//*********  Values
#define DMA_DMAStatus_Int0        0x0001
#define DMA_DMAStatus_Int1        0x0002
#define DMA_DMAStatus_Int2        0x0004
#define DMA_DMAStatus_Int3        0x0008
#define DMA_DMAStatus_ErrorInt0   0x0010
#define DMA_DMAStatus_ErrorInt1   0x0020
#define DMA_DMAStatus_ErrorInt2   0x0040
#define DMA_DMAStatus_ErrorInt3   0x0080
#define DMA_DMAStatus_Active0     0x0100
#define DMA_DMAStatus_Active1     0x0200
#define DMA_DMAStatus_Active2     0x0400
#define DMA_DMAStatus_Active3     0x0800

//-----------------------------------------------------------------------------

int DMA_Init(DMA_TypeDef *channel, u32 count);
int DMA_SetSrcAddress(DMA_TypeDef *channel, u32 address);
int DMA_SetDstAddress(DMA_TypeDef *channel, u32 address);
void DMA_Start(DMA_TypeDef *channel);
void DMA_EnableInterrupt(DMA_TypeDef *channel);
void DMA_DisableInterrupt(DMA_TypeDef *channel);
void DMA_ClrInterrupt(DMA_TypeDef *channel);

//-----------------------------------------------------------------------------
#endif


⌨️ 快捷键说明

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