2019-07-20 22:46发布
vegetablebird 发表于 2019-7-12 10:20 //获取ADC值 u16 Get_ADC(u8 times) {
nashui_sx 发表于 2019-7-12 10:53 1.你只用值的话可以,但是正常的话用值是不是太简单了,比如温度你转成ad值采样,你难道温度超过一个设定 ...
gongzq666 发表于 2019-7-12 11:27 我刚刚查看了一下,是不是通过定时器的PWM产生固定周期的方波,adc使用的是外部外部触发方式,然后定时的 ...
vegetablebird 发表于 2019-7-12 11:46 因为在循环里面有满足一个条件才使用这个函数,所以我用了单次转换,只需要获取ADC的值就可以。这样的话 ...
最多设置5个标签!
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=
你看下这个里面的两个例子 一个是定时器触发的,一个是不带的,怎么不延时采样的
因为在循环里面有满足一个条件才使用这个函数,所以我用了单次转换,只需要获取ADC的值就可以。这样的话直接设置连续转换也可以吗?
延时这个确实是我不小心加进去的
是的,定时器的好几种时间都能控制adc的启动,dma直接存起来,存满了会进完成中断,主函数滤波就好了,3个通道你可以设置30缓存的dma 正好一个通道10个数据 滤波就好了
对,单次就行了,转换完自动关了,下次打开转换就好了
一周热门 更多>