STM32CubeMX串口配置

article/2025/6/19 6:00:44

STM32CubeMX串口配置

  • 一,Mode
    • 1,Asynchronous(异步模式)
    • 2,其他模式
    • 3,异步通信中的流控
  • 二,Configuration
    • 参数配置(Parameter Settings)
      • 1,Basic Parameters
      • 2,Advanced Parameters

在左边配置选项中选择Connectivity(通信),以串口1为例
在这里插入图片描述

一,Mode

串口的配置分为两大部分:Mode和Configuration,我们先介绍Mode部分
在这里插入图片描述
如果Mode选择Disable,那么串口对应的引脚就默认是普通的GPIO引脚

1,Asynchronous(异步模式)

一般情况下,我们使用的就是异步模式,也是我们常说的“UART“(其中这个A就表明异步模式比较常用),我在这里也只介绍异步模式

那么两台设备如何通过异步模式进行通信呢?
1,首先我们需要两根线传递数据:TX(发送) 和 RX(接收)
2,其次我们需要确保两者交流的速度(波特率)相同(一个发的快,另一个接的慢就飞飞了!)
3,然后我们还需要规定一帧数据的结构(这样两台设备可以默契的知道什么时候开始,什么时候停止,以及某一位数据的含义即解析数据):一个典型的数据帧如下
在这里插入图片描述
4,最后,我们的通信协议规定好了,但是串口怎么收发数据呢

串口“发送”数据的全过程:
数据首先被写入数据寄存器DR,硬件会立刻将DR中的数据搬到移位寄存器SR
SR会将数据1位1位(1bit1bit,1比特1比特)地发送到TX引脚,发送速度和发送顺序是什么样的呢?
顺序是从左到右:比如有一帧数据是一个起始位 + 8个数据位 + 停止位,串口会先发送起始位,然后是数据位0…最后是停止位
起始位(0) → 数据位0(0) → 数据位1(1) → 数据位2(0) → 数据位3(1)→ 数据位4(1) → 数据位5(0) → 数据位6(1) → 数据位7(0) → 停止位(1)
速度是:1 / 波特率 (秒)发送一位数据,也就是1秒发送波特率(数值大小)个bit
串口又是怎么根据波特率BaudRate大小得到发送速度的呢?
自己思考

2,其他模式

以下模式用到再说:
Synchronous
Single Wire (Half-Duplex)
Multiprocessor Communication
IrDA
LIN
SmartCard

3,异步通信中的流控

在串口RS232标准中,有流控模式
什么是流控?
避免发送方以太快的速度把数据丢给接收方,导致接收方来不及处理而发生丢帧。常见的流控方式分成两大类:
软件流控(XON/XOFF)
硬件流控(CTS/RTS,也就是RS-232 硬件流控)

为什么需要流控?
有流控的时候:接收方可以“告诉”发送方:“我准备好了,你再发”;或者“我快满了,先别发”,这样就不会出现“来不及读”而卡死或丢帧的情况。

以后用到流控时再仔细学习吧
在这里插入图片描述

二,Configuration

参数配置(Parameter Settings)

先介绍Parameter Settings选项
在这里插入图片描述

1,Basic Parameters

下面框中的分别是波特率,Word Length(包含数据位数 + 校验位位数),校验位位数,停止位位数
在这里插入图片描述
波特率 (Baud Rate):设置数据传输的速率,单位是比特每秒 (bps)。通信双方必须设置相同的波特率。

配置提示: 115200 是非常常用的波特率。选择时需考虑通信距离、线缆质量和对端设备能力。CubeMX 会根据APB时钟和选择的波特率计算分频值,并提示误差率。

数据位 (Word Length):
定义每个数据帧中包含的数据位数。
7 bits (+ Parity)
8 bits (+/- Parity)
9 bits (+/- Parity)

配置提示: 最常用的是 8 bits。选择 7 bits 通常用于 ASCII 传输。选择 9 bits 可用于多机通信地址帧或特定协议。注意 Word Length 包含 Parity 位(如果启用)。

停止位 (Stop Bits):
用于标记数据帧的结束。

配置提示: 标准异步通信通常使用 1 个停止位。2 个停止位提供更长的帧间隔,可能用于较慢或噪声较大的环境。其他选项用于 Smartcard 等特殊模式。

校验位 (Parity):
用于简单的数据错误检测。
None (无校验)
Even (偶校验)
Odd (奇校验)

配置提示: None (无校验) 最为常用。如果需要简单的错误检测,可以选择偶校验或奇校验,通信双方必须一致。注意启用校验位会占用 Word Length 中的一位。

