跳转至

pinctrl

Pinctrl(引脚控制)模块提供引脚复用模式配置、驱动能力设置、上下拉配置、输入使能、施密特触发、压摆率控制以及低功耗挂起/恢复等功能。该模块通过 HAL (Hardware Abstraction Layer) 层函数指针实现硬件抽象,支持中断安全操作。

头文件清单

#include "include/driver/pinctrl.h"

Functions

接口名称 功能简述
uapi_pin_init 初始化Pinctrl模块
uapi_pin_deinit 去初始化Pinctrl模块
uapi_pin_set_mode 设置引脚复用模式
uapi_pin_get_mode 获取引脚复用模式
uapi_pin_set_ds 设置引脚驱动能力
uapi_pin_get_ds 获取引脚驱动能力
uapi_pin_set_pull 设置引脚上下拉
uapi_pin_get_pull 获取引脚上下拉状态
uapi_pin_set_ie 设置引脚输入使能状态
uapi_pin_get_ie 获取引脚输入使能状态
uapi_pin_set_slp_ie 设置CPU深睡时的引脚输入使能状态
uapi_pin_get_slp_ie 获取CPU深睡时引脚输入使能状态
uapi_pin_set_st 设置引脚施密特触发状态
uapi_pin_get_st 获取引脚施密特触发状态
uapi_pin_set_sl 设置引脚压摆率控制状态
uapi_pin_get_sl 获取引脚压摆率控制状态
uapi_pin_suspend 挂起PINCTRL
uapi_pin_resume 恢复PINCTRL

uapi_pin_init

void uapi_pin_init(void)

功能说明

  • 初始化Pinctrl模块,注册HAL (Hardware Abstraction Layer) 层函数指针
  • 该函数应在本模块其他函数被调用前执行
  • 可重复调用,每次调用重新注册HAL函数指针

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_deinit

void uapi_pin_deinit(void)

功能说明

  • 去初始化Pinctrl模块,注销HAL层函数指针
  • 调用后本模块其他接口将不可用,需重新调用uapi_pin_init初始化
  • 可重复调用

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_set_mode

errcode_t uapi_pin_set_mode(pin_t pin, pin_mode_t mode)

功能说明

  • 设置引脚复用模式,将指定引脚配置为相应的功能模式
  • 引脚不支持所设置的复用模式时返回ERRCODE_PIN_MODE_NO_FUNC
  • 中断安全,内部通过中断锁保护寄存器操作

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1
mode pin_mode_t 复用模式,参考pin_mode_t PIN_MODE_0(0)、PIN_MODE_1(1)、PIN_MODE_2(2)、PIN_MODE_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 引脚复用模式设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_get_mode

pin_mode_t uapi_pin_get_mode(pin_t pin)

功能说明

  • 获取引脚当前复用模式
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_MODE_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1

返回值

返回值 文字含义 触发场景
PIN_MODE_0(0) 复用模式0 引脚当前配置为模式0
PIN_MODE_1(1) 复用模式1 引脚当前配置为模式1
PIN_MODE_2(2) 复用模式2 引脚当前配置为模式2
PIN_MODE_3(3) 复用模式3 引脚当前配置为模式3
PIN_MODE_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_set_ds

errcode_t uapi_pin_set_ds(pin_t pin, pin_drive_strength_t ds)

功能说明

  • 设置引脚驱动能力
  • 中断安全,内部通过中断锁保护寄存器操作
  • 驱动能力值需在有效范围内,超出范围返回ERRCODE_PIN_INVALID_PARAMETER

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1
ds pin_drive_strength_t 驱动能力,参考pin_drive_strength_t PIN_DS_0(0)、PIN_DS_1(1)、PIN_DS_2(2)、PIN_DS_3(3)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 驱动能力设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_get_ds

pin_drive_strength_t uapi_pin_get_ds(pin_t pin)

功能说明

  • 获取引脚当前驱动能力
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_DS_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1

返回值

返回值 文字含义 触发场景
PIN_DS_0(0) 驱动能力等级0 引脚当前驱动能力为等级0
PIN_DS_1(1) 驱动能力等级1 引脚当前驱动能力为等级1
PIN_DS_2(2) 驱动能力等级2 引脚当前驱动能力为等级2
PIN_DS_3(3) 驱动能力等级3 引脚当前驱动能力为等级3
PIN_DS_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_set_pull

errcode_t uapi_pin_set_pull(pin_t pin, pin_pull_t pull_type)

