ESP32引脚入门指南(六):从理论到实践(UART)

ESP32开发板具有UART0、UART1和UART2三个UART接口,支持异步通信(RS232和RS485)和IrDA速率高达5mbps。这些接口提供了丰富的串行通信选项,允许与各种设备进行全双工通信。
在这里插入图片描述

UART接口概述与引脚配置

UART 是一种全双工通信协议,允许数据同时在两个方向上传输。
在ESP32中,
UART0引脚连接到USB到串行转换器,用于烧录和调试。因此,不建议使用UART0引脚作其它用途。UART0的默认引脚是:

  • TX (发送):通常使用GPIO1(UART0_TXD)或GPIO3(UART0_TXD备用)
  • RX (接收):通常使用GPIO3(UART0_RXD)或GPIO1(UART0_RXD备用)

ESP32开发板上,UART1引脚是为集成闪存芯片保留的。并未引出,UART1的默认引脚是:

  • TX (发送):GPIO9(UART1_TXD)
  • RX (接收):GPIO10(UART1_RXD)

UART2是连接到uart设备(如GPS、指纹传感器、距离传感器等)的安全选项。UART2的默认引脚是:

  • TX (发送):GPIO16(UART2_TXD)
  • RX (接收):GPIO17(UART2_RXD)

请注意,UART0的部分功能用于串行下载和调试输出,使用时需谨慎。在初始化UART时,选择未与其他功能冲突的引脚,并确保它们已配置为UART模式。此外,某些开发板可能不会直接引出UART1的GPIO9和GPIO10,因为这些引脚是为集成闪存芯片保留的。

使用ESP32的UART

初始化UART接口涉及以下步骤:

  1. 配置参数:设置波特率、数据位数、停止位数、校验位类型。
  2. 分配引脚:选择GPIO引脚作为TX和RX。
  3. 驱动安装:分配ESP32资源给UART驱动。

应用场景与串口监视器

在Arduino环境下,mySerial.println 会将数据发送到通过指定GPIO连接的设备。要通过电脑上的串口监视器查看这些输出,你需要确保电脑通过USB与ESP32的UART0(通常是默认串口)相连,并且波特率设置与ESP32上配置的UART0匹配。这将允许你通过串口监视器查看Serial.println 的输出。

如果你的开发板支持UART2并引出了相应的GPIO引脚,你可以创建一个针对UART2的HardwareSerial实例,如下所示:

#include <HardwareSerial.h>HardwareSerial customSerial(2);  // 创建一个名为customSerial的新实例,关联到UART2void setup() {customSerial.begin(9600);  // 初始化UART2,波特率为9600Serial.begin(115200);  // 初始化UART0,通常用于与电脑通信
}void loop() {customSerial.println("Hello, UART2!");  // 使用customSerial发送数据
}

在这个例子中,HardwareSerial customSerial(2); 创建了一个新的HardwareSerial对象,它与UART2相关联。begin 方法用于配置波特率,确保在使用customSerial.println时,数据将通过UART2发送,而不是通过默认的Serial对象(即UART0)。

如果你想查看customSerial.println 发送的内容,你需要通过串口转USB适配器将UART2连接到电脑,并使用相应的串口软件(如串口监视器或Putty)以正确的波特率查看输出。请注意,确保你的开发板支持并引出了UART2的GPIO引脚。

在大多数情况下,当你仅使用默认的UART0(通常用于与电脑进行串口通信)时,不需要导入<HardwareSerial.h>库。因为Arduino IDE已经内置了对Serial对象的支持,它是一个预定义的HardwareSerial实例,关联到UART0。这意味着你可以直接使用Serial.begin()Serial.read()Serial.write()Serial.println()等方法,而无需导入任何额外的库。

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

JAVA获取application.yml配置文件的属性值

application.yml配置参数 方式一&#xff1a;使用Value方式(常用) 语法 Value("${配置文件中的key:默认值}") Value("${配置文件中的key}")方法1&#xff1a;使用的类文件中定义变量&#xff0c;直接使用变量 import org.springframework.beans.factory.an…

初阶数据结构—顺序表和链表

第一章&#xff1a;线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就…

STM32MP157_程序烧录

STM32MP157_程序烧录 说明&#xff1a; 1、使用emmc作为存储媒介&#xff0c;emmc是核心板上的存储颗粒空间有8GB 2、SD卡作为存储媒介&#xff0c;底板上有SD卡的插槽 emmc方式 软件&#xff1a;烧录软件使用STM32CubeProgrammer 连接线&#xff1a;硬件连接线使用type_c数据线…

哪里有高清视频素材软件?哪里有视频素材网站?

在这个视觉内容至关重要的时代&#xff0c;高质量的视频素材不仅能够增强信息传递的效果&#xff0c;还能显著提升观众的观看体验。接下来介绍的这些视频素材网站&#xff0c;将为您的创作提供广泛的选择&#xff0c;从本土到国际&#xff0c;满足您不同的需求和偏好。 1. 蛙学…

产品想在网络媒体上做营销宣传推广有什么好方法?

作为公司宣传负责人,我深知产品在网络媒体上的营销推广对于品牌建设和市场扩张的重要性。然而,在过去,当我们想要在网络媒体上推广产品时,我面临了诸多挑战和困境。 以前,我常常需要直接联系各大网络媒体,从海量的信息中筛选出合适的媒体平台,然后逐一发送邮件、拨打电话甚至亲…

部署达梦数据库主从配置详细操作DM8