2,Advanced Parameters

1,Data Direvtion:数据传输方向
决定串口既可以发又可以接收,仅仅接收,仅仅发送
在这里插入图片描述

2,过采样 (Over Sampling)
什么是过采样?
我们先回顾一下前面的波特率:如果波特率是115200,就表示1秒传输115200bit数据,就是1/115200s传输1个bit数据,每次只在每bit中间时刻采样一次,这是在标准波特率下
如果在16X过采样模式下,我们还是选择115200波特率,数据传输速度不变,但是,不是只采样1 次,而是16次以提高抗噪声能力和波特率精度

实际上我们仅用其中3次关键采样点:
第3、5、7次采样:用于确认起始位的下降沿(低电平)
其余采样:用于稳定性校验(防止噪声误触发)

配置提示: Over Sampling 16 是默认且常用的设置,提供较好的鲁棒性。在需要非常高的波特率(接近时钟频率极限)时,可以选择 Over Sampling 8,但这会降低抗噪声能力。

Advanced Parameters的应用:
接收传感器数据,并发送至上位机:Data Direction = Receive & Transmit
提高ADC精度:Over Sampling = 16x
更高的数据传输率 :降低过采样(8x),启用DMA
更高的抗干扰能力 :保持16x过采样,增加硬件滤波
低功耗模式 :减少过采样次数,使用硬件加速

问题可能原因解决方案
数据错误率高过采样不足提高至16x或32x
通信丢包未启用流控检查RTS/CTS或降低波特率
ADC读数不稳定电源噪声增加去耦电容

http://www.hkcw.cn/article/KtuDrmcqEo.shtml

相关文章

Java内存模型(JMM)与多线程编程实战

