使用Arduino开发ESP32:串口(Serial port) HardwareSerial库使用说明

2023-10-27

HardwareSerial库使用
使用演示

上图中通过HardwareSerial库实现了对串口1的使用,具体说明见下文。

详细说明
使用HardwareSerial库需要先声明一个对象,例如上文图中的HardwareSerial mySerial1(1);;
HardwareSerial类在声明对象时接收一个输入参数(0、1、2),分别代表Serial、Serial1、Serial2;
声明对象后就可以按一般串口的方法使用了,方法说明如下:

void begin(unsigned long baud, uint32_t config=SERIAL_8N1, int8_t rxPin=-1, int8_t txPin=-1, bool invert=false, unsigned long timeout_ms = 20000UL);
使能串口,参数如下:
baud:串口波特率,该值写0则会进入自动侦测波特率程序;
config:串口参数,默认SERIAL_8N1为8位数据位、无校验、1位停止位;
rxPin:接收管脚针脚号;
txPin:发送管脚针脚号;
invert:翻转逻辑电平,串口默认高电平为1、低电平为0;
timeout_ms:自动侦测波特率超时时间,如果超过该时间还未获得波特率就不会使能串口;

void end();
失能串口,释放资源;

void updateBaudRate(unsigned long baud);
重新设置波特率;

int available(void);
返回接收缓存可读取字节数;

int availableForWrite(void);
ESP32默认有128字节的硬件TX FIFO,该方法返回TX FIFO空闲字节数;

int peek(void);
返回接收缓存中第一个字节数据,但并不从中删除它;

int read(void);
返回接收缓存中第一个字节数据,读取过的数据将从接收缓存中清除;

void flush(void);
等待串口收发完毕;

size_t write(uint8_t);
写数据到TX FIFO,在发送FIFO中的数据会自动输出到TX端口上;
该方法有很多重载,可以用来发送字符串、长整型、整形;
如果TX FIFO已满,则该方法将阻塞;

size_t write(const uint8_t *buffer, size_t size);
写数据到TX FIFO,如果发送FIFO已满,则该方法将阻塞;

uint32_t baudRate();
返回当前串口波特率;

size_t setRxBufferSize(size_t);
设置接收缓存大小(默认为256字节);
ESP32默认有128字节的硬件RX FIFO,在RX FIFO收到数据后会移送到上面的接收缓存中;

void setDebugOutput(bool);
设置该串口打印Debug信息(默认为0,失能后也会置为0);这个方法是用来设置从哪个串口打印的,需要在Arduino IDE>工具中启用Debug才会真正打印信息;(这里有一点点问题,这个库里如果没有别的串口用于打印调试信息,则Serial,即uart0一定会被用于打印调试信息,并且至少会打印Error信息)


