stm32入门教程--USART外设 超详细!!!
目录
简介
什么是UART?
什么是USART?
简介
USART(Universal Synchron /Asynchronous Receiver /Transmitter)通用同步/异步收发器
1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时许,拼接为一个字节数据,存放在数据寄存器里。
2、自带波特率发生器,最高达4.5Mbit/s
3、可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2)
4、可选校验位(无校验/奇校验/偶校验)
5、支持同步模式、硬件流控制、DMA、智能卡、IrDA、LIN
6、STM32F103C8T6 USART资源:USART1、USART2、USART3
什么是UART?
我们经常会遇到串口 叫UART,这少了个s,就是异步收发器,一般串口很少使用这个功能,所以其实UART和USART使用起来,也没有什么区别,其实STM32的USART模式就是比UART多了个时钟输出,它只支持时钟输出,不支持时钟输入,所以这个同步模式更多的是为了兼容别的协议或特殊用途而设计的,并不支持两个USART之间进行同步通信,所以我们学习串口主要还是异步通信。
什么是USART?
USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可以自动接收RX引脚的数据帧时许,拼接为一个字节数据,存放在数据寄存器里。

我们之前的串口协议,主要就是(如上图)靠收发这样的、约定好的波形来进行通信的,那USART外设,就是串口通信的硬件支持电路
USART大体可以分为发送和接收两部分 ,发送部分就是将数据寄存器的一个字节数据,自动转为协议规定的波形,从TX引脚发出,接收部分就是自动接收RX引脚的波形,按照协议规定,解码为一个字节数据,存放在数据寄存器里 ,这就是USART电路的功能当我们配置好USART,直接读写数据寄存器,就能自动发送和接受数据了。
下一条,自带波特率发生器,这个波特率发生器,就是用来配置波特率的 ,他其实就是一个分频器,比如我们APB2总线给个72MHz的频率,然后波特率发生器进行一个分频,得到我们想要的波特率时钟 ,最后在这个时钟下,进行收发,就是我们指定的通信波特率。

可配置数据位长度(8/9)、停止位长度(0.5/1/1.5/2),这些就是stm32USART支持配置的参数了,这个数据位长度就是我们前面的参数,有8位和9位。 9位就是包含奇偶校验位的长度,一般不需要奇偶校验位就是八位,需要就是九位

