在applica
tions文件夹下新建task.c文件。笔者这里使用的通道5,核心代码如下:
[task.c]
/**
******************************************************************************
* @date 2022-06-03
******************************************************************************
*/
/*Includes**********************************************************************/
#include
#include
#include
#include
#include
#define ADC_DEV_NAME "adc0" /* ADC 设备名称 */
#define ADC_DEV_CHANNEL 5 /* ADC 通道 */
#define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS (1 << 12) /* 转换位数为12位 */
static int adc_vol_sample(intargc, char *argv[])
{
rt_adc_device_t adc_dev;
rt_uint32_t value, vol;
rt_err_t ret = RT_EOK;
/* 查找设备 */
adc_dev = (rt_adc_device_t)rt_device_find(ADC_DEV_NAME);
if (adc_dev == RT_NULL)
{
rt_kprintf("adc sample run failed!can't find %s device!n", ADC_DEV_NAME);
return RT_ERROR;
}
/* 使能设备 */
ret = rt_adc_enable(adc_dev,ADC_DEV_CHANNEL);
/* 读取采样值 */
value = rt_adc_read(adc_dev,ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d n",value);
/* 转换为对应电压值 */
vol = value * REFER_VOLTAGE / CONVERT_BITS;
rt_kprintf("the voltage is :%d.%02dn", vol / 100, vol % 100);
/* 关闭通道 */
ret = rt_adc_disable(adc_dev,ADC_DEV_CHANNEL);
return ret;
}
/* 导出到 msh 命令列表中 */
MSH_CMD_EXPORT(adc_vol_sample,adc voltage convert sample);
编译下载,调试信息如下:
从以上打印信息可以看出,adc0已经使能,然后使用MSH命令‘adc_vol_sample’即可使能ADC线程。
笔者这里将PA5接到3.3V电压上,和实际的电压是相符的。
基于RT-Thread的完整工程我就就不贴出来了,请到我的Gitee仓库自取吧。