//时钟配置
void RCC_Configuartion(void)
{
RCC_APB2PeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);//打开DMA1时钟
}
//中断管理配置
void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM,0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH,0x0);
#endif
NVIC_InitStructure.NVIC_IRQChannel=DMA1_Channel6_IRQ;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=0;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_Init(&NVIC_InitStructure);
}
//DMA配置
void DMA_Configuration(void)
{
DMA_InitTypeDef DMA_InitStructure;
DMA_Init(DMA_Channel6);
DMA_InitStructure.DMA_PeripheralBaseAddr=(u32) SRC_Const_Buffer;
DMA_InitStructure.MDA_MemoryBaseAddr=(u32)DST_Buffer;
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize=BufferSize;//32
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripherialInc_Enable;
DMA_InitStructure.DMA_MemoryInc=DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize=DMA_MemoryDataSize_Word;
DMA_InitStructure.DMA_Mode=DMA_Priority=DMA_Mode_Normal;
DMA_InitStructure.DMA_Priority=DMA_Priority_High;
DMA_InitStructure.DMA_M2M=DMA_M2M_Enable;
DMA_Init(DMA1_Chanel6,&DMA_InitStructure);
DMA_ITConfig(DMA1_Channel6,DMA_IT_TC,ENABLE);//开启DMA完成中断
CurrDataCounter=DMA_GetCurrDataCounter(DMA1_Channel6);//读出当前数据量计数值
}
//中断函数入口
void DMA1_Channel6_IRQHandler(void)
{
CurrDataCounterDMA_GetCurrData_Counter(DMA1_Channel6);
DMA_ClearITPendingBit(DMA1_IT_GL6);
}