RT-Thread: 串口操作、增加串口、串口函数

说明:本文记录RT-Thread添加串口的步骤和串口的使用。

1.新增串口

官方链接:https://www.rt-thread.org/document/site/rtthread-studio/drivers/uart/v4.0.2/rtthread-studio-uart-v4.0.2/
        新增串口只需要在 board.h 文件中定义相关串口的宏定义 BSP_USING_UARTx 及修改引脚信息即可新增串口的步骤总结如下:
1.新增对应串口的宏定义,如 BSP_USING_UART1、BSP_USING_UART2等。
2.修改串口 RX/TX 的端口,如 GPIOA、GPIOB等。
3.修改串口 RX/TX 的引脚号,如 GPIO_PIN_2、GPIO_PIN_3等
4.基于修改控制台章节新增串口 1 的示例如下

如下图,新增UART2的操作

编译并下载程序,在控制台输入 list_device 命令可以看到已经注册了两个串口设备,串口 1 和串口 2。如下图所示2.串口使用

从控制台输出的信息可以看到两个串口设备均已注册到系统中了。

2.串口使用

https://www.rt-thread.org/document/site/programming-manual/device/uart/uart/

1.串口 DMA 的使用


RT-Thread Setting 配置 DMA
如果要使用串口 DMA 的功能,需要使用 RT-Thread Setting 打开 DMA 的支持。配置路径为
RT-Thread Setting 
----组件
--------设备驱动程序
------------使用 UART 设备驱动程序
----------------使能串口 DMA 模式。

配置过程如下图所示

3.配置 board.h 中的宏

        如果需要使用串口 DMA 只需要在 board.h 文件中定义如下宏即可

#define BSP_UARTx_RX_USING_DMA
#define BSP_UARTx_TX_USING_DMA

        UARTx 表示的是哪个串口需要使用 DMA,使用的是 DMA 的发送还是接收功能。此例中使用的是串口 2 的 DMA 接收功能,所以定义了宏 BSP_UART2_RX_USING_DMA,串口 2 使用 DMA 的配置如下所示

        将 DMA 接收及轮询发送 章节中的DMA 的测试代码添加到工程中编译并下载程序,在控制台中输入 uart_dma_sample 命令,并使用 USB 转串口线连接串口 2,在串口 2 中可以看到如下打印信息。

        测试程序已经成功使用 DMA 进行了接收。


4.串口相关函数使用


1.发送数据 rt_device_write()

向串口中写入数据,可以通过如下函数完成

rt_size_t rt_device_write(rt_device_t dev,
                          rt_off_t    pos,
                          const void *buffer,
                          rt_size_t   size)

参数	        描述
dev			设备句柄
pos			写入数据偏移量,此参数串口设备未使用
buffer		内存缓冲区指针,放置要写入的数据
size		写入数据的大小

返回	——
写入数据的实际大小	如果是字符设备,返回大小以字节为单位;
0			需要读取当前线程的 errno 来判断错误状态

调用这个函数,会把缓冲区 buffer 中的数据写入到设备 dev 中,写入数据的大小是 size。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/348945.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

宋仕强论道之华强北的缺货潮(十六)

始于2019年缺货潮让华强北又生产一大批亿万富翁,缺货的原因主要是:首先,疫情封控导致大量白领在家远程办公,需要购买电脑、打印机等办公设备,同时孩子们也要在家上网课,进一步增加对电子智能终端产品的需求…

Java实现天沐瑜伽馆管理系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

口腔炎症和灼口综合征的区别有哪些?

随着社会发展的进步,当代人面临的压力越来越大,口腔疾病也随之而来。那么懂得如何分辨口腔疾病就至关重要。在我们绝大多数人眼里,口腔疾病都会统称为“上火”,但是不同的口腔疾病有不同症状和现象,如果没有早发现&…

C语言练习题110例(十)

91.杨辉三角 题目描述: KK知道什么叫杨辉三角之后对杨辉三角产生了浓厚的兴趣,他想知道杨辉三角的前n行,请编程帮他 解答。杨辉三角,本质上是二项式(ab)的n次方展开后各项的系数排成的三角形。其性质包括:每行的端点数为1&…

数据类型(下)

数据类型(下) 1.集合(set)1.1 定义1.2 独有功能1.3 公共功能1.4 转换1.5 其他1.5.1 集合的存储原理1.5.2 元素必须可哈希1.5.3 查找速度特别快1.5.4 对比和嵌套 练习题 强插:None类型2.字典(dict)2.1 定义2…

