OpenEdv-开源电子网

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

ADC单次采样模式问题

[复制链接]

2

主题

10

帖子

0

精华

新手上路

积分
38
金钱
38
注册时间
2015-7-3
在线时间
0 小时
发表于 2015-7-7 09:04:55 | 显示全部楼层 |阅读模式
5金钱
我有一个疑问,为什么在单次采样模式下,我调用一次adcx=Get_Adc(ADC_Channel_1); 从串口打印数据为什么会有三个采样值?

最佳答案

查看完整内容[请看2#楼]

回复【7楼】当儿ing: --------------------------------- 主函数死循环都被你屏蔽了。。。。  主函数一定要一个死循环!!! 不能执行完。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-7 09:04:56 | 显示全部楼层
回复【7楼】当儿ing:
---------------------------------
主函数死循环都被你屏蔽了。。。。 
主函数一定要一个死循环!!!
不能执行完。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-7 23:18:38 | 显示全部楼层
啥意思?你这样只是读取了一次,怎么可能有3个值?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-13
在线时间
0 小时
发表于 2015-7-13 18:53:39 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
真的呢  !我也是的,原子哥,在库函数ADC的例程里,我只改了这里,加了一个printf("%f\n\t");只循环一次,竟然在串口那里出来三个值,在标准例程寄存器版本的倒是只出来一个值~我也感觉好奇怪!我的板子是STM32F103ZET6的,望原子哥给予解答~

//while(1)
//{
adcx=Get_Adc_Average(ADC_Channel_1,10);
LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值
temp=(float)adcx*(3.3/4096);
printf("%f\n\t");
adcx=temp;
LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值
temp-=adcx;
temp*=1000;
LCD_ShowxNum(172,150,temp,3,16,0X80);
LED0=!LED0;
delay_ms(250);
//}
 }
回复

使用道具 举报

2

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2015-7-10
在线时间
9 小时
发表于 2015-7-13 19:06:55 | 显示全部楼层
应该是配置的问题
三人行必有我师,不能太弱
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-7-13 22:26:16 | 显示全部楼层
回复【3楼】当儿ing:
---------------------------------
你勾选的是hex显示吧。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-13
在线时间
0 小时
发表于 2015-7-14 09:31:23 | 显示全部楼层
没有勾选hex显示,例程也只是改了下面那一点点,其他的都没变结果就是这样,困惑~求解答

回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-13
在线时间
0 小时
发表于 2015-7-14 09:34:05 | 显示全部楼层
回复【5楼】正点原子:
---------------------------------
原子上面是我的截图,不知道原子哥有没有尝试过这样输出呢~如果对一个正弦波数字化是不是要用一个通道连续转换+DMA就可以啦~还要用多个通道吗?
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-13
在线时间
0 小时
发表于 2015-7-15 09:01:56 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
按照原子哥说的,就算不能运行到底,按理论来说,调用一次while循环也应该只输出1个数啊 ,当我把程序如下修改
不取平均值,直接取ADC每次转换的值,那我是调用了Get_Adc()150次啊,为什么printf()输出到串口150*3=450个值呢?
还有就是,为什么要是个死循环啊?要是想要ADC转换的150个数只能用DMA了吗?刚接触STM,只能从例程开始,比较困惑,望原子哥解答~感激不尽~
i=0;
while(i<150) 

  i=i+1
  adcx=Get_Adc(ADC_Channel_1);//直接取ADC每次转换的值
  LCD_ShowxNum(156,130,adcx,4,16,0);//显示ADC的值 
  temp=(float)adcx*(3.3/4096); 
  printf("%f\n\t"); 
  adcx=temp; 
  LCD_ShowxNum(156,150,adcx,1,16,0);//显示电压值 
  temp-=adcx; 
  temp*=1000; 
  LCD_ShowxNum(172,150,temp,3,16,0X80); 
  LED0=!LED0; 
  delay_ms(250);

 }
回复

使用道具 举报

84

主题

766

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2775
金钱
2775
注册时间
2015-6-1
在线时间
394 小时
发表于 2015-7-15 14:01:10 | 显示全部楼层
回复【9楼】当儿ing:
---------------------------------
层主快解决~养肥了再看
自在随心
回复

使用道具 举报

0

主题

9

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2015-7-13
在线时间
0 小时
发表于 2015-7-20 08:37:09 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,再次求助~
回复

使用道具 举报

6

主题

72

帖子

0

精华

初级会员

Rank: 2

积分
102
金钱
102
注册时间
2017-6-18
在线时间
26 小时
发表于 2017-10-22 16:29:31 | 显示全部楼层
当儿ing 发表于 2015-7-20 08:37
回复【8楼】正点原子:
---------------------------------
原子哥,再次求助~

去21ic论坛,这里的论坛没人回答的。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 22:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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