Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
ART-Pi
RT-Thread
手把手教你基于RT-Thread Stduio使用ART-Pi的ADC外设
发布于 2021-03-29 14:22:55 浏览:2742
订阅该版
[tocm] # 基于RT-Thread Stduio使用ART-Pi的ADC外设 ### 1. 打开RT-Thread Stduio,左上角新建RT-Thread项目,选择基于开发板开发, 然后选择开发板为ART-Pi,创建模板工程。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/9894c94307617b016fcbed2d8a82ce373e0ff6ae.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 2. 如果想保存自定义位置的话,就取消使用缺省位置的√。![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/af54a5ca36d5699630f09063a6553c0b3d125043.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 3. 输入项目名,点击完成。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/fd39629503d4e72da28ad29b6f5d39d60802123c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 3. 选择刚才创建的工程的main函数,进行全局编译。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/7a4f9afeec325a28f2667a407fc187070a6ffcab.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 4. 编译没有错误,没有警告后,打开RT-Thread Setting 使能ADC。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/e469f688e274d6b7c3822f885cfa0ef9961ce646.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 5. 选择更多配置 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/cd4f5269571f5eae893fefca219b3d084bb62102.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 6. 点击组件,使能ADC驱动后点击左上角全部保存并关闭RT-Thread Setting。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/80ab6075020dffd26957bf6529e7ef4f07ca8c11.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 7. 打开Library中的Kconfig ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/7f19db91d77a9f304a90e778c73845bbb54f2735.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 8. 打开Library中的Kconfig,找到On-Chip组件,将下面代码添加到图中所示位置并保存文件。 ```javascript menuconfig BSP_USING_ADC bool "Enable ADC" default n select RT_USING_ADC select RT_USING_PIN if BSP_USING_ADC config BSP_USING_ADC1 bool "Enable ADC1" default n config BSP_USING_ADC2 bool "Enable ADC2" default n config BSP_USING_ADC3 bool "Enable ADC3" default n endif ``` ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/42576fb13253c71a69843f41b04ca969938e0dff.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 9. 打开RT-Thread Setting ,选择硬件,选择On-chip,然后点击使能ADC,根据自己选择需要使用的ADC通道进行使能,我这里使用PB0和BP1作为ADC,它是挂载在ADC1中的。将ADC1打上对勾并保存。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/a70c77261192eb2e30f3ffab16570931abf0abbc.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 10. 打开Board下的CUMX,我们配置ADC引脚。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/51e123a79c990ee8f7639ffa056165d284bb0acd.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 11. 直接查找PB1引脚,这里引脚将会闪烁。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/162cb249b8c92ebee97d90898422b861060e3836.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 12. 我这里使用了ADC1的通道五,选中即可。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/311324e5091ceafa01b06992dc75c35dafedc2b0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/9377266230bf32d37a0c8baecba6502e032965d4.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 13.在左侧搜索ADC,选择ADC1,将通道5设置为Single-ended ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/89897f47497d3f50b1224b0387baa48b1eb71bc6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 14. 同样,选择PB0为ADC1通道9 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/bfcdbee5925ba3306b348c4a31a209a67cc9a6a5.png) ### 15. 选择左上角文件, 保存项目。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/3d29ed45071a8ee23793949c162dcd3f4540169d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 16. 点击获取代码,即可自动生成代码。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/86addafef23573bdcdb93a67519f431070883f70.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 17. 点击关闭,关掉CUBEMX即可。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/244835bcaec76c2c953474828b60b1b471d43b53.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 18. 点击刚刚创建的项目名,右键-更新软件包。 ### 19. 更新完后,进行全局编译。无错误、无警告。但是此时ADC还是无法使用的。因为编译器将部分ADC的外设文件屏蔽掉了。 ### 20. 选中项目名,右键-属性,来到图示位置。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/396bfb43c91ee2522b23bea9b4fa8ee9a0f789b2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 21. 将所有带有ADC的文件,选中文件名后点击移出。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/7f731205f2508305a0263e50e9c1f6d61ea5bb36.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 22. 将所有带有ADC的文件,选中文件名后点击移出,完成后点击确定即可。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/ba3e111233761e22025af7b5e291054ab75e050c.png) ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/0676f79b14bbc5dc8a8e7ea4afb822a6bd893877.png) ### 23. 打开rtconfig.h 发现ADC和ADC1已经被使能。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/2186ff3b36a51dd5b691b35620bc69db962a59bc.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 23. 这时候来到主函数里新建一个进程。 先将宏定义写在开始的地方。这里如果使用ADC1,设备名称就是adc1,如果是ADC2,设备名称就是adc2,通道数是由使能的ADC通道决定。 ```javascript #define ADC_DEV_NAME "adc1" /* ADC 设备名称 */ #define ADC_DEV_CHANNEL 5 /* ADC 通道 */ #define REFER_VOLTAGE 330 /* 参考电压 3.3V,数据精度乘以100保留2位小数*/ #define CONVERT_BITS (1 << 16) /* 转换位数为16位 */ ``` ```javascript int adc_vol() { rt_uint32_t value, vol; rt_adc_device_t adc_dev; 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; } ``` ### 24. 在主函数前声明刚才创建的函数,然后在主函数中调用即可。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/548244f50f55a8d91d53fe9711ae41ce9bf0ff75.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 25.编译无误,下载进开发板即可。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/edd88db462d341e3a72f3d45e0c59aafe9105322.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 26.下载完成后,打开RT-Thread Studio的串口终端。。这个终端真的是十分好用。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/deb8340703841841bda7b9ddade0b4f902c3d0a5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 27.即可看到16位ADC转换的数值和对应的电压值。具体电压处理是在adc_vol函数中,进行操作即可。 ![在这里插入图片描述](https://oss-club.rt-thread.org/uploads/20220714/1826cf2cee660fd0b7f00937b967b3d647464b83.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzIxNDc5ODE5,size_16,color_FFFFFF,t_70) ### 28.如果是多个通道开启ADC,则新建两个adc_vol函数(函数名不能不要),然后创建两份宏定义即可(宏定义名字也不可相同)。
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
乐乐爱学习
这家伙很懒,什么也没写!
文章
8
回答
3
被采纳
0
关注TA
发私信
相关文章
1
请大神帮忙看下风格 还是哪里有问题 照着串口驱动写的ADC驱动
2
ADC config
3
rt_thread_delay()和ADC采样之间的冲突
4
请教在官方BSP中的STM32F40X程序中加入ADC,串口没输出。
5
给RT-Thread添加ADC驱动框架
6
求助:ADC采样被干扰
7
【内核和外设学习营】十里 ADC光敏电阻电压采集实验
8
<内核学习营>+坦然+探索者stm32f407板子的ADC测试光传感器实验
9
【内核学习营】+青春+ADC读取光敏传感器实验
10
《内核学习营》+水一方+项目中应用的ADC实现电压采集
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部