【STM32】| 01——常用外设 | USART

news/2025/3/30 21:27:20/

系列文章目录
【STM32】| 01——常用外设 | USART


失败了也挺可爱,成功了就超帅。

文章目录

  • 前言
  • 1. 基础理论
    • 1.1 并行通信和串行通信
    • 1.2 同步通信和异步通信
    • 1.3 单工/半双工/全双工
    • 1.4 电平信号(RS232/TTL)和差分信号(RS485)
    • 1.5 端口(COM)
  • 2. 串口理论
    • 2.1 串口物理连接
      • 2.1.1 多个单片机之间串口连接
      • 2.1.2 单片机和其他设备连接
    • 2.2 串口数据信号
    • 2.3 MCU串口外设
  • 3. 串口实践
    • 3.1 串口查询式收发
      • 3.1.1 Cubemx配置
      • 3.1.2 编写发送代码
      • 3.1.3 编写接收代码
      • 3.1.4 查询式收发的应用场景
    • 3.2 串口中断式收发
    • 3.3 串口DMA收发
    • 3.4 串口DMA空闲空断接收
    • 3.5 环形缓冲区

前言

本文描述串口相关原理、配置及使用
如基础收发功能、串口+DMA+IDEL接收一帧数据、防止数据丢失加入环形缓冲区等
环境:stm32f103zet6 keil HAL库

1. 基础理论

串口能干吗 可以用来通信。串口通信是我们常用的设备通信方式。下面先从涉及的相关概念说起

1.1 并行通信和串行通信

一般通信方式可以分为两类
1、串行通信 如串口、SPI、IIC等
2、并行通信 如SRAM等
在这里插入图片描述

1.2 同步通信和异步通信

在这里插入图片描述

1.3 单工/半双工/全双工

根据数据传输方向可以分为这三种
在这里插入图片描述

1.4 电平信号(RS232/TTL)和差分信号(RS485)

他们都用于串口。TTL、RS232/485都算电器上标准 都是基于串口的 这里简单大概介绍详细的可自行看下哦
在这里插入图片描述
TTL应用:单片机连接电脑通过串口助手通信:单片机如果没板载 串口转TTL的芯片的话 就需要通过 单片机串口接 USB转TLL然后插到电脑上
其他也需要相应的转换器或板载转换芯片

1.5 端口(COM)

一般我们指物理接口 比如DB9
当我们用串口助手 时需要选择 COM几
因为电脑识别到串口设备后显示为端口 COM几
USB-TTL/RS232/485 都会识别为端口

2. 串口理论

串口通信是串行通信的一种。也是全双工异步通信。

2.1 串口物理连接

串口接线 中有最多 5根 TX/RX/RTS/CTS/GND
一般我们只用 TX/RX/GND 3根
其他两根用作流控:即通信过程中 握手

2.1.1 多个单片机之间串口连接

MCU通常带有串口功能 直接使用串口对应引脚连接就可以
在这里插入图片描述

2.1.2 单片机和其他设备连接

串口和电脑连接
1、单片机板载USB转串口 如板载CH340芯片等
在这里插入图片描述

2、单片机通过外部USB转TTL 连接电脑

在这里插入图片描述
单片机和传感器串口连接
1、单片机连接输出RS485信号的传感器
在这里插入图片描述
在这里插入图片描述
以上列举了几种
总结
单片机(TTL)串口连接 RS232/485需要进行相应转换

2.2 串口数据信号

串口数据按照以下方式 每次传输一字节数据 数据按一位一位传输 从数据低位到高位。
1个起始位+8个数据位+1个校验位(有/无)+停止位
下图是串口数据帧组成

在这里插入图片描述
奇校验:数据位中1的个数为奇数 该位为1 反之为0
如数据位 00101101 4个1偶数 奇校验该位为1 偶校验该位为0

用逻辑分析仪抓取串口实际波形
在这里插入图片描述

还有传输最重要的参数 那就是传输速度。
串口的传输速度称为波特率 只有在相同波特率下才可以通信
在这里插入图片描述

所以我们在使用串口时需要配置它的波特率 数据位停止位 校验位这几个参数。

2.3 MCU串口外设

不同厂商的都大同小异 我这里以stm32为例
我们通过看查 STM32参考手册 去看串口详细描述即功能框图
通过看查我们可以了解到 stm32 USART外设 通用同步异步串口收发器
也就是说这个串口也可以同步用也可以异步全双工 它还有其他额外功能
比如 支持IRDA SIR(串行红外)、智能卡模拟还有一些检测校验等。
下面我们详细看下他的功能框图

在这里插入图片描述

在这里插入图片描述

