stm32_ota/SYSTEM/DMA/dma.h

75 lines
2.1 KiB
C

#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