更新时间:2024-11-20 08:51:14下载pdf
函数名称 | 功能描述 |
---|---|
tuya_pin_init | 初始化引脚模式 |
tuya_pin_write | 设置引脚的电平 |
tuya_pin_read | 读取引脚的电平 |
tuya_pin_irq_init | 初始化引脚中断 |
tuya_pin_irq_enable | 使能引脚中断 |
tuya_pin_irq_disable | 禁能引脚中断 |
tuya_pin_control | 引脚相关控制 |
函数原型
int tuya_pin_init(tuya_pin_name_t pin, tuya_pin_mode_t mode);
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
mode | tuya_pin_mode_t | tuya_pin_mode_t枚举中的值 |
返回值
返回值 | 说明 |
---|---|
OPRT_OK | 初始化成功 |
其他错误码 | 初始化失败 |
函数原型
int tuya_pin_write(tuya_pin_name_t pin, tuya_pin_level_t level);
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
level | tuya_pin_level_t | tuya_pin_level_t枚举中的值 |
返回值
返回值 | 说明 |
---|---|
OPRT_OK | 初始化成功 |
其他错误码 | 初始化失败 |
函数原型
int tuya_pin_read(tuya_pin_name_t pin)
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
返回值
返回值 | 说明 |
---|---|
TUYA_PIN_LOW | 低电平 |
TUYA_PIN_HIGH | 高电平 |
函数原型
int tuya_pin_irq_init(tuya_pin_name_t pin, tuya_pin_mode_t irq_mode, tuya_pin_irq_cb cb, void *arg);
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
irq_mode | tuya_pin_mode_t | tuya_pin_mode_t枚举中的值 |
cb | tuya_pin_irq_cb | 注册的回调函数,参见如下函数原形 |
arg | void | 注册的参数 |
返回值
返回值 | 说明 |
---|---|
OPRT_OK | 初始化成功 |
其他错误码 | 执行失败 |
函数原型
int tuya_pin_irq_enable(tuya_pin_name_t pin);
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
返回值
返回值 | 说明 |
---|---|
OPRT_OK | 初始化成功 |
其他错误码 | 执行失败 |
函数原型
int tuya_pin_irq_disable(tuya_pin_name_t pin);
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
返回值
返回值 | 说明 |
---|---|
OPRT_OK | 初始化成功 |
其他错误码 | 执行失败 |
函数原型
int tuya_pin_control(tuya_pin_name_t pin, uint8_t cmd, void *arg);
参数说明
参数名称 | 参数类型 | 说明 |
---|---|---|
pin | tuya_pin_name_t | tuya_pin_name_t枚举中的值 |
cmd | uint8_t | 控制命令 |
*arg | void | 控制参数 |
返回值
返回值 | 说明 |
---|---|
OPRT_OK | 初始化成功 |
其他错误码 | 执行失败 |
结构体原型
typedef enum {
TUYA_PINS_NAME(TUYA_PA), //! TUYA_PA -> TUYA_PA0 - TUYA_PA31
TUYA_PINS_NAME(TUYA_PB), //! TUYA_PB -> TUYA_PB0 - TUYA_PB31
TUYA_PINS_NAME(TUYA_PC), //! TUYA_PC -> TUYA_PC0 - TUYA_PC31
TUYA_PINS_NAME(TUYA_PD), //! TUYA_PD -> TUYA_PD0 - TUYA_PD31
TUYA_PINS_NAME(TUYA_PE), //! TUYA_PE -> TUYA_PE0 - TUYA_PE31
} tuya_pin_name_t;
结构体原型
//! 一站式初始化参数
typedef enum {
//! PU -> pull up
//! PD -> pull dowm
//! FL -> floating
//! PP -> push pull
//! OD -> open drain
//! hiz -> high-impedance level
TUYA_PIN_MODE_IN_PU, //! 上拉输入
TUYA_PIN_MODE_IN_PD, //! 下拉输入
TUYA_PIN_MODE_IN_FL, //! 浮空输入
//! 输入中断触发模式选择,默认带上拉
TUYA_PIN_MODE_IN_IRQ_RISE, //! 上升沿触发
TUYA_PIN_MODE_IN_IRQ_FALL, //! 下降沿触发
TUYA_PIN_MODE_IN_IRQ_RISE_FALL, //! 双边沿触发
TUYA_PIN_MODE_IN_IRQ_LOW, //! 低电平触发
TUYA_PIN_MODE_IN_IRQ_HIGH, //! 高电平触发
TUYA_PIN_MODE_OUT_PP_LOW, //! 推挽输出低电平,不带上拉
TUYA_PIN_MODE_OUT_PP_HIGH, //! 推挽输出高电平,不带上拉
TUYA_PIN_MODE_OUT_PP_PU_LOW, //! 推挽输出低电平, 带上拉
TUYA_PIN_MODE_OUT_PP_PU_HIGH, //! 推挽输出高电平, 带上拉
TUYA_PIN_MODE_OUT_PP_PD_LOW, //! 开漏输出低电平,带下拉
TUYA_PIN_MODE_OUT_PP_PD_HIGH, //! 开漏输出高电平,带下拉
TUYA_PIN_MODE_OUT_OD_LOW, //! 开漏输出低电平,不带上拉
TUYA_PIN_MODE_OUT_OD_HIZ, //! 开漏输出高阻态,不带上拉
TUYA_PIN_MODE_OUT_OD_PU_LOW, //! 开漏输出低,带上拉
TUYA_PIN_MODE_OUT_OD_PU_HIGH, //! 开漏输出高,带上拉
} tuya_pin_mode_t;
结构体原型
typedef enum {
TUYA_PIN_LOW = 0, //! 设置引脚低电平
TUYA_PIN_HIGH //! 设置引脚高电平
} tuya_pin_level_t;
函数原型
typedef void (*tuya_pin_irq_cb)(void *args);
void tuya_pa5_irq_cb(void *arg)
{
PR_NOTICE("TUYA_PA5 irq trigger");
tuya_pin_irq_disable(TUYA_PA5);
}
void tuya_pa12_irq_cb(void *arg)
{
PR_NOTICE("TUYA_PA12 irq trigger");
//! enable tuya_pa5 irq;
PR_NOTICE("TUYA_PA5 irq enable");
tuya_pin_irq_enable(TUYA_PA5);
}
void tuya_pin_test(void)
{
STATIC UINT8_T tick = 0;
STATIC UINT8_T stat = TUYA_PIN_HIGH;
//! output init high
tuya_pin_init(TUYA_PA22, TUYA_PIN_MODE_OUT_PP_HIGH);
tuya_pin_init(TUYA_PA19, TUYA_PIN_MODE_OUT_PP_LOW);
//! input pull up
tuya_pin_init(TUYA_PA14, TUYA_PIN_MODE_IN_PU);
//! input irq mode
tuya_pin_irq_init(TUYA_PA5, TUYA_PIN_MODE_IN_IRQ_FALL, tuya_pa5_irq_cb, NULL);
tuya_pin_irq_disable(TUYA_PA5);
//! TUYA_PA5 irq enable by TUYA_P12 irq
tuya_pin_irq_init(TUYA_PA12, TUYA_PIN_MODE_IN_IRQ_FALL, tuya_pa12_irq_cb, TUYA_PA5);
while (1) {
tuya_hal_system_sleep(200);
if (++tick >= 3) {
tick = 0;
//! led toggle
stat = stat ? TUYA_PIN_LOW : TUYA_PIN_HIGH;
tuya_pin_write(TUYA_PA22, stat);
}
//! led control by key
if (tuya_pin_read(TUYA_PA14)) {
tuya_pin_write(TUYA_PA19, TUYA_PIN_HIGH);
} else {
tuya_pin_write(TUYA_PA19, TUYA_PIN_LOW);
}
}
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