简要说明
GPIO(General Purpose I/O Ports)是通用输入/输出端口,通俗地说,就是一些引脚,可以通过它们输出高低电平或者通过它们读入引脚的状态是高电平或是低电平。
GPIO 模式
| 模式 | 枚举 |
| 上拉输入 | TUYA_GPIO_PULLUP |
| 下拉输入 | TUYA_GPIO_PULLDOWN |
| 高阻输入 | TUYA_GPIO_HIGH_IMPEDANCE |
| 浮空输入 | TUYA_GPIO_FLOATING |
| 推完输出 | TUYA_GPIO_PUSH_PULL |
| 开漏输出 | TUYA_GPIO_OPENDRAIN |
| 开漏带上拉输出 | TUYA_GPIO_OPENDRAIN_PULLUP |
以上模式需要关注芯片本身是否支持,这里只是模式的最大集合。
API 描述
tkl_gpio_init
gpio config
Definition: tuya_cloud_types.h:671
OPERATE_RET tkl_gpio_init(TUYA_GPIO_NUM_E pin_id, CONST TUYA_GPIO_BASE_CFG_T *cfg)
gpio init
- 功能描述:
- 参数:
pin_id:GPIO 引脚编号,此编号区别于芯片原始引脚号,是由涂鸦根据芯片PA、PB ... PN 上的引脚个数顺序往下编号的:
| 名字 | 定义 | 备注 |
| TUYA_GPIO_NUM_0 | 引脚 0 | 起始编号 |
| TUYA_GPIO_NUM_1 | 引脚 1 | |
| TUYA_GPIO_NUM_3 | 引脚 2 | |
| ... | 引脚 n | |
| TUYA_GPIO_NUM_60 | 引脚 60 | 最大编号 |
| 名字 | 定义 | 备注 |
| TUYA_GPIO_LEVEL_LOW | 低电平 | |
| TUYA_GPIO_LEVEL_HIGH | 高电平 | |
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
tkl_gpio_deinit
OPERATE_RET tkl_gpio_deinit(TUYA_GPIO_NUM_E pin_id)
gpio deinit
- 功能描述:
- 参数:
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
tkl_gpio_write
OPERATE_RET
tkl_gpio_write(TUYA_GPIO_NUM_E pin_id, TUYA_GPIO_LEVEL_E level);
OPERATE_RET tkl_gpio_write(TUYA_GPIO_NUM_E pin_id, TUYA_GPIO_LEVEL_E level)
gpio write
- 功能描述:
- 参数:
pin_id:GPIO 引脚编号
level: GPIO 输出电平
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
tkl_gpio_read
OPERATE_RET
tkl_gpio_read(TUYA_GPIO_NUM_E pin_id, TUYA_GPIO_LEVEL_E *level);
OPERATE_RET tkl_gpio_read(TUYA_GPIO_NUM_E pin_id, TUYA_GPIO_LEVEL_E *level)
gpio read
- 功能描述:
- 参数:
pin_id:GPIO 引脚编号
*level:GPIO 读取电平返回值
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
tkl_gpio_irq_init
gpio interrupt config
Definition: tuya_cloud_types.h:682
OPERATE_RET tkl_gpio_irq_init(TUYA_GPIO_NUM_E pin_id, CONST TUYA_GPIO_IRQ_T *cfg)
gpio irq init NOTE: call this API will not enable interrupt
- 功能描述:
- 参数:
pin_id:GPIO 引脚编号
*cfg: GPIO 中断配置
cfg:GPIO 基础配置,取值如下:
typedef struct {
TUYA_GPIO_IRQ_E mode;
TUYA_GPIO_IRQ_CB cb;
VOID_T *arg;
mode 定义如下:
| 名字 | 定义 | 备注 |
| TUYA_GPIO_IRQ_RISE | 上升沿模式 | |
| TUYA_GPIO_IRQ_FALL | 下降沿模式 | |
| TUYA_GPIO_IRQ_RISE_FALL | 双边沿模式 | |
| TUYA_GPIO_IRQ_LOW | 低电平模式 | |
| TUYA_GPIO_IRQ_HIGH | 搞电平模式 | |
cb 定义如下:
typedef VOID_T (*TUYA_GPIO_IRQ_CB)(VOID_T *args);
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
tkl_gpio_irq_enable
OPERATE_RET tkl_gpio_irq_enable(TUYA_GPIO_NUM_E pin_id)
gpio irq enable
- 功能描述:
- 参数:
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
tkl_gpio_irq_disable
OPERATE_RET tkl_gpio_irq_disable(TUYA_GPIO_NUM_E pin_id)
gpio irq disable
- 功能描述:
- 参数:
- 返回值:
- OPRT_OK - 成功
- 其他请参考文件 tuya_error_code.h,OPRT_OS_ADAPTER_GPIO_ERRCODE 定义部分
示例
示例 1
VOID_T tuya_gpio_test(VOID_T)
{
.mode = TUYA_GPIO_PUSH_PULL,
.direct = TUYA_GPIO_OUTPUT,
.level = TUYA_GPIO_LEVEL_LOW,
};
}
示例 2
STATIC VOID __gpio_irq_callback7(VOID *args)
{
}
STATIC VOID __gpio_irq_callback8(VOID *args)
{
}
VOID_T tuya_gpio_irq_test(VOID_T)
{
.mode = TUYA_GPIO_IRQ_RISE,
.cb = __gpio_irq_callback7,
.arg = NULL,
};
.mode = TUYA_GPIO_IRQ_RISE,
.cb = __gpio_irq_callback8,
.arg = NULL,
};
tKl_gpio_irq_enable(GPIO_NUM_7);
tKl_gpio_irq_enable(GPIO_NUM_8);
}