TCS600U的GPIO使用参考

Lte-Cat.1/Cat.4/Cat.M设备,NB-IoT设备等
Post Reply
东皇007
Posts: 50

Code: Select all

#include "tal_gpio.h"
#include "tal_log.h"

UINT32_T gIrqCnt = 0;

VOID_T gpio_demo(VOID_T)
{
	OPERATE_RET ret;
	
/* GPIO配置为推挽低电平输出 */
TUYA_GPIO_BASE_CFG_T gpioCfg = {
	.mode = TUYA_GPIO_PUSH_PULL,
	.direct = TUYA_GPIO_OUTPUT,
	.level = TUYA_GPIO_LEVEL_LOW,
};

/* 初始化GPIO10 */
ret = tal_gpio_init(10, &gpioCfg);
if (OPRT_OK != ret) {
	TAL_PR_ERR("gpio10 init failed: %d", ret);
	return;
}

/* 控制GPIO10输出高电平 */
tal_gpio_write(10, TUYA_GPIO_LEVEL_HIGH);

/* GPIO配置为中断输入,上升沿触发 */
TUYA_GPIO_IRQ_T gpioIrqCfg = {
	.mode = TUYA_GPIO_IRQ_RISE,
	.cb = gpio_irq_cb, /* 中断处理函数 */
	.arg = NULL,
};

ret = tal_gpio_irq_init(11, &gpioIrqCfg);
if (OPRT_OK != ret) {
	TAL_PR_ERR("gpio11 irq init failed: %d", ret);
	return;
}

while(1) {
	TAL_PR_INFO("irq count: %d", gIrqCnt);
	tal_system_sleep(1000); /* 延时1秒 */
}
}

VOID_T gpio_irq_cb(VOID_T* args)
{
	gIrqCnt++;
	/* 注意: 中断处理函数中不能出现阻塞及打印等耗时调用 */
}
Post Reply