更新时间:2025-04-15 06:09:06下载pdf
本文为您介绍如何使用 T5 外设接口。
硬件接线图如下所示:
引脚 P20 作为 IO 使用,可以输出电平,也可以读取外部电平。
代码初始化
OPERATE_RET tuya_ai_toy_GPIO20_init(void)
{
OPERATE_RET rt = OPRT_OK;
TUYA_GPIO_BASE_CFG_T cfg;
cfg.mode = TUYA_GPIO_PULLDOWN;
cfg.direct = TUYA_GPIO_OUTPUT;
cfg.level = TUYA_GPIO_LEVEL_LOW;
TAL_PR_DEBUG("GPIO %d initialized", TUYA_GPIO_NUM_20);
tkl_gpio_init(TUYA_GPIO_NUM_20, &cfg);
return rt;
}
TUYA_GPIO_NUM_20
输出电平
GPIO 做输出,代码示例如下:
tkl_gpio_write(TUYA_GPIO_NUM_20, 1);//P20输出高电平
tkl_gpio_write(TUYA_GPIO_NUM_20, 0);//P20输出低电平
GPIO 读取外部电平,参考代码:
app_key_init(para.reset_key_pin);
开发板上的引脚位置图如下。其中,uart0
对应 P10、P11。
引脚 | 功能 |
---|---|
GPIO10 | DL_UART_RX |
GPIO11 | DL_UART_RX |
您可以参考以下示例代码实现 串口收发数据 功能:
// 串口收发
void my_uart_rx_callback_task(VOID_T *args) {
char buff[256] = {0};
int read_uart_len ;
while(1)
{
read_uart_len = tal_uart_get_rx_data_size(TUYA_UART_NUM_0);
if (read_uart_len > 0 && read_uart_len <= 256)
{
//串口收
tal_uart_read(TUYA_UART_NUM_0, buff,read_uart_len);
//打印
TAL_PR_HEXDUMP_DEBUG("read uart:",buff,read_uart_len);
char str[read_uart_len + 1];
for (int i = 0; i < read_uart_len; i++) {
str[i] = ((char*)buff)[i];
}
str[read_uart_len] = '\0';
tkl_log_output("UART received data: %s\n", str);
// 串口发
char data[] = {0x01,0x02,0x03,0x05,0x08};
int len = sizeof(data) / sizeof(data[0]); //
tal_uart_write(TUYA_UART_NUM_0, (const unsigned char *)data, len);
}
}
}
void user_uart_demo(void)
{
TAL_UART_CFG_T cfg;
memset(&cfg, 0, sizeof(TAL_UART_CFG_T));
cfg.base_cfg.baudrate = 115200;
cfg.base_cfg.databits = TUYA_UART_DATA_LEN_8BIT;
cfg.base_cfg.parity = TUYA_UART_PARITY_TYPE_NONE;
cfg.base_cfg.stopbits = TUYA_UART_STOP_LEN_1BIT;
cfg.rx_buffer_size = 256;
tal_uart_init(TUYA_UART_NUM_0, &cfg);
OPERATE_RET rt = OPRT_OK;
THREAD_HANDLE uart_task_handle;
THREAD_CFG_T thread_cfg = {
.thrdname = "uart_task",
.priority = THREAD_PRIO_5,
.stackDepth = 4096
};
TUYA_CALL_ERR_LOG(tal_thread_create_and_start(&uart_task_handle, NULL, NULL, my_uart_rx_callback_task, NULL, &thread_cfg));
}
该内容对您有帮助吗?
是意见反馈该内容对您有帮助吗?
是意见反馈