go sync.Pool 设计与实现

本文基于 Go 1.19 Pool 是一组可以安全在多个 goroutine 间共享的临时对象的集合。 存储在 Pool 中的任何项目都可能在任何时候被移除,因此 Pool 不适合保存那些有状态的对象,如数据库连接、TCP 连接等。 Pool 的目的是缓存已分配但未使用的项以供以后使…

java数据结构与算法刷题-----LeetCode565. 数组嵌套

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 解题思路 将数组抽象成链表,效果如下图所示 题目的要求&#x…

【VTKExamples::PolyData】第十九期 ImplicitDataSetClipping

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例ImplicitDataSetClipping,并解析接口vtkIdFilter & vtkBox & vtkClipPolyData,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就…

利用sqlmap探测get类型注入

环境准备:构建完善的安全渗透测试环境:推荐工具、资源和下载链接_渗透测试靶机下载-CSDN博客 基础:GET基于报错的sql注入利用-脱库-CSDN博客 sqlmap 工具是kali自带的 例子我都用sql靶场的第一关做演示 1、探测数据库名 sqlmap -u "http://192.168.0.103/sqlilab…

VUE--VUEX

一、什么是Vuex Vuex就是一个vue的状态(数据)管理工具,是vue项目实现大范围数据共享的技术方案。能够方便、高效的实现组件之间的数据共享。 Vuex的好处: (1)数据的存储一步到位,不需要层层传递…

HCIA学习作业二

要求:基于192.168.1.0/24进行合理划分,要求全网通 [AR3]display ip interface brief [AR3]display ip routing-table [AR1]display ip interface brief [AR1]display ip routing-table [AR2]display ip interface brief [AR2]display ip routing-tab…

arco design table遇到的一些问题

问题1:不知情就成了树形table table中不知道为啥就多了个树形加号在前面,查找问题后发现,是后端返回的数据中有children,框架中默认对这个参数做了树形结构。 解决办法: 当时没找到取消或者修改字段的属性或方法&…

使用vscode查bug

具体操作 修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release")//注释Release模式 set(CMAKE_BUILD_TYPE "Debug")//设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE "-O3 -Wall -g")//注释*这行代码是用来设置 CMake 构建系统中 Release 模式…

nginx限制ip访问

先看一下被禁止的效果 如何配置 禁止访问的话直接在location模块增加类似如下配置 deny all; 完整示例 location / {deny all;root html;index index.html index.htm;} 默认是allow all就是允许所有ip访问,如果只配置指定ip可以访问是无效的,还是所有的ip可以访问 无效示例…

APPium简介及安装

1 APPium简介 1. 什么是APPium? APPium是一个开源测试自动化框架,适用于原生、混合或移动Web应用程序的自动化测试工具。 APPium使用WebDriver协议驱动iOS、Android等应用程序。 2. APPium的特点 支持多平台(Android、iOS等) …

【RA6M3 HMI Board线下培训笔记】 RT Thread实现物联网应用 ETH+MQTT+LVGL+RTOS 实现温湿度监测

【RA6M3 HMI Board线下培训笔记】 RT Thread实现物联网应用 ETHMQTTLVGLRTOS 实现温湿度监测 1. 序言 随着物联网技术的飞速发展,越来越多的生活场景变得越来越智能,网联化、智能化越来越成为主旋律。 值此之际,RT-Thread 和 瑞萨电子共同…

C语言-算法-线性dp

[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中,从 7 → 3 → 8 →…

k8s中netty服务器容器tcp连接数量优化

netty的http1服务器在运行一段时间后会无法提供服务,返回客户端socket hang up 使用apipost测试抓包显示三次握手后被reset,经查是连接数过多 ps:客户端使用了大量短连接,如果能改成长连接就会消耗更少的连接,但是客户…

第五篇【传奇开心果短博文系列】鸿蒙开发技术点案例示例:ArkUI 组件库常用布局方式

传奇开心果短博文系列 系列短博文目录鸿蒙开发技术点案例示例短博文系列 短博文目录一、前言二、ArkUI 中常用的布局方式介绍三、Flex 布局示例代码四、Grid 布局示例代码五、Stack 布局示例代码六、Panel 布局示例代码七、Tab 布局示例代码八、Drawer 布局示例代码九、Card 布…

Redis客户端之Redisson(二)Redisson分布式锁

一、原理: Redisson并没有通过setNx命令来实现加锁,而是基于 Redis 看⻔狗机制,自己实现了一套分布式锁逻辑。 1、加锁机制: 二、使用方法: