OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7619|回复: 2

原子哥来帮帮我啊 ADC通过DMA。DMA1_Channel1->CNDTR中的数据不变

[复制链接]

3

主题

4

帖子

0

精华

新手入门

积分
36
金钱
36
注册时间
2014-12-1
在线时间
0 小时
发表于 2014-12-1 12:57:27 | 显示全部楼层 |阅读模式
5金钱
如果不进行dma传输结束标志检查,通过串口可以看到ad数据。
使用了检查dma是否发送完成,就会死在等待这块



/*定时中断采集AD数据*/
void TIM2_IRQHandler(void)   
{
if(TIM2->SR&0X01)
{  ADC1->CR2|=1<<22;//开始转换
while(!(ADC1->SR&(1<<1)));//等待转换结束
ADC1->SR&=0<<1;

dma_ad_enable(DMA1_Channel1);//使能ADC-DMA
while(!(DMA1->ISR&(1<<1)))
{USART3->DR=DMA1_Channel1->CNDTR;}
//等待传输完成中标志
DMA1->IFCR|=1<<1;//清楚传输完成中断标志
for(y=0;y<6;y++)
{
i=ad_val[y];
USART3->DR=(i/10000)+0x30;
while(!(USART3->SR&1<<7));
USART3->DR=((i%10000)/1000)+0x30;
while(!(USART3->SR&1<<7));
USART3->DR=((i%1000)/100)+0x30;
while(!(USART3->SR&1<<7));
USART3->DR=((i%100)/10)+0x30;
while(!(USART3->SR&1<<7));
USART3->DR=(i%10)+0x30;
while(!(USART3->SR&1<<7));
USART3->DR='\r';
while(!(USART3->SR&1<<7));


while(!(USART3->SR&1<<7));
USART3->DR='\r';
while(!(USART3->SR&1<<7));
PBout(5)=~PBout(5);
}
TIM2->SR&=~(1<<0);
dma_enable(DMA1_Channel2);

}

adc-mda.zip

259.14 KB, 下载次数: 794

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-12-1 15:13:25 | 显示全部楼层
找论坛 网友发的帖子参考下吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

12

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2015-1-28
在线时间
50 小时
发表于 2017-12-2 12:54:12 | 显示全部楼层
你是如何解决的?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-25 20:00

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表