最近正在复习Java八股,所以会将一些热门的八股问题,结合ai与自身理解写成博客便于记忆 今天将以这四个问题为依据。 一、JMM内存模型解析 1. JMM核心概念 Java内存模型(Java Memory Model)定义了Java程序中各种变量(线程共享变量&#xf…

Spring Cache核心原理与快速入门指南

文章目录 前言一、Spring Cache核心原理1.1 架构设计思想1.2 运行时执行流程1.3 核心组件协作1.4 关键机制详解1.5 扩展点设计1.6 与Spring事务的协同 二、快速入门实战三、局限性3.1 多级缓存一致性缺陷3.2 分布式锁能力缺失3.3 事务集成陷阱 总结 前言 在当今高并发、低延迟…

【设计模式-4.5】行为型——迭代器模式

说明:本文介绍设计模式中,行为型设计模式之一的迭代器模式。 定义 迭代器模式(Iterator Pattern),也叫作游标模式(Cursor Pattern),它提供一种按顺序访问集合/容器对象元素的方法&…

【Python训练营打卡】day40 @浙大疏锦行

DAY 40 训练和测试的规范写法 知识点回顾: 1. 彩色和灰度图片测试和训练的规范写法:封装在函数中 2. 展平操作:除第一个维度batchsize外全部展平 3. dropout操作:训练阶段随机丢弃神经元,测试阶段eval模式关闭dropo…

软件技术如何赚钱

1. 开发并销售软件产品​ ​ 独立应用开发:针对特定需求或市场痛点,开发移动应用、桌面软件或网页应用。例如,开发一款专注于时间管理的移动应用,帮助用户提高工作效率。以 Python 结合 Kivy 框架开发一个简单的待办事项应用为例…

【Github/Gitee Webhook触发自动部署-Jenkins】

Github/Gitee Webhook触发自动部署-Jenkins #mermaid-svg-ryhZQMOzmkQZNMwX {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ryhZQMOzmkQZNMwX .error-icon{fill:#552222;}#mermaid-svg-ryhZQMOzmkQZNMwX .error-tex…

华为OD机试真题——最小的调整次数/特异性双端队列(2025A卷:100分)Java/python/JavaScript/C++/C语言/GO六种最佳实现

2025 A卷 100分 题型 本文涵盖详细的问题分析、解题思路、代码实现、代码详解、测试用例以及综合分析; 并提供Java、python、JavaScript、C++、C语言、GO六种语言的最佳实现方式! 2025华为OD真题目录+全流程解析/备考攻略/经验分享 华为OD机试真题《最小的调整次数/特异性双端…

建筑兔零基础人工智能自学记录101|Transformer(1)-14

Transformer 谷歌提出,一组编码-解码器 可以同时处理,通过位置编码来处理单词 实质是token词语接龙(只是有不同的概率) token对应向量 Transformer简述 文生图就需要用到transformer黑箱 token 内部层次 中间主要是embedding…

网线水晶头接法与8根线芯作用解析

网线的正确接法至关重要,它直接影响网络的稳定性与传输速度。而了解每根线的作用,更是深入掌握网络布线知识的关键。常见的网线为非屏蔽双绞线(UTP),内部包含 8 根不同颜色的线芯,两两相互缠绕,…

【GESP真题解析】第 2 集 GESP 三级样题卷编程题 1:逛商场

大家好,我是莫小特。 这篇文章给大家分享 GESP 三级样题卷编程题第 1 题:逛商场。 题目链接 洛谷链接:B3848 逛商场 一、完成输入 根据输入格式描述,输入一共有三行,第一行为整数 N,数据范围: 1 ≤ N ≤ 100 1 \le N \le 100 1≤N≤100,使用 int 类型。 第二行为 N …

Nacos实战——动态 IP 黑名单过滤

1、需求分析 一些恶意用户(‏可能是黑客、爬虫、DDoS ؜攻击者)可能频繁请求服务器资​源,导致资源占用过高。针对这种问题,可以通过IP‏ 封禁,可以有效拉؜黑攻击者,防止资源​被滥用,保障合法…

基于Web的濒危野生动物保护信息管理系统设计(源码+定制+开发)濒危野生动物监测与保护平台开发 面向公众参与的野生动物保护与预警信息系统

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

流媒体协议分析:流媒体传输的基石

在流媒体传输过程中,协议的选择至关重要,它决定了数据如何封装、传输和解析,直接影响着视频的播放质量和用户体验。本文将深入分析几种常见的流媒体传输协议,探讨它们的特点、应用场景及优缺点。 协议分类概述 流媒体传输协议根据…

通过mqtt 发布温湿度

参考 用HAL库改写江科大的stm32入门例子-补充DHT11_江科大stm32安装hal库-CSDN博客 老夫上课的时候 ,这部份讲的比较多 ,出发点是 安利 “单总线”的具体使用。 这里无非是引入dht11 库, 使用前初始化 然后通话dht11库的方法 读取数据 &…

ApiHug 1.3.9 支持 Spring 3.5.0 + Plugin 0.7.4 内置小插件升级!儿童节快乐!!!

有用内置小插件 - ApiHug小插件,大用途https://apihug.github.io/zhCN-docs/how/005_helpful_inner_plugin SDK: [1.3.9-RELEASE] - 2025-06-01 Move the router auto-processing to an internal plugin for enhanced flexibility.Translate the OAS to json sch…

CTFHub-RCE 命令注入-无过滤

观察源代码 判断是Windows还是Linux 源代码中有 ping -c 4 说明是Linux 查看有哪些文件 127.0.0.1|ls 发现除了index.php文件外,还存在一个可疑的文件 打开flag文件 我们尝试打开这个文件 127.0.0.1|cat 19492844826916.php 可是发现 文本内容显示不出来&…

Mysql库的操作和表的操作

Mysql库和表的操作 库的操作1.查看数据库列表2.创建数据库3.使用数据库4.查看当前在那个数据库中5.显示数据库的创建语句6.修改数据库7.删除数据库8.备份和恢复数据库9.查看数据的连接情况(简单来说就是查看有多少人使用你的数据库) 表的操作1.创建表2.查看表结构3.修改表本身(…

Excel如何分开查看工作表方便数据撰写

首先我这里有2class和3class两个工作表 接下来我们点击视图 按照顺序分别点击新建窗口和全部重排 ### 然后就是这样 接下来就OK了

C++23 已弃用特性

文章目录 1. std::aligned_storage 与 std::aligned_union1.1 特性介绍1.2 被弃用的原因1.3 替代方案 2. std::numeric_limits::has_denorm2.1 特性介绍2.2 被弃用的原因 3. 总结 C23 已弃用特性包括:std::aligned_storage、std::aligned_union 与 std::numeric_lim…

MySQL事务和索引原理

目录 1. MySQL事务原理 1.1. 事务的基本概念 1.2. 事务隔离的实现机制 1.3. 事务的启动方式 2. 索引的原理 2.1. 索引的作用 2.2. 索引常用模型及适用场景 2.3. InnoDB中的索引结构 2.4. 索引维护 2.5. 覆盖索引 2.6. 联合索引和最左缀原则 2.7. 索引下推 1. MySQL事…