OpenEdv-开源电子网

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

战舰版的ADC案例咨询

[复制链接]

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-4-25
在线时间
10 小时
发表于 2017-6-8 15:44:04 | 显示全部楼层 |阅读模式
1金钱
        各位大侠,小弟新学STM32,使用战舰V3学习ADC案例时发现一个问题,烧录到 开发板的程序,启动时自动完成了3次采样值更新,这是何故?

最佳答案

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

main函数没有死循环,回头问你C语言老师去
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-8 15:44:05 | 显示全部楼层
Edwardzzh 发表于 2017-6-12 09:27
单步调试中temp的值改变了3次

main函数没有死循环,回头问你C语言老师去
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-8 20:32:29 | 显示全部楼层
你怎么得出的结论?
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-4-25
在线时间
10 小时
 楼主| 发表于 2017-6-9 13:23:37 | 显示全部楼层
正点原子 发表于 2017-6-8 20:32
你怎么得出的结论?

原子哥,这是我烧写进去的代码,显示的AD值在启动的时候确实更新了3次
int main(void)
{         
  u16 adcx;
        float temp;
        delay_init();                     //延时函数初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
        uart_init(115200);                 //串口初始化为115200
        LED_Init();                             //LED端口初始化
        LCD_Init();                                
        Adc_Init();                                  //ADC初始化
   
         
         
        delay_ms(1000);
        POINT_COLOR=RED;//设置字体为红色
        LCD_ShowString(60,50,200,16,16,"WarShip STM32");       
        LCD_ShowString(60,70,200,16,16,"ADC TEST");       
        LCD_ShowString(60,90,200,16,16,"ATOM@ALIENTEK");
        LCD_ShowString(60,110,200,16,16,"2015/1/14");       
        //显示提示信息
        POINT_COLOR=BLUE;//设置字体为蓝色
        LCD_ShowString(60,130,200,16,16,"ADC_CH0_VAL:");             
        LCD_ShowString(60,150,200,16,16,"ADC_CH0_VOL:0.000V");               
        //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);
                adcx=temp;
                LCD_ShowxNum(156,150,temp,1,16,0X80);//显示电压值
                temp-=adcx;
                temp*=1000;
                LCD_ShowxNum(172,150,temp,3,16,0X80);
                LED0=!LED0;
                delay_ms(250);       
        //}
}
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-4-25
在线时间
10 小时
 楼主| 发表于 2017-6-9 13:26:55 | 显示全部楼层
想试一下单次采集,所以不需要while
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-6-9 21:28:10 | 显示全部楼层
Edwardzzh 发表于 2017-6-9 13:23
原子哥,这是我烧写进去的代码,显示的AD值在启动的时候确实更新了3次
int main(void)
{         

怎么得出的结论?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-4-25
在线时间
10 小时
 楼主| 发表于 2017-6-12 09:27:48 | 显示全部楼层
正点原子 发表于 2017-6-9 21:28
怎么得出的结论?

单步调试中temp的值改变了3次
回复

使用道具 举报

3

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
52
金钱
52
注册时间
2017-4-25
在线时间
10 小时
 楼主| 发表于 2017-6-13 11:29:54 | 显示全部楼层
好吧,在main函数后里加了个while(1){}就好了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-18 11:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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