![]() |
RT-Thread API参考手册
4.0.3
嵌入式实时操作系统
|
I/O设备子系统 更多...
结构体 | |
| struct | rt_device_ops |
| 设备对象的操作方法 更多... | |
| struct | rt_wqueue |
| 等待队列控制块 更多... | |
| struct | rt_device |
| 设备基类控制块 更多... | |
| struct | rt_device_blk_geometry |
| 块设备扇区信息 更多... | |
| struct | rt_device_blk_sectors |
| 块设备的扇区分布信息 更多... | |
| struct | rt_device_graphic_info |
| 图形设备信息结构 更多... | |
| struct | rt_device_rect_info |
| 矩形信息结构 更多... | |
类型定义 | |
| typedef struct rt_device * | rt_device_t |
| 设备类型指针定义 | |
枚举 |
I/O设备子系统
设备系统设计为简单且最小的层,用来协助应用程序和驱动程序之间的通信。
设备系统为驱动程序提供五个接口:
| enum rt_device_class_type |
(I/O)设备类型
| rt_err_t rt_device_register | ( | rt_device_t | dev, |
| const char * | name, | ||
| rt_uint16_t | flags | ||
| ) |
注册设备
此函数注册具有指定名称的设备。设备需要注册到I/O设备管理器中,应用程序才能够访问。
| dev | 设备句柄 |
| name | 设备名称 |
| flags | 设备模式标志位 |
| rt_err_t rt_device_unregister | ( | rt_device_t | dev | ) |
删除设备
该函数将删除已注册的设备。当设备注销后的,设备将从设备管理器中移除, 也就不能再通过设备查找搜索到该设备。注销设备不会释放设备控制块占用的内存。
| dev | 设备句柄 |
| rt_device_t rt_device_find | ( | const char * | name | ) |
查找设备
该函数通过指定的名称查找设备。应用程序根据设备名称获取设备句柄,进而可以操作设备。
| name | 设备的名称 |
| rt_device_t rt_device_create | ( | int | type, |
| int | attach_size | ||
| ) |
创建设备
此函数根据用户指定的设备类型动态的创建一个设备对象。 调用该接口时,系统会从动态堆内存中分配一个设备控制块, 大小为struct rt_device和attach_size的和,设备的类型由参数type设定。
| type | 设备类型 |
| attach_size | 用户数据的大小 |
| void rt_device_destroy | ( | rt_device_t | dev | ) |
销毁设备
该函数将销毁动态创建的设备对象。
| dev | 设备句柄 |
| rt_err_t rt_device_init | ( | rt_device_t | dev | ) |
初始化设备
该函数将初始化指定的设备。当一个设备已经初始化成功后,调用这个接口将不再重复做初始化。
| dev | 设备句柄 |
| rt_err_t rt_device_open | ( | rt_device_t | dev, |
| rt_uint16_t | oflag | ||
| ) |
打开设备
通过设备句柄,应用程序可以打开和关闭设备, 打开设备时会检测设备是否已经初始化,没有初始化则会默认调用初始化接口初始化设备。
| dev | 设备句柄 |
| oflag | 设备的打开模式标志位 |
| rt_err_t rt_device_close | ( | rt_device_t | dev | ) |
关闭设备
该函数将关闭指定的设备。
| dev | 设备句柄 |
| rt_size_t rt_device_read | ( | rt_device_t | dev, |
| rt_off_t | pos, | ||
| void * | buffer, | ||
| rt_size_t | size | ||
| ) |
读取设备
该函数将从设备读取数据。
| dev | 设备句柄 |
| pos | 读取的偏移量 |
| buffer | 用于保存读取数据的数据缓冲区 |
| size | 缓冲区的大小 |
| rt_size_t rt_device_write | ( | rt_device_t | dev, |
| rt_off_t | pos, | ||
| const void * | buffer, | ||
| rt_size_t | size | ||
| ) |
写设备
该函数将向设备写入数据。
| dev | 设备句柄 |
| pos | 写入的偏移量 |
| buffer | 要写入设备的数据缓冲区 |
| size | 写入数据的大小 |
| rt_err_t rt_device_control | ( | rt_device_t | dev, |
| int | cmd, | ||
| void * | arg | ||
| ) |
控制设备
该函数将在设备上执行各种控制功能。
| dev | 设备句柄 |
| cmd | 命令控制字,这个参数通常与设备驱动程序相关。 |
| arg | 控制命令相关的参数 |
| rt_err_t rt_device_set_rx_indicate | ( | rt_device_t | dev, |
| rt_err_t(*)(rt_device_t dev, rt_size_t size) | rx_ind | ||
| ) |
设置设备接收回调函数
此函数将设置设备接收回调函数。该函数的回调函数由调用者提供。 当硬件设备接收到数据时,会回调这个函数并把收到的数据长度放在size参数中传递给上层应用。 上层应用线程应在收到指示后,立刻从设备中读取数据。
| dev | 设备句柄 |
| rx_ind | 回调函数 |
| rt_err_t rt_device_set_tx_complete | ( | rt_device_t | dev, |
| rt_err_t(*)(rt_device_t dev, void *buffer) | tx_done | ||
| ) |
设置设备发送完成回调函数
此函数将设置发送完成回调函数。调用这个函数时,回调函数由调用者提供,当硬件设备发送完数据时, 由驱动程序回调这个函数并把发送完成的数据块地址buffer作为参数传递给上层应用。 上层应用(线程)在收到指示时会根据发送buffer的情况,释放buffer内存块或将其作为下一个写数据的缓存。
| dev | 设备句柄 |
| tx_done | 指示回调函数 |