STM32 ADC多通道采集数据错位问题

        之前板子只用到单通道采集温度值,现在需要同时采集两个通道的温度值,按网上的配置写好相应代码后,在调试的过程中发现两个通道的值时长发生错位的情况。

        下面是我的ADC配置及获取函数:

修改了很多参数并没有解决问题,后来发现问题出在了ADC_ChannelConfig这个函数里,通过现象我们大概知道在读取数据是大概率我们要读通道一时由于通道二也在转换所以读到了通道二的值。

在ADC_ChannelConfig这个函数里可以看到:

这里用的是|=,也就是说调用一次后给这个寄存器这一位赋值,但是使用后没有关闭改通道,查询数据手册可以发现:

当我们一次读取一个通道时要把其他通道关闭掉。所以只需将原程序中加一行代码就可以:

在开启时先把所有通道全部关闭这样就不会有之前的问题了。

在这里我不禁感慨,对于我这种嵌入式新手来说网上的例程虽然很多,但是往往也伴随着很多问题,我们要多去理解寄存器相关操作的意义,并对应相关的数据手册理解,多多思考能帮助我们深刻理解并掌握知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值