GPIO 驱动函数分析
结构体 LW_GPIO_CHIP 成员函数和变量的功能说明如下:
INT (*GC_pfuncRequest)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为:从 SylixOS 中申请一个 GPIO。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
VOID (*GC_pfuncFree)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为: 释放正在使用的 GPIO,如果当前是中断模式,则取消中断。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset :GPIO 编号。
INT (*GC_pfuncGetDirection)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为: 获得指定 GPIO 方向,1 表示输出,0 表示输入。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
INT (*GC_pfuncDirectionInput)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为:设置指定 GPIO 为输入模式。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
INT (*GC_pfuncGet)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为: 获得指定 GPIO 的状态,1 表示高电平,0 表示低电平。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
INT (*GC_pfuncDirectionOutput)(struct lw_gpio_chip *pgchip, UINT uiOffset,
INT iValue);
该函数的功能为: 设置指定 GPIO 为输出模式。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
- iValue : 输出值。
INT (*GC_pfuncSetDebounce)(struct lw_gpio_chip *pgchip, UINT uiOffset,
UINT uiDebounce);
该函数的功能为:设置指定 GPIO 去抖参数。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
- uiDebounce : 去抖参数。
INT (*GC_pfuncSetPull)(struct lw_gpio_chip *pgchip, UINT uiOffset,
UINT uiType);
该函数的功能为:设置 GPIO 上下拉。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
- uiType : 上下拉类型(0 表示开路,1 表示上拉,2 表示下拉)。
VOID (*GC_pfuncSet)(struct lw_gpio_chip *pgchip, UINT uiOffset,
INT iValue);
该函数的功能为:设置指定 GPIO 的状态。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
- iValue : 值(1 表示高电平,0 表示低电平)。
INT (*GC_pfuncSetupIrq)(struct lw_gpio_chip *pgchip, UINT uiOffset,
BOOL bIsLevel, UINT uiType);
该函数的功能为:设置指定 GPIO 的外部中断输入模式。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
- bIsLevel : 中断触发方式(1 表示电平触发,0 表示边沿触发)。
- uiType : 触发类型(如果是电平触发,1 表示高电平触发,0 表示低电平触发;如果是边沿触发,1 表示上升沿触发,0 表示下降沿触发,2 表示双边沿触发)。
VOID (*GC_pfuncClearIrq)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为:当 GPIO 为外部中断输入模式时,清除中断。
- pgchip : GPIO 控制器抽象结构体指针 。
- uiOffset : GPIO 编号。
irqreturn_t (*GC_pfuncSvrIrq)(struct lw_gpio_chip *pgchip, UINT uiOffset);
该函数的功能为:判断 GPIO 是否发生中断,返回 LW_IRQ_HANDLED 表示发生了中断, LW_IRQ_NONE 表示没有发生中断。
- pgchip : GPIO 控制器抽象结构体指针。
- uiOffset : GPIO 编号。
LW_GPIO_CHIP 结构体中的函数指针可以部分实现,未实现的功能函数需设置对应的函数指针为 LW_NULL 。