news 2026/7/28 1:53:37

STM32_串口通信是

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
STM32_串口通信是
简介

串口通信是嵌入式开发中最基础、最常用的通信方式之一,无论是与上位机调试、传感器数据读取,还是设备间通信,都离不开串口。STM32F407 系列芯片提供了多达 6 个 USART/UART 接口,支持异步通信、同步通信、智能卡模式等多种功能。本文从串口基础原理出发,详细讲解 STM32F407 串口的配置方法、代码实现、中断接收、DMA 传输等高级功能,同时提供完整的代码示例和调试技巧,帮助你快速掌握 STM32 串口通信技术。

一、串口通信核心概念与分类
1.1 基本概念

串口通信(Serial Communication)是指数据一位一位地顺序传输,具有线路简单、成本低等优点,广泛应用于嵌入式系统中。

关键参数

  • 波特率:每秒传输的二进制位数,常见值有 9600、115200 等
  • 数据位:每个字符的数据位数,通常为 8 位
  • 停止位:数据传输结束的标志,通常为 1 位
  • 校验位:用于检测传输错误,可选无校验、奇校验、偶校验
1.2 同步通信与异步通信

串口通信按时钟同步方式可分为同步通信和异步通信两种:

异步通信(Asynchronous)

  • 不需要专用时钟线,通过起始位和停止位来同步数据
  • 发送和接收方使用各自独立的时钟源
  • 优点:线路简单,仅需 TX/RX 两根线
  • 缺点:波特率误差累积可能导致通信错误
  • 适用场景:大多数串口通信场景,如与PC、传感器通信

同步通信(Synchronous)

  • 需要专用时钟线(SCLK),发送方提供时钟信号
  • 接收方根据时钟信号采样数据
  • 优点:通信速率更高,精度更可靠
  • 缺点:需要额外的时钟线
  • 适用场景:高速数据传输,如与SPI设备通信
1.3 STM32F407 串口分类

STM32F407 系列芯片提供了多种串口接口,按功能可分为三类:

串口类型功能特点适用场景
USART (Universal Synchronous/Asynchronous Receiver/Transmitter)支持异步和同步通信,功能最完整全双工通信、需要时钟同步的场景
UART (Universal Asynchronous Receiver/Transmitter)仅支持异步通信,功能简化一般异步通信场景
LPUART (Low Power UART)低功耗串口,适合电池供电设备低功耗应用场景

STM32F407 串口资源

  • USART1、USART2、USART3、UART4、UART5、USART6
  • 支持最高波特率 4.5Mbps
  • 支持硬件流控制(RTS/CTS)
  • 支持 DMA 传输
二、串口通信原理与硬件连接
2.1 通信原理

串口通信基于 RS-232 或 TTL 电平标准:

  • TTL 电平:逻辑 0 为 0V,逻辑 1 为 3.3V/5V(STM32 使用 3.3V)
  • RS-232 电平:逻辑 0 为 +3~+15V,逻辑 1 为 -3~-15V(需要电平转换芯片)

数据传输格式

  1. 起始位(1 位,低电平)
  2. 数据位(5-9 位,通常 8 位)
  3. 校验位(0 或 1 位,可选)
  4. 停止位(1-2 位,通常 1 位)
2.2 硬件连接

STM32 与 PC 连接

  • 通过 USB-TTL 转换模块(如 CH340、CP2102)连接
  • STM32 端:TX 接模块 RX,RX 接模块 TX,GND 共地
  • PC 端:通过 USB 口连接,安装对应驱动

STM32 与其他设备连接

  • 直接 TTL 电平连接(距离短,无干扰)
  • 通过 RS-485 转换模块连接(距离长,抗干扰)
三、STM32F407 串口配置与代码实现
3.1 标准库配置步骤

以 USART1 为例,使用标准库配置串口的基本步骤:

  1. 使能串口时钟和 GPIO 时钟
  2. 配置 GPIO 为复用功能
  3. 配置串口基本参数(波特率、数据位、停止位、校验位)
  4. 使能串口
  5. 配置中断(可选)
  6. 配置 DMA(可选)