服务器配置 主库 192.168.81.128 实例名 dm-1 从库 192.168.81.129 实例名 dm-2 以下安装部署主从服务器都操作 关闭防火墙 systemctl stop firewalld && systemctl disable firewalld 注意安装前必须创建 dmdba 用户&#xff0c;禁止使用 root 用户安装数据库。…

Dbeaver network unavailable due to certificate issue

场景&#xff1a;出现在DBeaver连接数据库下载驱动的时候 解决&#xff1a; 别勾选就可以了

第十一讲:指针(3)

第十一讲&#xff1a;指针&#xff08;3&#xff09; 1.字符指针变量1.1存储一个字符1.2存储一个字符串1.3一个有趣的面试题 2.数组指针变量2.1什么是数组指针变量2.2数组指针变量的初始化 3.二维数组传参的本质4.函数指针变量4.1介绍函数指针变量4.2 两段有趣的代码4.2.1代码1…

debian10 (armbian) 配置CUPS 服务

更新apt apt-update安装相关软件 apt-get install ghostscript apt-get install dc apt-get install foomatic-db-engine apt-get install cups3.修改配置文件 nano /etc/cups/cupsd.conf Listen localhost:631改为 Listen 0.0.0.0:631 以下四段配置加入Allow All # Only li…

20240510每日后端---聊聊文件预览,doc,image,ppt转PDF预览

一、引入依赖 <dependency><groupId>com.aspose</groupId><artifactId>aspose-words</artifactId><version>15.8</version></dependency><dependency><groupId>com.aspose</groupId><artifactId>crac…

如何使用visual vm和jstat进行远程监控

如何使用visual vm和jstat进行监控 安装visual vm 好像从jdk某个版本开始&#xff0c;jdk的bin目录下就不自带jvisualvm了&#xff0c;需要从官网下载一个visual vm。 打开visual vm Local是你本地的&#xff0c;无需多言。 先准备下必备的插件 如何通过visual vm观测远程…

数电——集成计数器

分析 &#xff08;1&#xff09;74161 4位同步&#xff08;cp相同&#xff09;二进制&#xff0c;模16&#xff08;2的4次方&#xff09; 逻辑符号 端口 D0,D1,D2,D3为输入信号 Q0,Q1,Q2,Q3为输出信号 RCO输出进位标志&#xff1a;记满16个数后&#xff0c;输出1 P,T 控…

今日arXiv最热NLP大模型论文:NAACL24实锤语言学对大模型“负优化”,抽象语义表示+思维链有损表现

大语言模型正以势不可挡的姿态席卷自然语言处理领域。在这个语言模型大显神威的时代&#xff0c;很多任务都转变为了端到端的文本生成任务。那么&#xff0c;在此之前我们苦心孤诣研究了几十年的语义表示&#xff0c;例如 AMR(抽象意义表示)&#xff0c;在这个时代里还能派上用…

使用GitLab自带的CI/CD功能在K8S集群里部署项目(四)

前置内容&#xff1a; 通过Docker Compose部署GitLab和GitLab Runner&#xff08;一&#xff09; 使用GitLab自带的CI/CD功能在本地部署项目&#xff08;二&#xff09; 使用GitLab自带的CI/CD功能在远程服务器部署项目&#xff08;三&#xff09; 一、K8S集群信息 节点名称…

Capl中的运算符

Capl中的运算符类似于C语言。由于capl中没有指针的概念&#xff0c;所以没有指针取值&#xff0c;取地址等运算符。 Capl中的运算符优先级同C语言一样&#xff0c;同样小括号可以 提升优先级。 1.算数运算符 整数类型之间的数据进行除法运算&#xff0c;结果一定是整数。如果…

【17-Ⅰ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

java中的oop(一)、概念

一、三大主线 &#xff08;非官方&#xff09; 成员&#xff1a;属性、方法、构造器、&#xff08;代码块&#xff0c;内部类&#xff09;&#xff1b; 特征&#xff1a;封装、继承、多态、&#xff08;抽象&#xff09;——三大特征&#xff1b; 关键字&#xff1a; this、…

如何使用openEuler 22.03 配置mail.rc给邮箱发送邮件

目录 需求环境总体步骤梳理详细步骤1. 安装mailx软件包&#xff08;centos默认安装&#xff0c;openEuler不默认安装&#xff09;2. 检查是否能ping得到smtp服务器3. 在qq邮箱开启smtp设置4. 修改/etc/mail.rc文件5. 测试 可能遇到的问题 需求 希望检查每日的备份和系统运行记…

【Vulhub靶场】Nginx 中间件漏洞复现

【Vulhub靶场】Nginx 中间件漏洞复现 一、Nginx 文件名逻辑漏洞&#xff08;CVE-2013-4547&#xff09;1. 影响版本2. 漏洞原理3. 漏洞复现 二、Nginx越界读取缓存漏洞&#xff08;CVE-2017-7529&#xff09;1. 漏洞详情2. 影响版本3. 漏洞复现 三、Nginx 配置错误导致漏洞&…

1013: 哈希表(开放定址法处理冲突)

解法&#xff1a; 线性探测是一种解决哈希冲突的方法&#xff0c;当发生哈希冲突时&#xff0c;它会依次往后查找空的槽位&#xff0c;直到找到一个空的槽位或者达到数组的末尾。 下面是处理哈希冲突的线性探测的步骤&#xff1a; 创建一个哈希表&#xff0c;里面包含一定数量的…