rtt的io设备框架面向对象学习-输入捕捉设备

本文介绍了Rtt中的输入捕捉设备基类,其子类在驱动层实现,涉及初始化/构造流程,包括设备驱动层、驱动框架层和io管理层的交互。文章总结了OOPC实现特点,并提到应用程序使用需参考官方文档。
摘要由CSDN通过智能技术生成

目录

        • 1.输入捕捉设备基类
        • 2.输入捕捉设备基类的子类
        • 3.初始化/构造流程
          • 3.1设备驱动层
          • 3.2 设备驱动框架层
          • 3.3 设备io管理层
        • 4.总结
        • 5.内部调用流程
        • 6.应用程序使用流程

1.输入捕捉设备基类

此层处于设备驱动框架层。也是抽象类。

在/ components / drivers / include / drivers 下的rt_inputcapture.h定义了如下输入捕捉设备基类struct rt_inputcapture_device
{
struct rt_device parent;
const struct rt_inputcapture_ops *ops;
struct rt_ringbuffer *ringbuff;
rt_size_t watermark;
};

这里用到了rtt的ringbuffer

输入捕捉设备基类的方法定义如下
struct rt_inputcapture_ops
{
rt_err_t (*init)(struct rt_inputcapture_device *inputcapture);
rt_err_t (*open)(struct rt_inputcapture_device *inputcapture);
rt_err_t (*close)(struct rt_inputcapture_device *inputcapture);
rt_err_t (*get_pulsewidth)(struct rt_inputcapture_device *inputcapture, rt_uint32_t *pulsewidth_us);
};

抽象出来共性成为输入捕捉设备基类的方法。
在这里插入图片描述

2.输入捕捉设备基类的子类

各个输入捕捉设备基类的子类,需要在驱动层(bsp)来实现,此类是实现类。

3.初始化/构造流程

暂无实例。

3.1设备驱动层

此层是驱动层,也是bsp所在,此层的类也是可以实例化的实现类。

c文件:
暂无实例。

3.2 设备驱动框架层

rt_device_inputcapture_register是输入捕捉设备驱动框架层的入口,开启输入捕捉设备基类的构造/初始化流程。

/ components / drivers / misc 下的rt_inputcapture.c实现了设备驱动框架层接口。
重写了输入捕捉设备基类的父类——设备基类——的方法如下

#ifdef RT_USING_DEVICE_OPS
device->ops = &inputcapture_ops;
#else
device->init = rt_inputcapture_init;
device->open = rt_inputcapture_open;
device->close = rt_inputcapture_close;
device->read = rt_inputcapture_read;
device->write = RT_NULL;
device->control = rt_inputcapture_control;
#endif
在这里插入图片描述

并最终调用设备基类的初始化/构造函数rt_device_register。

3.3 设备io管理层

在/ components / drivers / core 下的device.c中实现了rt_device_register,它是io管理层的入口。
它将stm32输入捕捉设备对象放到对象容器里管理。详细参见io设备管理层。https://blog.csdn.net/yhb1206/article/details/136440373。

4.总结

参见rtt的oopc实现特点

5.内部调用流程

参见内部调用流程

6.应用程序使用流程

参见官方文档等路径
注意:该设备暂无使用说明,待官方补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值