3.2 代码实现(USART1,115200 波特率)
#include"stm32f4xx.h"/** * @brief 初始化 USART1 * @param 无 * @retval 无 */voidUSART1_Init(void){GPIO_InitTypeDef GPIO_InitStructure;USART_InitTypeDef USART_InitStructure;// 1. 使能时钟RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);// 2. 配置 GPIOGPIO_InitStructure.GPIO_Pin=GPIO_Pin_9|GPIO_Pin_10;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;GPIO_InitStructure.GPIO_PuPd=GPIO_PuPd_UP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOA,&GPIO_InitStructure);// 3. 将 GPIO 引脚连接到 USART1GPIO_PinAFConfig(GPIOA,GPIO_PinSource9,GPIO_AF_USART1);// TXGPIO_PinAFConfig(GPIOA,GPIO_PinSource10,GPIO_AF_USART1);// RX// 4. 配置 USART1USART_InitStructure.USART_BaudRate=115200;// 波特率USART_InitStructure.USART_WordLength=USART_WordLength_8b;// 数据位USART_InitStructure.USART_StopBits=USART_StopBits_1;// 停止位USART_InitStructure.USART_Parity=USART_Parity_No;// 无校验USART_InitStructure.USART_HardwareFlowControl=USART_HardwareFlowControl_None;// 无硬件流控制USART_InitStructure.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;// 收发模式USART_Init(USART1,&USART_InitStructure);// 5. 使能 USART1USART_Cmd(USART1,ENABLE);}/** * @brief 串口发送一个字节 * @param USARTx: 串口编号 * @param Data: 要发送的字节 * @retval 无 */voidUSART_SendByte(USART_TypeDef*USARTx,uint8_tData){// 等待发送缓冲区为空while(USART_GetFlagStatus(USARTx,USART_FLAG_TXE)==RESET);// 发送数据USART_SendData
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/23 20:25:38

告别手动抢茅台:智能预约的自动化高效管理方案

告别手动抢茅台:智能预约的自动化高效管理方案 【免费下载链接】campus-imaotai i茅台app自动预约,每日自动预约,支持docker一键部署 项目地址: https://gitcode.com/GitHub_Trending/ca/campus-imaotai 你是否曾遇到这样的困扰&#…

作者头像 李华
网站建设 2026/7/25 15:29:02

3分钟解锁钉钉自动打卡:告别早起的智能秘诀

3分钟解锁钉钉自动打卡:告别早起的智能秘诀 【免费下载链接】AutoDingding 钉钉自动打卡 项目地址: https://gitcode.com/gh_mirrors/au/AutoDingding 每天早上被闹钟惊醒,匆匆忙忙洗漱出门,一路狂奔只为赶上9点的打卡?这种…

作者头像 李华
网站建设 2026/7/22 1:12:28

STM32_PWR

简介 PWR(Power Control,电源控制)是 STM32 单片机中用于管理电源模式和电压的外设,支持多种低功耗模式,可显著降低系统功耗。STM32F407 系列芯片配备了功能强大的 PWR 外设,支持睡眠模式、停止模式、待机模式等多种低功耗模式,广泛应用于电池供电、低功耗应用等场景。…

作者头像 李华
网站建设 2026/7/20 20:11:41

阴阳师智能挂机助手:让游戏更轻松的自动化工具

阴阳师智能挂机助手:让游戏更轻松的自动化工具 【免费下载链接】yysScript 阴阳师脚本 支持御魂副本 双开 项目地址: https://gitcode.com/gh_mirrors/yy/yysScript 你是否也曾因为每天重复刷御魂而感到枯燥乏味?是否希望有一款工具能够帮助你自动…

作者头像 李华
网站建设 2026/7/26 1:30:16

如何用代码绘制科研级图形?揭秘LaTeX绘图的隐藏优势

如何用代码绘制科研级图形?揭秘LaTeX绘图的隐藏优势 【免费下载链接】tikz Random collection of standalone TikZ images 项目地址: https://gitcode.com/gh_mirrors/tikz/tikz 在科研论文的创作过程中,可视化元素往往决定了研究成果的传达效率。…

作者头像 李华