就是在连续发送时,停止位的长度决定了帧的间隔,我们最常用的的就是1位停止位,其他很少用。
下一点可选校验位,有无校验、奇校验、偶校验、但我们比较常用的是无校验。
以上的自带波特率发生器、数据为长度、可选校验位都可以通过配置寄存器来完成,使用库函数配置的话就更简单了,直接给结构体赋值就行。
串口通信我们最常用的就是波特率 11520或 9600,数据位8位,停止位1位,无校验。
下一条,同步模式,就是多了个时钟CLK的输出;硬件流控制,这个是比如A设备有个TX向B设备的RX发送数据,A设备一直在发,发的太快了,B处理不过来,如果没有硬件流控制,那B就只能抛弃新数据或者覆盖原数据了,如果有硬件流控制,在硬件电路上就会多一根线 ,如果B没准备好接收,就置高电平,如果准备好了,就置低电平,A接收到了B反馈的准备信号,就只会在B准备好的时候,才发送数据,然后B没准备好,那数据就不会发送出去。
这就是硬件流控制,可以防止B处理慢而导致数据丢失的问题
硬件流控制STM32也是有的,不过我们一般不用
DMA是这个串口支持DMA进行数据转运 ,如果有大量的数据进行收发 ,可以使用DMA进行转运数据,减轻CPU的负担。
相关文章:
stm32入门教程--USART外设 超详细!!!
目录 简介 什么是UART? 什么是USART? 简介 USART(Universal Synchron /Asynchronous Receiver /Transmitter)通用同步/异步收发器 1、USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧…...
再探“构造函数”(2)友元and内部类
文章目录 一. 友元‘全局函数’作友元‘成员函数’作友元‘类‘作友元 内部类 一. 友元 何时会用到友元呢? 当想让(类外面的某个函数/其它的类)访问 某个类里面的(私有或保护的)内容时,可以选择使用友元。 友元提供了一种突破&a…...
ffmpeg+vue2
一、安装依赖 npm install ffmpeg/core ffmpeg/ffmpeg "ffmpeg/core": "^0.10.0", "ffmpeg/ffmpeg": "^0.10.1",二、配置ffmpeg 安装好插件以后,需要配置一下代码,否则会报错: 1、在vue.config.js…...
基于深度学习YOLOv10的电动二轮车目标检测、轨迹跟踪、测距算法
基于深度学习YOLOv10的电动二轮车目标检测、轨迹跟踪、测距算法 基于深度学习YOLOv10的电动二轮车目标检测、轨迹跟踪、测距算法引言YOLOv10简介目标检测轨迹跟踪测距算法实际应用结论 基于深度学习YOLOv10的电动二轮车目标检测、轨迹跟踪、测距算法 二轮电动车的目标检测、跟踪…...
鸿蒙ArkTS中的image组件
开发文档很详尽,就在DevEco中的API参考,可以随时调出来进行学习。 在鸿蒙官网也有非常详尽的资料,地址:开发说明-API参考概述 - 华为HarmonyOS开发者 (huawei.com) 这里,就学习image组件的一般用法以及使用SVG图标和字…...
LeetCode 684.冗余连接:拓扑排序+哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n)))
【LetMeFly】684.冗余连接:拓扑排序哈希表(O(n)) 或 并查集(O(nlog n)-O(nα(n))) 力扣题目链接:https://leetcode.cn/problems/redundant-connection/ 树可以看成是一个连通且 无环 的 无向 图。 给定往…...
让空气净化器“很听话”-置入NRK3502离线语音控制芯片
一、产品市场 随着智能家居的快速发展,人们对家居环境的舒适度与健康性要求日益提升,空气净化器作为改善室内空气质量的重要设备,其智能化升级变得尤为关键。让空气净化器“很听话”,不再仅仅是一个遥不可及的设想,而…...
8个Visio最佳替代软件推荐,每一款都堪称绘图神器
上午好,我的网工朋友。 绘图软件Visio是微软旗下知名的绘图软件,可用来绘制各种可视化图形,包括但不限于:流程图、人物关系图、组织架构图、思维导图、UML图、泳道图、甘特图、知识地图、软件架构图、鱼骨图等 它支持绘制的图形…...
微服务day02
教学文档: 黑马教学文档 Docker Docker的安装 镜像和容器 命令解读 常见命令 案例 查看DockerHub,拉取Nginx镜像,创建并运行容器 搜索Nginx镜像:在 www.hub.docker.com 网站进行查询 拉取镜像: docker pull ngin…...
使用 Logback 的最佳实践:`logback.xml` 与 `logback-spring.xml` 的区别与用法
在开发 Spring Boot 项目时,日志是调试和监控的重要工具。Spring Boot 默认支持 Logback 作为日志系统,并提供了 logback.xml 和 logback-spring.xml 两种配置方式。这篇文章将详细介绍这两者的区别、各自的优缺点以及最佳实践。 目录 一、什么是 Logbac…...
NSET or MSET算法--原理解析
1.背景 NSET/MSET是一种非线性的多元预测诊断技术,广泛应用于系统状态估计、故障诊断和预测等领域;相比于传统的线性模型和方法,NSET/MSET能够更好地处理非线性系统,并提供更准确的预测和诊断能力。在早期,MSET融合了…...
NC6 系统配置的消息渠道配置配置涉及相关的表,用户使用admin登录
NC6 系统配置的消息渠道配置配置涉及相关的表 --电子邮件、公共短信属性值配置表,比如邮箱类型、邮件发送服务器、用户、密码、发件人地址、url等。 SELECT * FROM sm_msg_stypeprop;--消息发送方式配置:电子邮件,公共短信。 SELECT * FROM sm_msg_stypebase WHERE active …...
PXC数据库性能测试对比
mysql单机 #初始化测试数据 sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=xxx.xxx.xxx.xxx --mysql-db=test --mysql-user=hzhadmin --mysql-password=Admi --tables=10 --table-size=1000000 prepare#运行性能测试 sysbench /usr/share/sysbench/oltp_rea…...
使用AutoMySQLBackup 数据库自动备份
1.下载地址 AutoMySQLBackup的下在地址为http://sourceforge.net/projects/automysqlbackup/ 。 目前最新版本为automysqlbackup-v3.0_rc6.tar.gz 2.解压缩 把下载的automysqlbackup-v3.0_rc6.tar.gz文件拷贝到/usr/tmp下面 在/usr/local下面新建一个automysqlbackup文件夹…...
NVR批量管理软件/平台EasyNVR多个NVR同时管理支持对接阿里云、腾讯云、天翼云、亚马逊S3云存储
随着云计算技术的日益成熟,越来越多的企业开始将其业务迁移到云端,以享受更为灵活、高效且经济的服务模式。在视频监控领域,云存储因其强大的数据处理能力和弹性扩展性,成为视频数据存储的理想选择。NVR批量管理软件/平台EasyNVR&…...
13.React useTimeout
在 React 应用中,延迟执行某些操作是一个常见需求。传统的 setTimeout 在函数组件中使用可能会导致一些问题,如闭包陷阱或难以正确清理。useTimeout 钩子提供了一种声明式的方法来实现延迟执行,使得定时器的管理更加简单和可靠。这个自定义钩子不仅简化了定时器的使用,还解…...
Android待机问题与内存泄露日志定位及bugreport获取分析
文章目录 bugreportbugreport介绍获取bugreport日志分析bugreport安卓平台log获取日志android.logkernel.logkernel.log查看待机过程sysinfo.log判断内存是否有泄露分析bugreport,定位唤醒源,判断是否有ANR。分析安卓log,定位待机唤醒功耗问题,判断是否有内存泄露。bugrepo…...
访问控制技术原理与应用
目录 访问控制概述实现访问控制目标访问控制参考模型常见访问控制模型访问控制模型-DAC自主访问控制访问控制模型-MAC强制访问控制访问控制模型-RBAC基于角色的访问控制访问控制模型-ABAC基于属性的访问控制 访问控制概述 访问控制是对资源对象的访问授权控制的方法以及运行机…...
详解Rust标准库:Vec向量
查看本地官方文档 安装rust后运行 rustup doc查看The Standard Library即可获取标准库内容 std::vec::Vec定义 Vec除了可以作为动态数组还可以模拟为一个栈,仅使用push、pop即可 Vec默认分配在堆上,对于一个容量为4,有两个元素a、b的向量…...
网络原理(初一,TCP/IP五层(或四层)模型面试问题)
TCP/IP五层(或四层)模型 TCP/IP是⼀组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。 TCP/IP通讯协议采⽤了5层的层级结构,每⼀层都呼叫它的下⼀层所提供的⽹络来完成⾃⼰的需求。 • 应⽤层:负责…...
wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
vscode(仍待补充)
写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh? debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
学校招生小程序源码介绍
基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
