#include <rtdevice.h> #include <rthw.h>

#define EXAMPLE_UART_NAME "uart2" /* 串口设备名称 / #define EXAMPLE_UART_BAUDRATE 115200 / 波特率 */

static void uart_thread_entry(void *parameter) { rt_device_t uart; char buffer[20];

/* 查找串口设备 */
uart = rt_device_find(EXAMPLE_UART_NAME);
if (uart == RT_NULL)
{
    rt_kprintf("find %s failed!\n", EXAMPLE_UART_NAME);
    return;
}

/* 打开串口设备 */
if (rt_device_open(uart, RT_DEVICE_FLAG_RDWR | RT_DEVICE_FLAG_INT_RX) != RT_EOK)
{
    rt_kprintf("open %s failed!\n", EXAMPLE_UART_NAME);
    return;
}

while (1)
{
    /* 从串口读取数据 */
    if (rt_device_read(uart, 0, buffer, sizeof(buffer)) != sizeof(buffer))
    {
        rt_kprintf("read %s failed!\n", EXAMPLE_UART_NAME);
    }
    else
    {
        /* 打印接收到的数据 */
        rt_kprintf("Received: %s\n", buffer);
    }

    rt_thread_mdelay(1000);
}

}

int rt_application_init(void) { rt_thread_t tid;

tid = rt_thread_create("uart", uart_thread_entry, RT_NULL, 1024, 20, 10);
if (tid != RT_NULL)
{
    rt_thread_startup(tid);
}

return 0;

}

这个示例代码演示了如何使用 RT-Thread 的驱动串口功能。首先,我们通过 rt_device_find 函数查找指定名称的串口设备,然后使用 rt_device_open 函数打开串口设备。之后,在一个循环中,我们使用 rt_device_read 函数从串口读取数据,并使用 rt_kprintf 函数打印接收到的数据。最后,我们延时 1 秒钟,然后再次读取数据。


原文地址: https://www.cveoy.top/t/topic/px41 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录