Edit online

接口设计

Driver 层接口设计

以下接口是 Pin 设备驱动框架的标准接口。
struct rt_pin_ops
{
    void (*pin_mode)(struct rt_device *device, rt_base_t pin, rt_base_t mode);
    void (*pin_write)(struct rt_device *device, rt_base_t pin, rt_base_t value);
    int (*pin_read)(struct rt_device *device, rt_base_t pin);
    rt_err_t (*pin_attach_irq)(struct rt_device *device, rt_int32_t pin,
                    rt_uint32_t mode, void (*hdr)(void *args), void *args);
    rt_err_t (*pin_detach_irq)(struct rt_device *device, rt_int32_t pin);
    rt_err_t (*pin_irq_enable)(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled);
    rt_base_t (*pin_get)(const char *name);
};
1. drv_pin_mode
函数原型 void drv_pin_mode(struct rt_device *device, rt_base_t pin, rt_base_t mode)
功能说明 设置 Pin 模式,包括输入/输出模式、上下拉模式
参数定义 pin:Pin idmode: 输入/输出模式、上下拉模式 (PIN_MODE_xxx 格式的宏)
注意事项 -
2. drv_pin_write
函数原型 void drv_pin_write(struct rt_device *device, rt_base_t pin, rt_base_t value)
功能说明 设置输出 Pin 的电平状态
参数定义 pin:Pin idvalue: 电平状态 0/1
注意事项 -
3. drv_pin_read
函数原型 int drv_pin_read(struct rt_device *device, rt_base_t pin)
功能说明 设置输出 Pin 的电平状态
参数定义 pin:Pin id
返回值 电平状态 0/1
注意事项 -
4. drv_pin_attach_irq
函数原型 rt_err_t drv_pin_attach_irq(struct rt_device *device, rt_int32_t pin, rt_uint32_t mode, void (*hdr)(void *args), void *args)
功能说明 Pin 注册中断
参数定义 pin:Pin idmode: 中断触发模式,边沿还是电平触发 (PIN_IRQ_MODE_xxx 格式的宏)hdr:pin 中断处理函数 args:中断处理时的自定义参数
返回值 操作是否成功 (0=OK, other=Error)
注意事项 -
5. drv_pin_detach_irq
函数原型 rt_err_t drv_pin_detach_irq(struct rt_device *device, rt_int32_t pin)
功能说明 Pin 注销中断
参数定义 pin:Pin id
返回值 操作是否成功 (0=OK, other=Error)
注意事项 -
6. drv_pin_irq_enable
函数原型 rt_err_t drv_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_t enabled)
功能说明 使能 Pin 中断
参数定义 pin:Pin idenabled: 1 = en, 0 = dis
返回值 操作是否成功 (0=OK, other=Error)
注意事项 -
7. drv_pin_get
函数原型 rt_base_t drv_pin_get(const char *name)
功能说明 根据 Pin Name 获取 Pin Id
参数定义 name:Pin Name 字符串 (“PA.1” 类似格式)
返回值 Pin Id
注意事项 -