Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
线程参数传递
rt_device_find
Sensor_传感器框架
设备dev是如何根据parameter找到的
发布于 2021-08-16 00:36:21 浏览:991
订阅该版
本人最近在自学sensor框架,其中关于线程利用rt_device_find(parameter)找到设备有一些疑惑,特此请教大佬!! 我用的是ds18b20的软件包,学习如何对接sensor框架,在驱动中![image.png](https://oss-club.rt-thread.org/uploads/20210816/df1f422a903dad884aea4f550c64838b.png) 标红部分我知道是模块的名字,然后蓝色部分我知道是注册时的名字。但是在sample.c中,这里初始化用的是和model一样的名字![image.png](https://oss-club.rt-thread.org/uploads/20210816/880e64260c75a12fd49296d6f69be295.png) 可是在线程初始化里的名字都不一样(见标红部分)![image.png](https://oss-club.rt-thread.org/uploads/20210816/495927c6478f900ccac85494c0430745.png) 然后线程函数里![image.png](https://oss-club.rt-thread.org/uploads/20210816/8a03ae1e12ff6e586ce5e4712fefa9f5.png) 这个parameter不就是那个初始化中的"temp_ds18b20"吗?这个跟其他地方又对不上,那么系统是怎么找到的我注册的这个"ds18b20"设备的?还请大佬解惑,小弟困了好几天了,万分感谢!!!
查看更多
小小李sunny
2021-08-16
这家伙很懒,什么也没写!
1.18b20tem是你的线程名字,与设备无关。 2.temp_ds18b20是传入read_temp_entry()的参数,也就是这个线程里要查找的设备名字(ds18b20的设备名)。 3.rt_hw_sensor_register()注册设备的时候会自动给设备名称添加一个前缀,温度传感器就是"temp_",所以注册输入的设备名ds18b20,实际就是temp_ds18b20。所以你find设备的时候要用temp_ds18b20的名字。 4.就是上面的if()语句,你可以调试看一下,对比两个名字是否一样。
3
个回答
默认排序
按发布时间排序
RTTCarry
2021-08-16
这家伙很懒,什么也没写!
是不是因为有一个![image.png](https://oss-club.rt-thread.org/uploads/20210816/72da409467984d4bdfc833580b567f0d.png) 我在object.c里面看到的
出出啊
2021-08-16
恃人不如自恃,人之为己者不如己之自为也
这就是 rtt 强大之处,也是众多 rtt 粉推崇的热点。rtt 提供的设备框架,把系统内核和外设用一套框架统一管理起来了。 1. 包括线程、定时器、信号量、消息队列等所有进程间通信机制。 2. 包括所有芯片片上外设接口、以及所有片外设备,都可以被添加到设备框架内。 3. `rt_xxx_init` `rt_xxx_create` 两个初始化、创建 api 用于内核对象的初始化。以消息队列为例。第二个参数都是对象名。**这个名称就是用来被 find的** ``` rt_err_t rt_mq_init(rt_mq_t mq, const char *name, void *msgpool, rt_size_t msg_size, rt_size_t pool_size, rt_uint8_t flag); rt_err_t rt_mq_init(rt_mq_t mq, const char *name, void *msgpool, rt_size_t msg_size, rt_size_t pool_size, rt_uint8_t flag); ``` 4. 设备注册 api ``` rt_err_t rt_device_register(rt_device_t dev, const char *name, rt_uint16_t flags); ``` 5. `rt_object_find` `rt_thread_find` `rt_device_find` 三个 api 分别是用来查找已经注册到系统的线程间同步或通信机制对象、线程对象、外设以及片外设备对象。其中,前两个 find 到的是 3 节 init 和 create 创建并注册的对象。 以上就是整个 rtt 设备框架主要涉及到的 api 以及应用场合。 至于你上面提到的 sensor 设备,通过查看代码,最终肯定对调用 `rt_device_register` 这个 api,反方向查找调用 `rt_hw_ds18b20_init` 的地方,终究有一个指定函数参数是作为 sensor 设备名称的。 因为片外设备千变万化,初始化过程也不一而同,所以,顶层最初是哪个函数设置的名字,这个得方向查找具体设备的初始化代码。
撰写答案
登录
注册新账号
关注者
0
被浏览
991
关于作者
RTTCarry
这家伙很懒,什么也没写!
提问
9
回答
2
被采纳
1
关注TA
发私信
相关问题
1
有关多sensor设备的module定义结构体自调用的疑惑
2
ART-PI,使用vl53l0x软件包,报错
3
sensor传感器驱动框架中sensor.h疑问
4
SENSOR驱动框架的使用
5
请教RT-thread的传感器框架的使用
6
RT_THREAD使用线程读取传感器数据偶尔会失败
7
关于单总线传感器驱动问题
8
寻求sensor多种数据一次全采集的实现方式
9
max6675 热电偶接入sensor框架,间隔时间太短读出来数值不会变化
10
max30102配置错误
推荐文章
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
【24嵌入式设计大赛】基于RT-Thread火星一号华为云平台储能监测管理系统
2
RVBacktrace RISC-V极简栈回溯组件
3
一文教你如何在VSCODE中搭建RT-Thread开发环境
4
分享第一次PR的经历
5
EtherCAT EOE移植及上手说明
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
ART-Pi
FinSH
USB
文件系统
DMA
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
ota在线升级
WIZnet_W5500
UART
flash
packages_软件包
cubemx
PWM
freemodbus
BSP
潘多拉开发板_Pandora
定时器
ADC
中断
flashDB
socket
Debug
GD32
编译报错
msh
keil_MDK
at_device
rt_mq_消息队列_msg_queue
ulog
C++_cpp
SFUD
本月问答贡献
出出啊
1512
个答案
341
次被采纳
小小李sunny
1437
个答案
289
次被采纳
张世争
774
个答案
167
次被采纳
crystal266
546
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
2
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
2
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部