Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
ADC
【内核学习营】+青春+ADC读取光敏传感器实验
发布于 2018-09-11 20:27:21 浏览:2927
订阅该版
* 本帖最后由 青春JY 于 2018-9-12 15:33 编辑 * **实验要求:** 使用野火或正点原子M3、M4或M7开发板adc。 硬件上:至少有一路带ADC输入功能的GPIO,能够用来连接光环境传感器; 有一路串口用来做 msh shell 终端; 软件上:串口驱动; ADC驱动。 **准备工作:** 根据硬件连接情况配置与 LED 灯连接的PIN号。 -硬件准备:正点原子stm32f407探索者开发板; -软件准备:rtt3.1.0、stm32f4xx-HAL BSP、env0.7.1。 **实例代码:**```#include
#include
#include
#include
#include
#define LSENS_READ_TIMES 10 //定义光敏传感器读取次数,读这么多次,然后取平均值 #define LSENS_CHANNEL 5 #define LSENS_GET_PERIOD 50 /* 读取Light Sens的值 */ /* 0~100:0,最暗;100,最亮 */ void lsens_get_val(void* parameter) { rt_uint32_t temp = 0; rt_uint32_t Lsens_val = 0; rt_device_t dev; while(1) { rt_uint8_t i; rt_uint16_t val=0; dev = rt_device_find("adc3"); rt_device_open(dev, RT_DEVICE_FLAG_RDONLY); for(i = 0;i < LSENS_READ_TIMES;i++) { if( rt_device_read(dev, LSENS_CHANNEL, &temp, sizeof(temp)) != sizeof(temp) ) { rt_kprintf("channel %d: faild!
", LSENS_CHANNEL); } val += temp; rt_thread_delay(1); /* #define RT_TICK_PER_SECOND 1000 */ } temp = (rt_uint32_t)(val/LSENS_READ_TIMES);//得到平均值 if(temp>4000) temp=4000; temp = (100-(temp/40)); if(temp != Lsens_val) { Lsens_val = temp; rt_kprintf("Lsens Vaule is:%d
", Lsens_val); } rt_thread_delay(LSENS_GET_PERIOD-LSENS_READ_TIMES); } } int adc_test(void) { rt_thread_t tid; tid = rt_thread_create("Lsens",lsens_get_val, RT_NULL,512, RT_THREAD_PRIORITY_MAX/3, 20); if (tid != RT_NULL) rt_thread_startup(tid); return 0; } INIT_APP_EXPORT(adc_test);``` **实验步骤:**使用ENV配置串口,拷贝drv_adc驱动。然后添加test_adc.c文件到工程,修改相应代码,编译无错后下载到开发板。 **结果:**程序是自动初始化运行,正常情况下光线强度为60左右,强光照射为95左右,手动遮挡光线为15左右。串口调试助手输出如下:![`QYN1L759511~3@9Y8J91(F.png](/uploads/201809/11/202152i3e98xn8q9d2fq58.png) 手动遮挡:![2E6$1ERJA6[V12ZDTEGK2%9.png](/uploads/201809/11/202207jvsz6vasd4qc0n0n.png) 强光照射:![DT@]I)(P9UW(NKLMLAA$WFF.png](/uploads/201809/11/202231kkhnj00hunkuh25m.png) **遇到的问题:** 1、官方库源文件没有ADC驱动; 2、移植好ADC驱动后,串口打印信息相反。 **解决方法:** 1、从学习营群众拷贝ADC驱动,添加#include "drv_adc.h"头文件,根据实际硬件修改ADC驱动。 2、将源测试代码中temp =(temp/40)改为temp = (100-(temp/40))即可。 下载附件 [_adc.c](https://oss-club.rt-thread.org/uploads/201809/11/213708ah8vmhnxfng55fvg.attach) 下载附件 [drv_adc.c](https://oss-club.rt-thread.org/uploads/201809/11/213709e2sokntttqnk1wo6.attach) 下载附件 [drv_adc.h](https://oss-club.rt-thread.org/uploads/201809/11/213709pata3nzcg3chhwc8.attach)
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
青春JY
这家伙很懒,什么也没写!
提问
8
回答
0
被采纳
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
STM32F10X HAL ADC+TIM+DMA+USART程序
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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组件
最新文章
1
关于使用使用STLINK在RT-Studio里下载程序失败的问题的可能的解决方法
2
RVBacktrace RISC-V极简栈回溯组件V1.2
3
ESP32C3环境搭建教程
4
在OpenMV工程的基础上进行多模态机器人的开发
5
[24 Embedded Design Competition] LIDAR framework Infineon PSOC6
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
文件系统
DMA
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
rt-smart
FAL
ESP8266
I2C_IIC
ota在线升级
WIZnet_W5500
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
中断
flashDB
socket
Debug
GD32
编译报错
msh
keil_MDK
rt_mq_消息队列_msg_queue
C++_cpp
at_device
MicroPython
ulog
本月问答贡献
rv666
9
个答案
2
次被采纳
踩姑娘的小蘑菇
5
个答案
2
次被采纳
道友
5
个答案
2
次被采纳
xiaorui
2
个答案
2
次被采纳
张世争
9
个答案
1
次被采纳
本月文章贡献
Licy
3
篇文章
1
次点赞
rv666
1
篇文章
7
次点赞
王依依
1
篇文章
5
次点赞
rtt_dmx
1
篇文章
5
次点赞
jaffer
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部