STM32 之 DMA

//时钟配置
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); }

 

posted @ 2016-01-25 14:11  bdcliang  阅读(320)  评论(0编辑  收藏  举报

bdcliang