ifdef RT_USING_DEVICE_OPS _hw_pin.parent.ops = &pin_ops; else _hw_pin.parent.init = RT_NULL; /* 以下标准的rt_device设备操作接口,根据需要实现 */ _hw_pin.parent.open = RT_NULL; _hw_pin.parent.close = RT_NULL; _hw_pin.parent.read = _pin_read; _hw_pin.parent.write = _pin...
rt_device_open rt_device_close 操作最好成对出现,原因是rt_device内部有引用计数,如你open两次,close一次,计数为1,没有真正的close。 一般通过rt_device_find,通过设备名称,查找设备,获取设备的操作句柄,也就是设备结构体指针,从而可以进一步进行操作设备的操作接口ops或通过设备的标准操作接口操作设备。 RT-Thread...
rt_device_open rt_device_close 操作最好成对出现,原因是rt_device内部有引用计数,如你open两次,close一次,计数为1,没有真正的close。 一般通过rt_device_find,通过设备名称,查找设备,获取设备的操作句柄,也就是设备结构体指针,从而可以进一步进行操作设备的操作接口ops或通过设备的标准操作接口操作设备。 RT-Thread...
device_id; /**< 0 - 255 */ /* device call back */ rt_err_t (*rx_indicate)(rt_device_t dev, rt_size_t size); rt_err_t (*tx_complete)(rt_device_t dev, void *buffer); #ifdef RT_USING_DEVICE_OPS const struct rt_device_ops *ops; #else /* common device interface */ rt...
device->parent.type =RT_Device_Class_Miscellaneous; #ifdef RT_USING_DEVICE_OPS device->parent.ops = &adc_ops;#elsedevice->parent.init =RT_NULL; device->parent.open =RT_NULL; device->parent.close =RT_NULL; device->parent.read =_adc_read; ...
return rt_device_pin_register("pin", &_stm32_pin_ops, RT_NULL); } 1. 2. 3. 4. 5. 6. PIN设备驱动层 这一层主要起到承上启下的,为上层应用提供统一的API,为下层驱动,提供注册函数。 其中注册函数如下: int rt_device_pin_register(const char *name, const struct rt_pin_ops *ops, void...
_hw_pin.parent.type = RT_Device_Class_Miscellaneous;/* 设备类型,为了区分设备种类 */_hw_pin.parent.rx_indicate = RT_NULL;/* 接收回调,串口、CAN一般会有 */_hw_pin.parent.tx_complete = RT_NULL;/* 发送回调,串口、CAN一般会有 */#ifdefRT_USING_DEVICE_OPS_hw_pin.parent.ops = &pin_ops...
rt_hw_i2c_init -> rt_i2c_bit_add_bus -> rt_i2c_bus_device_register -> rt_i2c_bus_device_device_init -> rt_device_register 初始的配置 #ifdef BSP_USING_I2C1#defineI2C1_BUS_CONFIG \{ \ .scl=BSP_I2C1_SCL_PIN, \ .sda=BSP_I2C1_SDA_PIN, \ ...
一般情况我们是直接通过 PM 组件的API来使用的。同时 PM 组件也向上提供了设备接口,所以我们可以使用rt_device_read、rt_device_write、rt_device_control来使用 PM 组件。 如果打开了RT_USING_DFS_DEVFS选项,那么还可以基于使用文件的方式来访问。 近期活动 ...
rt_err_t (*control)(rt_device_t dev, int cmd, void *args); #endif #if defined(RT_USING_POSIX) const struct dfs_file_ops *fops; struct rt_wqueue wait_queue; #endif void *user_data; /**< device private data */ }; 2.1.1 设备类型 type ...