锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

RTThread自定义IO设备接口

时间:2023-09-23 19:37:02 rt500传感器

RT-Thread 提供了一套 I/O 设备模型框架方便用户定制一些特殊的IO提供统一的设备IO通过设备创建、注册、界面定义、注销等设备管理,实现设备驱动程序的包装 I/O 设备层提供的标准接口访问底层设备,设备驱动程序的升级和更换不会影响上层应用。

RT-Thread 自定义IO存储在设备中使用的功能函数中rt-thread/src/device.c相关宏定义主要在源码文件下rt-thread/src/rtdef.h源文件中。

一、 源代码示例1,IO创建和注册设备

#include  #include   rt_err_t  init_test(rt_device_t dev) {     rt_kprintf("init_test run!\n");     return 0; } rt_err_t  open_test(rt_device_t dev, rt_uint16_t oflag) {     rt_kprintf("open_test run!\n");     return 0; }  rt_err_t  close_test(rt_device_t dev) {     rt_kprintf("close_test run!\n");     return 0; }  static int iodef_reg_sample(int argc, char *argv[]) {  rt_device_t dev = rt_device_create(RT_Device_Class_Char,64);  if(dev==RT_NULL)  {      rt_kprintf("rt_device_create failed!\n");      return RT_ERROR;  }  //I/O 设备操作方法的映射,更多参考rt_device_t结构体定义  dev->init = init_test;  dev->open = open_test;  dev ->close = close_test;  rt_err_t ret = rt_device_register(dev,"devtest",RT_DEVICE_FLAG_RDWR);  if(ret!=RT_EOK)  {      rt_kprintf("rt_device_register failed!\n");      return RT_ERROR;  }  return RT_EOK; }  /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(iodef_reg_sample, io define for user register test example);

二、源码示例2已注册IO调用设备功能接口

#include  #include   static int iodef_use_sample(int argc, char *argv[]) {     rt_device_t dev = rt_device_find("devtest");     if(dev==RT_NULL)     {         rt_kprintf("rt_device_find failed!\n");         return RT_ERROR;     }     rt_device_init(dev);     rt_device_open(dev, RT_DEVICE_FLAG_RDWR);     rt_device_close(dev);     return RT_EOK; }  /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(iodef_use_sample, io define for user and be used test example); 

三、源代码示例3取消自定义IO设备

#include  #include   static int iodef_ureg_sample(int argc, char *argv[]) {     rt_device_t dev = rt_device_find("devtest");     if(dev==RT_NULL)     {         rt_kprintf("rt_device_find failed!\n");         return RT_ERROR;     }     rt_err_t ret = rt_device_unregister(dev);     if(ret!=RT_EOK)     {         rt_kprintf("rt_device_unregister failed!\n");         return RT_ERROR;     }     return RT_EOK; }  /* 导出到 msh 命令列表中 */ MSH_CMD_EXPORT(iodef_ureg_sample, io define for user unregister test example);

四、效果显示

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章