打印
[STM32F1]

一个非常奇怪的问题 ADC 的DMA转换

[复制链接]
1183|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lapplegirl|  楼主 | 2015-9-22 17:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有关的程序就这么几行,使用代码优化模式,ADC通道就错了(6和7正好颠倒),如果不是用优化模式,ADC通道就是对的,有谁有高见,到底咋弄这个东西


                        ADC_RegularChannelConfig(ADC1, ADC_Channel_6, 1, ADC_SampleTime_7Cycles5 );        //ADC1,ADC通道1,采样时间为239.5周期                                      
                        ADC_RegularChannelConfig(ADC1, ADC_Channel_7, 2, ADC_SampleTime_7Cycles5 );        //ADC1,ADC通道2,采样时间为239.5周期
                        MYDMA_Config(DMA1_Channel1,(u32)&ADC1->DR,(u32)adcbuf,N*2);
                                                                                                                        //DMA1通道1,外设为ADC1,缓存为rxbuff,由于是两个通道,传输2N个数据
                        ADC_DMACmd(ADC1,ENABLE);                                //ADC的DMA使能
        ADC_SoftwareStartConvCmd(ADC1, ENABLE);                        //使能指定的ADC1的软件转换
                        MYDMA_Enable(DMA1_Channel1);                        //开始一次DMA传输!
沙发
lwsn| | 2015-9-22 19:09 | 只看该作者
应该是某些代码被优化掉了

使用特权

评论回复
板凳
amanda_s| | 2015-9-23 16:31 | 只看该作者
开了优化后,有时会把某些代码优化掉。
调试看看代码执行的过程,确认一下是不是。

使用特权

评论回复
地板
gejigeji521| | 2015-9-23 19:58 | 只看该作者
为了让你的代码原汁原味的编译,最好都别开优化。

使用特权

评论回复
5
lapplegirl|  楼主 | 2015-9-24 18:42 | 只看该作者
终于查到问题了,AD转换后,延时一下,等到AD转换完成后再开启DMA。呵呵

使用特权

评论回复
6
尤彼卡| | 2015-9-24 19:56 | 只看该作者
调试看看代码执行的过程,是不是代码被优化掉了。

使用特权

评论回复
7
yiyigirl2014| | 2015-9-24 21:31 | 只看该作者
我是很少用DMA的,都是玩的比较简单。

使用特权

评论回复
8
gejigeji521| | 2015-9-24 22:04 | 只看该作者
AD转换后,延时一下,等到AD转换完成后再开启DMA。
既然这样,转换后,可以用while判断啊,转换完成后,再进入DMA

使用特权

评论回复
9
冰河w| | 2015-9-25 16:23 | 只看该作者
关了优化,或者优化降低试试看

使用特权

评论回复
10
boy1990| | 2015-9-25 19:15 | 只看该作者
看看代码的执行过程,或许可以找到问题所在。。。

使用特权

评论回复
11
lapplegirl|  楼主 | 2015-9-26 12:35 | 只看该作者
AD转换后,延时一下,等到AD转换完成后再开启DMA。
既然这样,转换后,可以用while判断啊,转换完成后,再进入DMA



试过用while判断
好像不行,延时1uS就好了,正合适,但是不知道稳定不。

使用特权

评论回复
12
迪卡| | 2015-9-26 17:40 | 只看该作者
延时1uS就好了

为什么延时1uS就好了?

使用特权

评论回复
13
Snow7| | 2015-9-27 21:33 | 只看该作者
延时1uS就好了,正合适

在哪延时1uS

使用特权

评论回复
14
Micachl| | 2015-9-28 08:05 | 只看该作者
用IAR吧,优化的好些

使用特权

评论回复
15
643757107| | 2015-9-28 08:37 | 只看该作者
应该是某些代码被优化掉了

使用特权

评论回复
16
lapplegirl|  楼主 | 2015-9-28 17:37 | 只看该作者
我也不知道为啥延时1uS就好,道理上第一次ADC转换完成了,但是用while判断完成就不行

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

117

帖子

3

粉丝