#ifndef __DMA_H #define __DMA_H #include "stm32f10x_dma.h" #include "stm32f10x.h" #include "usart.h" #include "misc.h" #include "sysTick.h" #include "Led.h" /**************************************************************************** * 自定义数据类型 ****************************************************************************/ typedef enum { DMA1_CH1 = 0 , DMA1_CH2 = 1 , DMA1_CH3 = 2 , DMA1_CH4 = 3 , DMA1_CH5 = 4 , DMA1_CH6 = 5 , DMA1_CH7 = 6 , //以上为DMA1的7个通道 DMA2_CH1 = 7 , DMA2_CH2 = 8 , DMA2_CH3 = 9 , DMA2_CH4 = 10 , DMA2_CH5 = 11 , //以上为DMA2的5个通道 DMA_CHSUM= 12 }DMACH_e ; /*DMA中断回调相关配置*/ typedef void (*DMAFP)(void) ; //定义函数指针类型变量 typedef enum { DMATC = 0 , //DMA传输完成中断 DMATE = 1 //DMA传输错误中断 // DMAHT = 2 , //DMA传输一半中断 // DMAGL = 3 //DMA1全局中断 }DMAIRQTYPE_e ; typedef enum { DMA_DIR_MTP = ((uint32_t)0x00000010) , //内存到外设 DMA_DIR_PTM = ((uint32_t)0x00000000) //外设到内存 }DMADIR_e ; //DMA数据传输方向 typedef enum { CIRCULAR = ((uint32_t)0x00000020) , //循环模式 NORMAL = ((uint32_t)0x00000000) //不循环 }DMAMODE_e ; //DMA数据传输是否循环传输 /******************************************************************************** *供外部使用的常变量 *********************************************************************************/ extern DMA_Channel_TypeDef* dmaChx[DMA_CHSUM] ; /******************************************************************************** *对内函数声明 *********************************************************************************/ void Dma_Hook(uint32_t DMAy_FLAG) ; /******************************************************************************** *对外接口函数声明 *********************************************************************************/ extern DMAFP Dma_RegHookCallback(DMACH_e DMA_CHx, DMAIRQTYPE_e eIrqType, DMAFP pCallback) ; extern void DMA_Config(DMACH_e DMA_CHx, u32 periAddr, u32 memAddr, DMADIR_e tranDire, DMAMODE_e CircMode, IntPriority_e ePriority);//配置DMA1_CHx extern void DMA1_Channel4_IRQHandler(void) ; #endif