初级会员

- 积分
- 97
- 金钱
- 97
- 注册时间
- 2013-3-30
- 在线时间
- 3 小时
|

楼主 |
发表于 2013-11-3 21:08:27
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
u16 ADC_Buf[300];//保存DMA每次数据传送的长度
//DMA1的各通道配置
//这里的传输形式是固定的,这点要根据不同的情况来修改
//从存储器->外设模式/8位数据宽度/存储器增量模式
//DMA_CHx MA通道CHx
//cpar:外设地址
//cmar:存储器地址
//cndtr:数据传输量
void MYDMA_Config(DMA_Channel_TypeDef*DMA_CHx,u32 cpar)
{
RCC->AHBENR|=1<<0; //开启DMA1时钟
delay_ms(5); //等待DMA时钟稳定
DMA_CHx->CPAR=cpar; //DMA1 外设地址
DMA_CHx->CMAR=(u32)ADC_Buf; //DMA1,存储器地址
DMA_CHx->CNDTR=(u32)sizeof(ADC_Buf); //DMA1,传输数据量
DMA_CHx->CCR=0X00000000; //复位
DMA_CHx->CCR|=0<<4; //从存储器读
DMA_CHx->CCR|=1<<5; //普通模式
DMA_CHx->CCR|=0<<6; //外设地址非增量模式
DMA_CHx->CCR|=1<<7; //存储器增量模式
DMA_CHx->CCR|=1<<8; //外设数据宽度为8位
DMA_CHx->CCR|=1<<10; //存储器数据宽度8位
DMA_CHx->CCR|=1<<13; //中等优先级
DMA_CHx->CCR|=0<<14; //非存储器到存储器模式
}
//开启一次DMA传输
void MYDMA_Enable(DMA_Channel_TypeDef*DMA_CHx)
{
DMA_CHx->CCR&=~(1<<0); //关闭DMA传输
DMA_CHx->CNDTR=(u32)sizeof(ADC_Buf); //DMA1,传输数据量
DMA_CHx->CCR|=1<<0; //开启DMA传输
} |
|