除上面方法外,因为继承自Stream类所以也可以用该类的方法:如size_t readBytes(char *buffer, size_t length);和size_t readBytes(uint8_t *buffer, size_t length)等。
————————————————
版权声明:本文为CSDN博主「Naisu_kun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Naisu_kun/article/details/86004049

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Arduino开发ESP32:串口(Serial port) HardwareSerial库使用说明 的相关文章

  • kaggle房价预测特征意思_Kaggle项目之房价预测

    一 明确目的 本次练习需要围绕以下目的进行 基于竞赛方所提供的爱荷华州埃姆斯的住宅数据信息 预测每间房屋的销售价格 理解问题 观察每个变量特征的意义以及对于问题的重要程度 研究主要特征 房价 研究其他变量 研究其它变量对 房价 的影响以及它
  • redis锁

    一 redis锁的实现 加锁命令 SETNX key value 当键不存在时 对键进行设置操作并返回成功1 否则返回失败0 Key是锁的唯一标识 一般按业务来决定命名 Value 往往用来比较加锁的是哪一个线程或者哪一个消息 一般使用UU
  • 开源的MiniGPT-4可以让你提前体验一下GPT-4的魅力

    多模态GPT 4大模型的发布 让很多人看到了AI人工智能的魅力 特别是ChatGPT的流行 让很多人开始关注人工智能 虽然ChatGPT可以通过一些魔法进行使用 但是GPT 4多模态大模型 openai却没有完全免费开放给个人 要想使用GP
  • Android系统启动流程 源码解析

    Android系统启动流程 本文链接 https blog csdn net feather wch article details 132518105 有道云脑图 https note youdao com s GZ9d8vzO 1 整体
  • Java中的定时任务应用

    一 使用Java的Timer import java text ParseException import java text SimpleDateFormat import java util Date import java util
  • 安装Altium Designer 2022版本步骤含阿里网盘安装包(不限速)

    Altium designer 学习笔记第一篇 安装Altium Designer2022步骤及阿里网盘安装包 不限速 一 安装包链接 https www aliyundrive com s e85bUWKU45N 提取码 jd63 注 若
  • 数据结构 - 二叉树

    文章目录 目录 文章目录 前言 一 树型结构 1 1 树的概念 了解 1 2 数的常用术语 掌握 1 3 树的应用 了解 1 4 树相较于数组和链表的优势 了解 二 二叉树 重点 2 1 二叉树的概念 2 2 两种特殊的二叉树 2 3 二叉
  • 基于LLMs的多模态大模型(PALM-E,ArtGPT-4,VPGTrans )

    这个系列已经更文一些了 如果有新的文章会继续补充 基于LLMs的多模态大模型 Visual ChatGPT PICa MM REACT MAGIC 基于LLMs的多模态大模型 Flamingo BLIP 2 KOSMOS 1 基于LLMs的
  • Spring Boot集成OpenLdap 进行权限验证

    一 搭建openldap 搭建openldap可以有多种方式进行 1 可以去官网下载源码包 自行编译 安装 2 可以使用docker进行安装 这边主要介绍使用docker安装openldap 参考文章 https blog csdn net
  • FastSpeech2论文中文翻译

    FastSpeech2 论文的翻译 翻译的挺差的 大概是那意思 只翻译了摘要 模型部分和实验部分 摘要 高级的TTS模型像fastspeech 能够显著更快地合成语音相较于之前的自回归模型 而且质量相当 FastSpeech模型的训练依赖于
  • Linux下libxml库编程(-)

    http leansmall blog 163 com blog static 51617691200811171530183 1 编写说明 本文档主要介绍XML的基本知识及如何利用libxml来操作xml文件 2 XML基础 XML是eX
  • Telegram死循环(已解决)

    简介 Telegram 中文叫做电报 作为一款安全的 轻量级的即时通讯软件 是我们在进行国际通信 与外国友人或者身处外地的游子的一种通讯选择 但是这个软件有一个 BUG 就是如果我们之前已经在一台设备上登陆过自己的账号 那么如果再次登录的时
  • 23.8.16.git clone -b branchName http://xx.xx.x.x.xx.git解析

    git clone 表示使用git克隆远程仓库代码 b 这是branch的简写 代表分支的意思 branchName 代表远程仓库的分支名 也就是要克隆的指定分支名 http xx xx x x xx git 这是远程仓库的url地址
  • Vue3 -- 自定义指令directive

    目录 自定义指令directive 局部自定义指令 全局自定义指令 自定义指令动态参数 函数简写 传参给自定义指令 总结 自定义指令directive 在Vue中除了像v model 和 v show这样的默认内置的指令外 Vue 也允许注
  • go语言实战-----27-----mysql增删改查、预处理、事务、第三方库sqlx

    一 mysql增删改查 Mysql准备工作 首先我们建库建表 以方便进行测试 运行下面sql文件 CREATE DATABASE IF NOT EXISTS go test use go test CREATE TABLE user id
  • 2022年广东省中职组“网络空间安全”赛题及赛题解析(超详细)

    2022年广东省中职组 网络空间安全 赛项模块B解析 2022年中职组广东省区竞赛任务书 模块 B 基础设施设置与安全加固 1000分 B 1 Apache安全配置 B 2 隐写术应用 B 3 Python程序渗透 B 4 代码渗透测试 B
  • Pandas 之 过滤DateFrame中所有小于0的值并替换

    Outline 前几天 数据清洗时有用到pandas去过滤大量数据中的 负值 把过滤出来的 负值 替换为 NaN 或者指定的值 故做个小记录 读取CSV文件 代码 import pandas as pd import numpy as np
  • 万能指针:void * 指针

    背景 最近看到void 类型的指针不知道该怎么处理 特别学习一下 适用语言 C C 当中都可以使用 但就目前认知水平 C当中用的较为普遍一些 void 指针的机制 指针从某种程度上来说 无非就是一个地址 它的类型只是用于说明数据结构的 指针
  • RISC-V指令集是一种精简的、可编程的指令集,它主要用于实现各种复杂的数据处理与控制任务。它提供了一系列简单的、可编程的指令,可以用来实现复杂的操作,比如addi指令,它可以将一个常数(如0x1)加...

    RISC V指令集是一种精简可编程的指令集 可以用来实现复杂的数据处理和控制操作 它提供了一系列简单可编程的指令 例如addi指令 它可以将一个常数加到寄存器中 并将结果存储到另一个寄存器中 从而实现特定的操作
  • 小白学Linux之#pragma的用法

    预编译指令 pragma的用法 最近在看开源项目中的代码时 发现许多地方都用到了 pragma的程序 因此 就问了下谷歌老师 总结了下 pragma预编译指令的常用用法 现在和大家分享下 一 pragma最常用的方法 1 progma pa

