在applications文件夹下新建task.c文件。笔者这里使用的通道5,核心代码如下:
[task.c]
/**
******************************************************************************
* @file task.c
* @author BruceOu
* @lib version v2.1.0
* @version V1.0
* @blog https://blog.bruceou.cn/
* @Official Accounts 嵌入式实验楼
* @Brief RTT任务
******************************************************************************
*/
/*Includes**********************************************************************/
#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>
#include <rtthread.h>
#include <rtdevice.h>
#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.%02d\n", 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仓库自取吧。
GD32VF103RRT-Thread仓库地址:https://gitee.com/ouxiaolong/GD3 ... ter/bsp/gd32/risc-v