功能说明

  • 设置引脚上下拉配置
  • 中断安全,内部通过中断锁保护寄存器操作
  • 上下拉类型需在有效范围内,超出范围返回ERRCODE_PIN_INVALID_PARAMETER

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1
pull_type pin_pull_t 上下拉类型,参考pin_pull_t PIN_PULL_NONE(0)、PIN_PULL_DOWN(1)、PIN_PULL_UP(2)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 上下拉设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_get_pull

pin_pull_t uapi_pin_get_pull(pin_t pin)

功能说明

  • 获取引脚当前上下拉状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_PULL_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1

返回值

返回值 文字含义 触发场景
PIN_PULL_NONE(0) 无上下拉 引脚当前未配置上下拉
PIN_PULL_DOWN(1) 下拉 引脚当前配置为下拉
PIN_PULL_UP(2) 上拉 引脚当前配置为上拉
PIN_PULL_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y

uapi_pin_set_ie

errcode_t uapi_pin_set_ie(pin_t pin, pin_input_enable_t ie)

功能说明

  • 设置引脚输入使能状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 输入使能状态需在有效范围内,超出范围返回ERRCODE_PIN_INVALID_PARAMETER

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1
ie pin_input_enable_t 输入使能状态,参考pin_input_enable_t PIN_IE_DISABLE(0)、PIN_IE_ENABLE(1)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 输入使能设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_IE 功能宏 支持引脚输入使能功能 n

uapi_pin_get_ie

pin_input_enable_t uapi_pin_get_ie(pin_t pin)

功能说明

  • 获取引脚当前输入使能状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_IE_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1

返回值

返回值 文字含义 触发场景
PIN_IE_DISABLE(0) 输入禁用 引脚当前输入被禁用
PIN_IE_ENABLE(1) 输入使能 引脚当前输入已使能
PIN_IE_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_IE 功能宏 支持引脚输入使能功能 n

uapi_pin_set_slp_ie

errcode_t uapi_pin_set_slp_ie(uint32_t pin, uint8_t ie)

功能说明

  • 设置CPU深睡时的引脚输入使能状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 引脚编号和输入使能值需在有效范围内,超出范围返回ERRCODE_PIN_INVALID_PARAMETER

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin uint32_t 引脚编号 0 ~ PIN_MAX_NUMBER-1
ie uint8_t 输入使能状态 0(禁用)、1(使能)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 深睡输入使能设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_SLP_IE 功能宏 支持CPU深睡时引脚输入使能功能 n

uapi_pin_get_slp_ie

pin_input_enable_t uapi_pin_get_slp_ie(uint32_t pin)

功能说明

  • 获取CPU深睡时引脚的输入使能状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_IE_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin uint32_t 引脚编号 0 ~ PIN_MAX_NUMBER-1

返回值

返回值 文字含义 触发场景
PIN_IE_DISABLE(0) 输入禁用 深睡时引脚输入被禁用
PIN_IE_ENABLE(1) 输入使能 深睡时引脚输入已使能
PIN_IE_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_SLP_IE 功能宏 支持CPU深睡时引脚输入使能功能 n

uapi_pin_set_st

errcode_t uapi_pin_set_st(pin_t pin, pin_schmitt_trigger_t st)

功能说明

  • 设置引脚施密特触发状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 施密特触发状态需在有效范围内,超出范围返回ERRCODE_PIN_INVALID_PARAMETER

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1
st pin_schmitt_trigger_t 施密特触发状态,参考pin_schmitt_trigger_t PIN_ST_DISABLE(0)、PIN_ST_ENABLE(1)

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 施密特触发设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_ST 功能宏 支持引脚施密特触发功能 n

uapi_pin_get_st

pin_schmitt_trigger_t uapi_pin_get_st(pin_t pin)

功能说明

  • 获取引脚当前施密特触发状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_ST_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1

返回值

返回值 文字含义 触发场景
PIN_ST_DISABLE(0) 施密特触发禁用 引脚当前施密特触发被禁用
PIN_ST_ENABLE(1) 施密特触发使能 引脚当前施密特触发已使能
PIN_ST_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_ST 功能宏 支持引脚施密特触发功能 n

uapi_pin_set_sl

errcode_t uapi_pin_set_sl(pin_t pin, pin_slew_rate_t sl)

功能说明

  • 设置引脚压摆率控制状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 压摆率值需在有效范围内,超出范围返回ERRCODE_PIN_INVALID_PARAMETER

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1
sl pin_slew_rate_t 压摆率控制状态,参考pin_slew_rate_t 小于PIN_SL_MAX

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 压摆率设置成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_SL 功能宏 支持引脚压摆率控制功能 n

