API文档
本篇参考API文档进行撰写
CubeMX配置
基础设置
QSPI 和 SPI1参考这篇文章“创建新工程模版”这部分进行设置
此项 有效参考/记录时间:2023/4/6
ADC设置
本篇打开的是ADC1的1通道
勾选生成单独外设 .c / .h 文件
实现代码
main.c
#define THREAD_STACK_SIZE 1024
#define THREAD_PRIORITY 20
#define THREAD_TIMESLICE 10
#define ADC_DEV_NAME "adc1" /* ADC 设备名称 */
#define ADC_DEV_CHANNEL 1 /* ADC 通道 */
#define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/
#define CONVERT_BITS (1 << 16) /* 转换位数为16位 */
static void ADC_VOL(void *arg)
{
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;
}
/* 使能设备 */
rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
while (1)
{
/* 读取采样值 */
value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
rt_kprintf("the value is :%d \n", value);
/* 转换为对应电压值,3.3V对应12位最大值4096,对应16位最大值65536,数据精度乘以100保留2位小数 */
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);
}
int main(void)内↓
ADC_TASK = rt_thread_create(
"adc",
ADC_VOL, RT_NULL,
THREAD_STACK_SIZE,
THREAD_PRIORITY,
THREAD_TIMESLICE);
if (ADC_TASK != RT_NULL)
{
rt_thread_startup(ADC_TASK);
}
注:此处ADC测量以线程方式启动
驱动配置
Kconfig配置
路径:\libraries\Kconfig
menuconfig BSP_USING_ADC
bool "Enable ADC"
default n
select RT_USING_ADC
if BSP_USING_ADC
config BSP_USING_ADC1
bool "Enable ADC1"
default n
endif
SConscript
路径:\libraries\drivers\KConscript
if GetDepend(['RT_USING_ADC']):
src += Glob('drv_adc.c')
RT-Thread Settings
RT-Thread Stdio 编译配置
注意:每次 保存CubeMX配置 或 更新scons配置 后都需要重新进行此步骤
项目>属性
将所有与adc相关文件全部移除出过滤器,以参加编译
运行测试
存档点
最后更新时间:2023/4/6