昨天学习了DMA写了一个用DMA读取ADC数据的程序,记录下整个过程和一点心得
DMA配置详细说明
(MDK的汉字2复制过来就是乱码,我重新打了一遍注释,晕~)
//DMA1各通道配置
//外设->存储器/16位数据宽度
//DMA_CHx:DMA通道CHx
//cpar:外设地址
//cmar:存储器地址
//cndtr:数据传输量(因为我是一个16位的数据,所以是一)
void MYDMA_Config(DMA_Channel_TypeDef* DMA_CHx,u32 cpar,u32 cmar,u16 cndtr)
{
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //使能DMA时钟
DMA_DeInit(DMA_CHx); //重设DMA为缺省值
DMA_InitStructure.DMA_PeripheralBaseAddr = cpar; //外设地址
DMA_InitStructure.DMA_MemoryBaseAddr = cmar; //存储器地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC; //外设到存储器的传输模式
DMA_InitStructure.DMA_BufferSize = 1; //数据量为1(应该为cndtr参数)
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; //
DMA_InitStructure.DMA_PeripheralDataSize = DMA_P