电子产业一站式赋能平台

PCB联盟网

搜索
查看: 2591|回复: 3
收起左侧

RT-Thread Studio 应用开发示例 - 串口设备

[复制链接]

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-4-10 10:51:49 | 显示全部楼层 |阅读模式
RT-Thread Studio 应用开发示例 - 串口设备

简介

在 RT-Thread 中设备的开发总体上可以分为两类:设备的驱动开发和设备的应用开发。
  • 设备驱动开发的主要工作是操作硬件,对接设备驱动框架,并注册设备到系统中。
  • 设备应用开发的主要工作是直接调用操作系统提供的接口,例如:rt_device_find、rt_device_open 等函数,完成上层的业务逻辑。
所以在 RT-Thread 中,对于一个具体的设备,其自底向上的开发流程可总结为如下步骤
  • 打开设备驱动框架支持
  • 对接设备驱动框架提供的接口函数
  • 注册设备到系统中
  • 使用操作系统提供 API 操作设备
流程图如下所示

新增设备

本文将以串口为例,主要讲解串口设备的应用开发。串口设备驱动的开发和新增串口设备请参考 串口设备驱动开发
查找设备

使用设备前需要确保系统中已经成功注册了该设备,查找设备是否已经注册,可以在命令行中使用 list_device 命令来查找设备,例如本例中需要使用串口 2 ,命令行查询结果如下

从结果可以看出设备已经成功注册到系统中了。
应用程序也可以根据设备名称来查找设备。查找设备函数如下所示:
rt_device_t rt_device_find(const char* name);[tr]参数描述[/tr]
name设备名称
返回——
设备句柄查找到对应设备将返回相应的设备句柄
RT_NULL没有找到相应的设备对象
使用设备

当需要使用的设备成功注册到系统中时,该设备就可以直接通过系统提供的接口来进行访问了。
例如通用设备可以使用 rt_device_read、rt_device_write 等函数来进行数据的传输, I2C 设备可以使用 rt_i2c_transfer 等函数进行数据传输。更多设备相关的 API 请查看 设备与驱动程序 中对应的设备。
本例中需要使用的是串口 2,在 application 目录下新建 my_uart.c 源文件,如下图所示

并在 my_uart.c 文件中添加如下串口设备的示例程序
#include <rtthread.h>#define SAMPLE_UART_NAME       "uart2"       /* 需要操作的设备 */static rt_device_t serial;                   /* 设备句柄 */static char str[] = "hello RT-Thread!/r/n";  /* 需要发送的数据 */static int uart_sample(void){    rt_err_t ret = RT_EOK;    rt_size_t send_len = 0;    /* 查找系统中的串口设备 */    serial = rt_device_find(SAMPLE_UART_NAME);    if (!serial)    {        rt_kprintf("find %s faiLED!/n", SAMPLE_UART_NAME);        return -RT_ERROR;    }    /* 以中断接收及轮询发送模式打开串口设备 */    ret = rt_device_open(serial, RT_DEVICE_FLAG_INT_RX);    if (ret != RT_EOK)    {        rt_kprintf("open device failed/r/n");        return -RT_ERROR;    }    /* 发送字符串 */    send_len = rt_device_write(serial, 0, str, (sizeof(str) - 1));    if (send_len != sizeof(str) - 1)    {        rt_kprintf("send data failed/r/n");        return -RT_ERROR;    }    /* 关闭设备 */    ret = rt_device_close(serial);    if (ret != RT_EOK)    {        rt_kprintf("close device failed/r/n");        return -RT_ERROR;    }    rt_kprintf("serial device test successful/r/n");    return RT_EOK;}/* 导出到 msh 命令列表中 */MSH_CMD_EXPORT(uart_sample, uart device sample);编译并下载程序。在控制台中输入 uart_sample 命令,结果如下图

使用串口工具将开发板上的串口 2 连接到电脑,可以看到开发板串口 2 收到的数据如下

从上面的实验中可以看到我们成功使用系统提供的接口向串口 2 输出了数据,更多关于串口设备的使用请参看 串口设备
注意事项

  • 设备能够使用的前提是已经注册成功
  • nano 版没有设备的概念

回复

使用道具 举报

131

主题

512

帖子

1666

积分

三级会员

Rank: 3Rank: 3

积分
1666
发表于 2021-4-10 10:52:28 | 显示全部楼层
需要做PCB线路板的可以联系我

13651479995
回复 支持 反对

使用道具 举报

3

主题

2721

帖子

3052

积分

四级会员

Rank: 4

积分
3052
发表于 2021-6-4 13:43:53 | 显示全部楼层
11111111111111111111111111
回复 支持 反对

使用道具 举报

lyl

1

主题

1119

帖子

3525

积分

四级会员

Rank: 4

积分
3525
发表于 2021-6-15 08:41:02 | 显示全部楼层
资料很好,学习学习
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条


联系客服 关注微信 下载APP 返回顶部 返回列表