GPIO 驱动函数分析

更新时间:
2024-01-09
下载文档

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

文档内容是否对您有所帮助?
有帮助
没帮助