Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
GPIO
关于RT-Thread GPIO设备注册函数问题
发布于 2018-11-22 22:26:03 浏览:2872
订阅该版
int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void *user_data) { _hw_pin.parent.type = RT_Device_Class_Miscellaneous;//混杂设备 _hw_pin.parent.rx_indicate = RT_NULL; _hw_pin.parent.tx_complete = RT_NULL; #ifdef RT_USING_DEVICE_OPS _hw_pin.parent.ops = &pin_ops; #else _hw_pin.parent.init = RT_NULL; _hw_pin.parent.open = RT_NULL; _hw_pin.parent.close = RT_NULL; _hw_pin.parent.read = _pin_read; _hw_pin.parent.write = _pin_write; _hw_pin.parent.control = _pin_control; #endif _hw_pin.ops = ops; _hw_pin.parent.user_data = user_data; /* register a character device */ rt_device_register(&_hw_pin.parent, name, RT_DEVICE_FLAG_RDWR); return 0; } 如上注册函数中, _hw_pin.parent.init = RT_NULL; _hw_pin.parent.open = RT_NULL; _hw_pin.parent.close = RT_NULL; _hw_pin.parent.read = _pin_read; _hw_pin.parent.write = _pin_write; _hw_pin.parent.control = _pin_control; _hw_pin.parent里面的成员函数,好像都没有被调用,不知道是不是我没看懂还是? 在上层函数中都是调用了_hw_pin.ops下的成员函数,没有调用_hw_pin.parent函数,为什么要这样做??麻烦大神解释下 void rt_pin_mode(rt_base_t pin, rt_base_t mode) { RT_ASSERT(_hw_pin.ops != RT_NULL); _hw_pin.ops->pin_mode(&_hw_pin.parent, pin, mode); } FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_mode, pinMode, set hardware pin mode); void rt_pin_write(rt_base_t pin, rt_base_t value) { RT_ASSERT(_hw_pin.ops != RT_NULL); _hw_pin.ops->pin_write(&_hw_pin.parent, pin, value); } FINSH_FUNCTION_EXPORT_ALIAS(rt_pin_write, pinWrite, write value to hardware pin); int rt_pin_read(rt_base_t pin) { RT_ASSERT(_hw_pin.ops != RT_NULL); return _hw_pin.ops->pin_read(&_hw_pin.parent, pin); }
查看更多
4
个回答
默认排序
按发布时间排序
misonyo
2018-11-23
这家伙很懒,什么也没写!
_hw_pin.parent里面的成员函数是给rt_device_init/open/read/....函数使用的,也就是通用的设备操作接口。不过这些成员也都是调用了_hw_pin.ops的成员函数,只是不同的封装。
weiwei88881216
2018-11-23
这家伙很懒,什么也没写!
>_hw_pin.parent里面的成员函数是给rt_device_init/open/read/....函数使用的,也就是通用的设备操作接口。 ... --- 实际操作中,如GPIO读操作,调用的是int rt_pin_read(rt_base_t pin),该函数下使用的是_hw_pin.ops->pin_read(&_hw_pin.parent, pin), 并没有使用通用设备接口,为什么不使用,而是另外再封装呢?
misonyo
2018-11-24
这家伙很懒,什么也没写!
>实际操作中,如GPIO读操作,调用的是int rt_pin_read(rt_base_t pin),该函数下使用的是_hw_pin.ops->pi ... --- 使用rt_device_read()也是可以的,但是推荐用rt_pin_read,函数更直观方便。
weiwei88881216
2018-11-24
这家伙很懒,什么也没写!
>使用rt_device_read()也是可以的,但是推荐用rt_pin_read,函数更直观方便。 --- 明白了,谢谢
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
weiwei88881216
这家伙很懒,什么也没写!
提问
1
回答
2
被采纳
0
关注TA
发私信
相关问题
1
drivers- pin
2
bsp 里面的drivers/gpio.c 少了一个功能
3
stm32f407移植RTT中gpio设备驱动问题
4
config PB4(NJTRST) to GPIO
5
RT-Thread的GPIO设备驱动问题
6
关于pin.c文件中语句可能出现的bug
7
RT-Thread学习笔记--线程创建与官方Pin设备驱动调用
8
【应用笔记】小白也能玩转RT-Thread之通用GPIO设备【官方出品
9
串口引脚定义中的GPIO_Pin_sources是社么意思?
10
RTT -GPIO 使用例程
推荐文章
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
【RA8D1-Vision Board】适配 LVGL V8
2
VISION BOARD 第二弹 基础工程配置和点亮一个LED灯
3
musb移植问题记录【设备注册3次挂起】
4
关于使用CherryUSB时候使用外挂的usb phy 芯片配置的一点注意事项
5
【Vision Board 创客营】Vision Board上的ADC实践
热门标签
RT-Thread Studio
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
RT-Thread
DMA
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
潘多拉开发板_Pandora
PWM
定时器
ADC
BSP
中断
keil_MDK
编译报错
socket
MicroPython
GD32
msh
Debug
ulog
SDIO总线
SFUD
rt_mq_消息队列_msg_queue
C++_cpp
本月问答贡献
xiaorui
7
个答案
3
次被采纳
sakumisu
4
个答案
3
次被采纳
三世执戟
31
个答案
1
次被采纳
梦笑真美
18
个答案
1
次被采纳
踩姑娘的小蘑菇
14
个答案
1
次被采纳
本月文章贡献
Z_Y
2
篇文章
5
次点赞
Alipay
2
篇文章
3
次点赞
2345vor
2
篇文章
1
次点赞
比特饼干
1
篇文章
6
次点赞
Vangaoven
1
篇文章
3
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部