uapi_pin_get_sl

pin_slew_rate_t uapi_pin_get_sl(pin_t pin)

功能说明

  • 获取引脚当前压摆率控制状态
  • 中断安全,内部通过中断锁保护寄存器操作
  • 模块未初始化时返回PIN_SL_MAX

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
pin pin_t 引脚编号,参考pin_t 0 ~ PIN_NONE-1

返回值

返回值 文字含义 触发场景
pin_slew_rate_t枚举值 压摆率控制状态 引脚当前压摆率控制状态
PIN_SL_MAX 无效值 引脚编号无效或模块未初始化

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_SL 功能宏 支持引脚压摆率控制功能 n

uapi_pin_suspend

errcode_t uapi_pin_suspend(uintptr_t arg)

功能说明

  • 挂起PINCTRL模块,进入低功耗模式
  • 调用后引脚配置保存,模块进入挂起状态
  • HAL函数指针未注册时直接返回ERRCODE_SUCC

前置条件

  • 模块已通过uapi_pin_init()初始化完成

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 挂起所需要的参数 -

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 挂起成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_LPM 功能宏 支持PINCTRL低功耗模式功能 n

uapi_pin_resume

errcode_t uapi_pin_resume(uintptr_t arg)

功能说明

  • 恢复PINCTRL模块,从低功耗模式恢复
  • 调用后引脚配置恢复,模块恢复正常工作状态
  • HAL函数指针未注册时直接返回ERRCODE_SUCC

前置条件

  • 模块已通过uapi_pin_init()初始化完成
  • 模块已通过uapi_pin_suspend()挂起

入参

名称 参数类型 详细说明 约束取值范围
arg uintptr_t 恢复所需要的参数 -

返回值

返回值 文字含义 触发场景
ERRCODE_SUCC(0x0) 成功 恢复成功
Other 其他错误码,参考errcode_t 执行失败

Kconfig配置

配置项 宏类型 说明 默认值
CONFIG_DRIVER_SUPPORT_PINCTRL 编译参与宏 控制pinctrl模块参与编译 y
CONFIG_PINCTRL_SUPPORT_LPM 功能宏 支持PINCTRL低功耗模式功能 n

Type definitions

errcode_t

typedef uint32_t errcode_t;

使用说明

用于uapi_pin_set_mode、uapi_pin_set_ds、uapi_pin_set_pull、uapi_pin_set_ie、uapi_pin_set_slp_ie、uapi_pin_set_st、uapi_pin_set_sl、uapi_pin_suspend、uapi_pin_resume的返回值类型

Enumerations

pin_t