随机推荐

  • 【Node】package.json文件

    package json 文件详解前言一 package json 文件作用二 package json 文件创建三 package json 文件示例四 package json 文件配置说明 五 项目依赖 六 开发依赖 七 Node j
  • 【Linux】工具(5)——gdb

    今天我们来到Linux工具的最后一篇博客 gdb的使用 目录 一 Linux下的release和debug 二 gdb常用指令选项 一 Linux下的release和debug 我们先来写一个Makfile 来方便我们编译代码 再来写一个t
  • C# 中的多线程和异步编程

    目录 前言 1 并发 并行 异步 同步 的概念 区别以及使用场景 1 并发和并行 2 同步和异步 3 何时使用多线程编程 何时使用异步编程 2 基础知识 1 简介及概念 1 1Join 和 Sleep 1 2线程是如何工作的 1 3线程 v
  • MySql事务和存储引擎

    目录 一 MySQL 事物 1 事务的概念 2 事务的ACID特点 2 1 1 原子性 2 1 2 一致性 2 1 3 隔离性 2 1 4 Mysql 及事物隔离级别 查询全局事务隔离级别 查询会话事务隔离级别 设置全局事务隔离级别 设置会
  • DRF---序列化组件

    目录 序列化器Serializer 序列化组件基本使用 使用序列化类 序列化多条数据 使用序列化类 序列化单条数据 反序列化 新增 修改 新增 视图类 序列化类 视图类 序列化类 序列化类的常见字段类和常见参数 常用字段类型 选项参数 通用
  • 【Linux线程同步】生产者消费者模型

    文章目录 1 peach 线程互斥中可能还会存在的问题 peach 2 peach 线程同步 peach 2 1 apple 同步概念与竞态条件 apple 2 2 apple 条件变量函数 apple lemon 初始化 lemon le
  • Qt5.15源码编译详解

    1 请先参考 https blog csdn net weixin 60395515 article details 127284046 spm 1001 2014 3001 5501 2 有以下几个不同的地方需要修改 Qt5的mkspec
  • 超详细解决困扰人的python典例:“有n个人围成一圈”式n里挑一

    自学python No 2 引语 题目 案例实现 range 函数 append 函数 pop 函数 完整代码 引语 记录学习路程 抛砖引玉 如有更好的算法或者出现错误 欢迎指点 题目 有n个人围成一圈 顺序排号 从第一个人开始报数 从1到
  • 汽车之家各种车型参数爬虫

    汽车之家各种车型参数爬虫 结果如下 本案例使用jupyter notebook 用到requests BeautifulSoup lxml urlencode pandas五个库 爬取下来的数据如下图所示 详细过程 整个过程分成三个部分 1
  • ubuntu系统信息查询(主板,内存,硬盘,网卡)

    1 主板型号 主板支持最大内存 单条内存的参数 sudo dmidecode t 2 查看主板信息 sudo dmidecode t 16 grep Maximum 查看主板支持最大内存 sudo dmidecode t memory 查看
  • JDBC、连接步骤(4步)、需要导入的第三方jar包、开发步骤

    1 JDBC Java Database Connectivity java连接数据库的工具 1 1 什么是JDBC 他是java提供的一组API 用来提供连接数据库中需要用到的类和接口 他是一组规范 为不同数据库封装相同接口的一组规范 让
  • 基于 Web 的 LDAP 认证,访问资源就是这么安全

    轻量级目录访问协议 即 LDAP 协议 是微软 Active Directory AD 和 OpenLDAP 等传统身份管理解决方案中的核心身份认证协议 然而 IT 环境的不断发展暴露了传统方案的问题 基于本地部署的设计逻辑无法适应新兴的云
  • Unity2D游戏无限刷新地图

    关于Unity2D游戏如何无限刷新地图的问题 首先在Unity中创建多个大小相同的物体当做刷新的地图对象 然后在创建一个名称为Endless cs的脚本 然后添加如下代码 public float distance void OnBecam
  • cmake(三十五)Cmake之include指令

    一 CMakeLists txt和cmake脚本的联系和区别 cmake脚本 1 cmake文件里面通常是 什么信息 information cmake文件 里包含了一些 公共 复用 的 cmake命令 和一些 宏 函数 当CMakeLis
  • java开发团队认知_一个优秀的研发团队应该具备什么特征

    1 计划执行 计划安排得当 不要老加班 不要老是现实和计划不匹配 不要做到哪儿计划就推后到哪儿 2 研发成果 成功产出几个重影响力级别的 完整成块的 有成就感自豪感的产品或项目 3 团队氛围 这个团队每个人都相处的很融洽 4 团队协作 每个
  • Pytorch 的 LSTM 模型的简单示例

    1 代码 完整的源代码 import torch from torch import nn 定义一个LSTM模型 class LSTM nn Module def init self input size hidden size num l
  • C. Doremy‘s IQ(二分/贪心)

    题目 题意 给定n个任务和艾米的智商q 艾米要按顺序处理这n个任务 每个任务有难度值a i 对于每个任务 艾米可以选择处理 也可以选择不处理 如果艾米当前的智商q大于等于任务a i 则艾米可以直接处理该任务 智商不受任何影响 如果艾米当前的
  • SpringCloud——微服务

    微服务技术栈 在之前的开发过程中 我们将所有的服务都部署在一台服务器中 当我们的服务开始越来越多 业务越来越复杂 当一台服务器不能承担我们的业务的时候 就需要将不同的业务分开部署在不同的服务器上 这每一个单独分离的服务 就是微服务 这些搭载
  • 数据结构 常见的八大数据结构汇总 为什么要学习数据结构?解读数据结构!进阶必看!

    文章目录 什么是数据结构 概念解释 为什么要学习数据结构 常见的数据结构 0 数组 1 链表 2 栈 3 队列 4 树 5 散列表 又叫哈希表 6 堆 7 图 思维导图 横向 纵向 什么是数据结构 数据结构 Data Structure 是
  • 使用Arduino开发ESP32:串口(Serial port) HardwareSerial库使用说明

    HardwareSerial库使用 使用演示 上图中通过HardwareSerial库实现了对串口1的使用 具体说明见下文 详细说明 使用HardwareSerial库需要先声明一个对象 例如上文图中的HardwareSerial mySe