发送一个数据 先给到发送数据寄存器 通过移位寄存器一位一位送走
接收一个数据从接收数据寄存器获取
具体一些含义通过阅读相关寄存器描述可以很清楚了解这里就步多说了
总的来说 我们使用这个串口外设时候有很多功能 比如发送完成会产生中断
接收也可以 空闲检测等等这些在一些数据处理或应用中极其有用。
多读参考手册 多翻寄存器 对底层了解清楚那么遇到一些问题就很容易解决

3. 串口实践

主要讲述 HAL库所以 使用Cubemx生成 记录如何配置以及使用起来

3.1 串口查询式收发

3.1.1 Cubemx配置

新建好对应芯片工程后
首先配置时钟系统 使用HSE外部晶振 系统时钟设置为最高 STM32F103 72MHZ请添加图片描述

开始配置串口 我们用串口1
我们可以看到配置波特率 停止位 校验位 数据位选项 然后
软件自动帮我们配置了串口1默认引脚
请添加图片描述

3.1.2 编写发送代码

可以通过 functions选项看查usart HAL库函数API
请添加图片描述

每秒发送程序运行次数
请添加图片描述

3.1.3 编写接收代码

可以看到虽然我有时一次发送了好几个字节 实际串口一直是一个一个接收发送的
请添加图片描述

3.1.4 查询式收发的应用场景

查询式发送:发送数据/重定向printf (调用printf即可在串口助手显示相关内容 如输出调试信息等)
查询式接收:我们一般不用这种方式接收数据 因为需要阻塞等待接收/不断检测接收 影响程序执行 占用资源
查询式缺点:实时性差

所以一般没特殊要求的话 发送采用查询式发送 接收采用中断式

重定向printf方法
1、使用 MicroLIB 库
引入微型C标准库 头文件添加 stdio.h 重定义 fputc 即可
在这里插入图片描述
效果
请添加图片描述

2、不用微库 使用自定义kprintf 格式化输出
请添加图片描述

3.2 串口中断式收发

3.3 串口DMA收发

3.4 串口DMA空闲空断接收

3.5 环形缓冲区


http://www.ppmy.cn/news/1298200.html

相关文章

LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory

原文:https://github.com/hiyouga/LLaMA-Factory/blob/main/README_zh.md 👋 加入我们的微信群。 [ English | 中文 ] LLaMA Board: 通过一站式网页界面快速上手 LLaMA Factory 通过 🤗 Spaces 或 ModelScope 预览 LLaMA Board。 使用 CU…

AI大语言模型会带来了新一波人工智能浪潮?

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮,可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

数 据 分 析 1

1.使用Wireshark查看并分析靶机桌面下的capture.pcapng数据包文件,找到黑客的IP地址,并将黑客的IP地址作为Flag值(如:172.16.1.1)提交;172.16.1.41 查找:tcp.connection.syn 2.继续分析captu…

easyui datagrid无数据时显示无数据

这里写自定义目录标题 需求解决办法 需求 使用datagrid显示记录时&#xff0c;结果查询记录数为0&#xff0c;此时需要显示无数据。 示例代码 <table id"dg"></table>$(#dg).datagrid({url:datagrid_data.json,columns:[[{field:code,title:Code,widt…

【JVM 基础】 Java 类加载机制

JVM 基础 - Java 类加载机制 类的生命周期类的加载: 查找并加载类的二进制数据连接验证: 确保被加载的类的正确性准备: 为类的静态变量分配内存&#xff0c;并将其初始化为默认值解析: 把类中的符号引用转换为直接引用 初始化使用卸载 类加载器&#xff0c; JVM类加载机制类加载…

Java版商城:Spring Cloud+SpringBoot b2b2c实现多商家入驻直播带货及 免 费 小程序商城搭建的完整指南

随着互联网的快速发展&#xff0c;越来越多的企业开始注重数字化转型&#xff0c;以提升自身的竞争力和运营效率。在这个背景下&#xff0c;鸿鹄云商SAAS云产品应运而生&#xff0c;为企业提供了一种简单、高效、安全的数字化解决方案。 鸿鹄云商SAAS云产品是一种基于云计算的软…

鉴源论坛 · 观模丨浅谈Web渗透之信息收集(下)

作者 | 林海文 上海控安可信软件创新研究院汽车网络安全组 版块 | 鉴源论坛 观模 社群 | 添加微信号“TICPShanghai”加入“上海控安51fusa安全社区” 信息收集在渗透测试过程中是最重要的一环&#xff0c;“浅谈web渗透之信息收集”将通过上下两篇&#xff0c;对信息收集、…

矛盾论原文与解读

文章目录 一、原文一 两种宇宙观二 矛盾的普遍性三 矛盾的特殊性四 主要的矛盾和主要的矛盾方面五 矛盾诸方面的同一性和斗争性六 对抗在矛盾中的地位七 结 论注 释 二、解读 一、原文 矛盾论 &#xff08;1937年8月&#xff09; 事物的矛盾法则&#xff0c;即对立统一的法则…