新手上路
- 积分
- 47
- 金钱
- 47
- 注册时间
- 2018-11-10
- 在线时间
- 15 小时
|

楼主 |
发表于 2018-11-29 07:21:47
|
显示全部楼层
DMA_InitTypeDef DMA_InitStructure;
//等待DMA可以配置状态
while(DMA_GetCmdStatus(DMA2_Stream0) != DISABLE);
DMA_DeInit(DMA2_Stream0);
DMA_Cmd(DMA2_Stream0, DISABLE);
DMA_InitStructure.DMA_Channel = DMA_Channel_0; //DMA通道0
DMA_InitStructure.DMA_PeripheralBaseAddr = (u32)(ADC1_BASE + 0x4C); //外设地址
DMA_InitStructure.DMA_Memory0BaseAddr = (u32)(m_nADCValue); //存取器变量地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory; //存储方向从外设到内存
DMA_InitStructure.DMA_BufferSize = 6; //数据传输的数量
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable; //关闭外设存储(增量模式)
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable; //激活内存存储(增量模式)
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord; //外设数据长度半个字(16位)
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord; //存储器数据长度半字(16位)
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular; //设置DMA存储模式为循环模式
DMA_InitStructure.DMA_Priority = DMA_Priority_High; //DMA优先级为高优先级
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable; //禁用FIFO模式
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull; //FIFO阈值 当前无效
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single; //外设突发,单次传输
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single; //存储器突发,单次传输
DMA_Init(DMA2_Stream0, &DMA_InitStructure); //初始化DMA2_Stream0,对应为ADC1
DMA_ClearITPendingBit(DMA2_Stream0, DMA_IT_TC); //清除中断标志
DMA_ITConfig(DMA2_Stream0, DMA_IT_TC, ENABLE); //传输完成中断
DMA_Cmd(DMA2_Stream0, ENABLE);//开启DMA传输
这个是DMA部分配置源码 |
|