OpenEdv-开源电子网

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

STM32F103x系列的ADC有采集初值吗?

[复制链接]

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-8-9
在线时间
35 小时
发表于 2018-9-18 16:49:29 | 显示全部楼层 |阅读模式
请各位大神帮忙看看:
求助:STM32F103系列内部ADC有初值吗?如下程序,ADC_Channel_2 通道2 还没有外接电压输入,LED = ~LED;已经开始按照1s延时执行,即一上电 第一个if(){}循环体就已经开始执行了,难不成通道2一上电就有高电平了吗?

//主函数main()   
int main(void)
{         
        u16 ad_2_final,ad_3_final; //通道2 和通道3 转换数据 初始化
         
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
         
        delay_init();                     //延时函数初始化         
        uart_init(115200);                 //串口初始化为115200
         
        LED_Init();                             //LED端口初始化                                
         
        Adc_Init();                                  //ADC初始化

        while(1)
        {
                ad_2_final = Get_Adc_Average(ADC_Channel_2,8);    //PA2--ADC通道2--序列号为1,在规则通道组中第一个转换,转换次数为8次
        //        ad_3_final = Get_Adc_Average(ADC_Channel_3,8);        //PA3--ADC通道3--序列号为2,在规则通道组中第2个转换,转换次数为8次
               
                if(ad_2_final >= 1000)
                {
                        LED = ~LED;
                        delay_ms(1000);
                }
                else if(ad_2_final<1000)
                {
                        LED = ~LED;
                        delay_ms(500);
                }
               
        }
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4522
金钱
4522
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-9-18 17:00:56 | 显示全部楼层
采集初值是个什么鬼?
应该可能会有零位误差,
但不会太大,可以接0电平校准一下。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复 支持 反对

使用道具 举报

3

主题

1907

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4106
金钱
4106
注册时间
2018-8-14
在线时间
696 小时
发表于 2018-9-18 19:44:29 | 显示全部楼层
初始值与你的代码没啥关糸, 你都已经开始了ADC转换了, 就是有初始值你也读不到, 你读的就是ADC转换回来的值,

ad_2_final = Get_Adc_Average(ADC_Channel_2,8);    //PA2--ADC通道2--序列号为1,在规则通道组中第一个转换,转换次数为8次
把这一句放到while{}里最后一句,然后赋值ad_2_final 才进while, 不就解决了么
回复 支持 反对

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-8-9
在线时间
35 小时
 楼主| 发表于 2018-9-19 14:37:41 | 显示全部楼层
edmund1234 发表于 2018-9-18 19:44
初始值与你的代码没啥关糸, 你都已经开始了ADC转换了, 就是有初始值你也读不到, 你读的就是ADC转换回来 ...

谢谢你的建议。 但是修改后,结果还是一样的,PA2 引脚什么也不接, 下面的程序还是在执行
if(ad_2_final >= 1000)
                {
                        LED = ~LED;
                        delay_ms(1000);
                }
回复 支持 反对

使用道具 举报

6

主题

15

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-8-9
在线时间
35 小时
 楼主| 发表于 2018-9-19 15:57:57 | 显示全部楼层
warship 发表于 2018-9-18 17:00
采集初值是个什么鬼?
应该可能会有零位误差,
但不会太大,可以接0电平校准一下。

大神,怎么通过校准保证VREF-为0电平呢?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 20:38

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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