关于使用RT-Thread系统读取stm32的adc无法连续转换的问题解决
今天发现rt系统的adc有一个缺陷(也可能是我移植的方法有问题,这就不得而知了!),就是只能单次转换,事情是这样的:
我在stm32的RT-Thread系统bsp上添加了adc相关驱动,但是在写完验证程序在板子上跑的时候,我发现用下面的程序是只会转换一次adc的,也就是说,只会测量第一次的电压值,之后再调用rt_adc_read函数,得到的一直都是第一次的值。
我当时的rt应用程序如下:
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#define ADC_DEV_NAME "adc1" /* ADC 设备名称 */
#define ADC_DEV_CHANNEL 6 /* ADC 通道 */
#define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS (1 << 12) /* 转换位数为12位 */
void my_adc_test(void)
{
rt_adc_device_t adc_dev; /* ADC 设备句柄 */
rt_uint32_t value;
float vol;
/* 查找设备 */
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
if(adc_dev==RT_NULL)
{

文章讲述了在使用RT-Thread系统驱动STM32的ADC时遇到的单次转换问题,作者发现需要在每次读取后手动使能和禁用ADC才能实现连续转换。最终,作者通过在循环中添加ADC的禁用和启用操作解决了问题。
最低0.47元/天 解锁文章
2550

被折叠的 条评论
为什么被折叠?



