DMA+ADC1四路输出,亲测可用,整个的测量一次的时间大约是1.2ms

2019-07-20 22:46发布

这个是我再做实验的时候通过将原子哥的程序进行移植和修改,然后测试可以使用的程序,希望能够帮到有需要的坛友。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
12条回答
nashui_sx
2019-07-21 20:10
本帖最后由 nashui_sx 于 2019-7-12 11:06 编辑
vegetablebird 发表于 2019-7-12 10:20
//获取ADC值
u16 Get_ADC(u8 times)
{  

1.你只用值的话可以,但是正常的话用值是不是太简单了,比如温度你转成ad值采样,你难道温度超过一个设定阈值就报警触发别的,不会的对吧。还是要结合温度上升速率,那就需要固定采样周期
在比如你采集波形ad值分析,你不固定采样频率也没法做fft变换
你这种能用,只是就是能看个ad值的场合用,实际有些场合没啥用

2.你要是只是用个值,你也没必要一直开关adc,反正dma不占cpu,你直接一直开着就行了,想用直接去读那个变量就好了

3.你adc采样每此延时10ms,平滑50次 500毫秒,不觉得时间太久吗,还有啥意义用dma,dma就是为了解放cpu干别的事,你竟然延时了500ms
正常应该定时器触发+完成中断,不定时器触发也应该用dma完成中断给main一个信号进行滤波就好了

http://www.openedv.com/forum.php?mod=viewthread&tid=273877&extra=
你看下这个里面的两个例子 一个是定时器触发的,一个是不带的,怎么不延时采样的

一周热门 更多>