typedef enum {
    S_EGPIO0 = 0,   // QSPI0_D0
    S_EGPIO1 = 1,   // QSPI0_D1
    S_EGPIO2 = 2,   // QSPI0_D2
    S_EGPIO3 = 3,   // QSPI0_D3
    S_EGPIO4 = 4,   // QSPI0_CLK
    S_EGPIO5 = 5,   // QSPI0_CS
    S_EGPIO6 = 6,   // QSPI3_CLK
    S_EGPIO7 = 7,   // QSPI3_CS
    S_EGPIO8 = 8,   // QSPI3_D0
    S_EGPIO9 = 9,   // QSPI3_D1
    S_EGPIO10 = 10, // QSPI3_D2
    S_EGPIO11 = 11, // QSPI3_D3
    S_EGPIO12 = 12, //
    S_EGPIO13 = 13, //
    S_EGPIO14 = 14, //
    S_EGPIO15 = 15, //
    S_EGPIO16 = 16, //
    S_EGPIO17 = 17, //
    S_EGPIO18 = 18, //
    S_EGPIO19 = 19, //
    S_EGPIO20 = 20, //
    S_EGPIO21 = 21, //
    S_EGPIO22 = 22, //
    S_EGPIO23 = 23, //
    S_EGPIO24 = 24, //
    S_EGPIO25 = 25, //
    S_EGPIO26 = 26, //
    S_EGPIO27 = 27, //
    S_EGPIO28 = 28, //
    S_EGPIO29 = 29, //
    S_EGPIO30 = 30, //
    S_EGPIO31 = 31, //
    S_MGPIO0 = 32,  // UART0_TXD
    S_MGPIO1 = 33,  // UART0_RXD
    S_MGPIO2 = 34,  // UART0_CTS
    S_MGPIO3 = 35,  // UART0_RTS
    S_MGPIO4 = 36,  // I2C0_SCL
    S_MGPIO5 = 37,  // I2C0_SDA
    S_MGPIO6 = 38,  // I2C1_SCL
    S_MGPIO7 = 39,  // I2C1_SDA
    S_MGPIO8 = 40,  // I2C2_SCL
    S_MGPIO9 = 41,  // I2C2_SDA
    S_MGPIO10 = 42, // I2C3_SCL
    S_MGPIO11 = 43, // I2C3_SDA
    S_MGPIO12 = 44, // SPI0_DI
    S_MGPIO13 = 45, // SPI0_DO
    S_MGPIO14 = 46, // SPI0_CLK
    S_MGPIO15 = 47, // SPI0_CS
    S_MGPIO16 = 48, // SPI0_CS1
    S_MGPIO17 = 49, // UART2_TXD
    S_MGPIO18 = 50, // UART2_RXD
    S_MGPIO19 = 51, // UART1_TXD
    S_MGPIO20 = 52, // UART1_RXD
    S_MGPIO21 = 53, // UART1_CTS
    S_MGPIO22 = 54, // UART1_RTS
    S_MGPIO23 = 55, // SPI1_DI
    S_MGPIO24 = 56, // SPI1_DO
    S_MGPIO25 = 57, // SPI1_CLK
    S_MGPIO26 = 58, // SPI1_CS
    S_HGPIO0 = 59,  // EMMC_D0
    S_HGPIO1 = 60,  // EMMC_D1
    S_HGPIO2 = 61,  // EMMC_D2
    S_HGPIO3 = 62,  // EMMC_D3
    S_HGPIO4 = 63,  // EMMC_D4
    S_HGPIO5 = 64,  // EMMC_D5
    S_HGPIO6 = 65,  // EMMC_D6
    S_HGPIO7 = 66,  // EMMC_D7
    S_HGPIO8 = 67,  // EMMC_CMD
    S_HGPIO9 = 68,  // EMMC_CLK
    S_HGPIO10 = 69, // SDIO_D0
    S_HGPIO11 = 70, // SDIO_D1
    S_HGPIO12 = 71, // SDIO_D2
    S_HGPIO13 = 72, // SDIO_D3
    S_HGPIO14 = 73, // SDIO_CLK
    S_HGPIO15 = 74, // SDIO_CMD
    S_AGPIO0 = 75,   //
    S_AGPIO1 = 76,   //
    S_AGPIO2 = 77,   //
    S_AGPIO3 = 78,   //
    S_AGPIO4 = 79,   //
    S_AGPIO5 = 80,   //
    S_AGPIO6 = 81,   //
    S_AGPIO7 = 82,   //
    S_AGPIO8 = 83,   //
    S_AGPIO9 = 84,   //
    S_AGPIO10 = 85,  //
    S_AGPIO11 = 86,  //
    S_AGPIO12 = 87,  //
    S_AGPIO13 = 88,  //
    S_AGPIO14 = 89,  //
    S_AGPIO15 = 90,  //
    S_AGPIO16 = 91,  //
    S_AGPIO17 = 92,  //
    S_AGPIO18 = 93,  //
    S_AGPIO19 = 94,  //
    S_AGPIO20 = 95,  //
    S_AGPIO21 = 96,  //
    S_AGPIO22 = 97,  //
    S_AGPIO23 = 98,  //
    S_AGPIO24 = 99,  //
    S_AGPIO25 = 100, //
    S_AGPIO26 = 101, //
    S_AGPIO27 = 102, //
    S_AGPIO28 = 103, //
    S_AGPIO29 = 104, //
    S_AGPIO30 = 105, //
    S_AGPIO31 = 106, //
    S_AGPIO32 = 107, //
    S_AGPIO33 = 108, //
    S_AGPIO34 = 109, //
    S_UGPIO0 = 110, //
    S_UGPIO1 = 111, //
    PIN_NONE,
} pin_t;
枚举成员 取值 描述
S_EGPIO0 ~ S_EGPIO5 0 ~ 5 QSPI0引脚
S_EGPIO6 ~ S_EGPIO11 6 ~ 11 QSPI3引脚
S_EGPIO12 ~ S_EGPIO31 12 ~ 31 EGPIO通用引脚
S_MGPIO0 ~ S_MGPIO3 32 ~ 35 UART0引脚
S_MGPIO4 ~ S_MGPIO5 36 ~ 37 I2C0引脚
S_MGPIO6 ~ S_MGPIO7 38 ~ 39 I2C1引脚
S_MGPIO8 ~ S_MGPIO9 40 ~ 41 I2C2引脚
S_MGPIO10 ~ S_MGPIO11 42 ~ 43 I2C3引脚
S_MGPIO12 ~ S_MGPIO15 44 ~ 47 SPI0引脚
S_MGPIO16 48 SPI0_CS1
S_MGPIO17 ~ S_MGPIO18 49 ~ 50 UART2引脚
S_MGPIO19 ~ S_MGPIO22 51 ~ 54 UART1引脚
S_MGPIO23 ~ S_MGPIO26 55 ~ 58 SPI1引脚
S_HGPIO0 ~ S_HGPIO9 59 ~ 68 EMMC引脚
S_HGPIO10 ~ S_HGPIO15 69 ~ 74 SDIO引脚
S_AGPIO0 ~ S_AGPIO34 75 ~ 109 AGPIO通用引脚
S_UGPIO0 ~ S_UGPIO1 110 ~ 111 UGPIO引脚
PIN_NONE 112 无效引脚

pin_mode_t

typedef enum {
    PIN_MODE_0 = 0,
    PIN_MODE_1 = 1,
    PIN_MODE_2 = 2,
    PIN_MODE_3 = 3,
    PIN_MODE_MAX
} pin_mode_t;
枚举成员 取值 描述
PIN_MODE_0 0 复用模式0
PIN_MODE_1 1 复用模式1
PIN_MODE_2 2 复用模式2
PIN_MODE_3 3 复用模式3
PIN_MODE_MAX 4 无效值

pin_drive_strength_t

typedef enum {
    PIN_DS_0  = 0,
    PIN_DS_1  = 1,
    PIN_DS_2  = 2,
    PIN_DS_3  = 3,
    PIN_DS_4  = 3,
    PIN_DS_5  = 3,
    PIN_DS_6  = 3,
    PIN_DS_7  = 3,
    PIN_DS_8  = 3,
    PIN_DS_9  = 3,
    PIN_DS_10 = 3,
    PIN_DS_11 = 3,
    PIN_DS_12 = 3,
    PIN_DS_13 = 3,
    PIN_DS_14 = 3,
    PIN_DS_15 = 3,
    PIN_DS_MAX
} pin_drive_strength_t;
枚举成员 取值 描述
PIN_DS_0 0 驱动能力等级0
PIN_DS_1 1 驱动能力等级1
PIN_DS_2 2 驱动能力等级2
PIN_DS_3 3 驱动能力等级3
PIN_DS_4 ~ PIN_DS_15 3 驱动能力等级3(与PIN_DS_3等效)
PIN_DS_MAX 4 无效值

pin_pull_t

typedef enum {
    PIN_PULL_NONE = 0,
    PIN_PULL_DOWN = 1,
    PIN_PULL_UP   = 2,
    PIN_PULL_MAX
} pin_pull_t;
枚举成员 取值 描述
PIN_PULL_NONE 0 无上下拉
PIN_PULL_DOWN 1 下拉
PIN_PULL_UP 2 上拉
PIN_PULL_MAX 3 无效值

pin_input_enable_t

typedef enum {
    PIN_IE_DISABLE = 0,
    PIN_IE_ENABLE = 1,
    PIN_IE_MAX
} pin_input_enable_t;
枚举成员 取值 描述
PIN_IE_DISABLE 0 输入禁用
PIN_IE_ENABLE 1 输入使能
PIN_IE_MAX 2 无效值

pin_schmitt_trigger_t

typedef enum {
    PIN_ST_DISABLE = 0,
    PIN_ST_ENABLE = 1,
    PIN_ST_MAX
} pin_schmitt_trigger_t;
枚举成员 取值 描述
PIN_ST_DISABLE 0 施密特触发禁用
PIN_ST_ENABLE 1 施密特触发使能
PIN_ST_MAX 2 无效值

pin_slew_rate_t

typedef enum {
    PIN_SL_DISABLE = 0,
    PIN_SL_ENABLE = 1,
    PIN_SL_MAX
} pin_slew_rate_t;
枚举成员 取值 描述
PIN_SL_DISABLE 0 压摆率控制禁用
PIN_SL_ENABLE 1 压摆率控制使能
PIN_SL_MAX 2 无效值

Macros

ERRCODE_SUCC

#define ERRCODE_SUCC                                        0UL

ERRCODE_PIN_INVALID_PARAMETER

#define ERRCODE_PIN_INVALID_PARAMETER                       0x80001190

ERRCODE_PIN_MODE_NO_FUNC

#define ERRCODE_PIN_MODE_NO_FUNC                            0x80001191

ERRCODE_PIN_NOT_INIT

#define ERRCODE_PIN_NOT_INIT                                0x80001192