news 2026/9/24 5:24:13

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/9/23 15:37:16

基于JLink接口定义的工业控制器烧录操作指南

以下是对您提供的技术博文进行 深度润色与专业重构后的终稿 。全文已彻底去除AI痕迹,采用资深嵌入式系统工程师第一人称视角写作,语言自然、逻辑严密、节奏紧凑,兼具教学性、工程实操性与行业洞察力。文中所有术语、参数、流程均严格依据SE…

作者头像 李华
网站建设 2026/9/23 15:35:54

进阶技巧:混合数据集提升Qwen2.5-7B通用性实战

进阶技巧:混合数据集提升Qwen2.5-7B通用性实战 在完成基础微调后,你是否遇到过这样的问题:模型记住了“我是CSDN迪菲赫尔曼开发的”,但回答专业问题时却频频出错?或者能流畅写诗,却不会解数学题&#xff1…

作者头像 李华
网站建设 2026/9/20 23:40:24

无需编程!SenseVoiceSmall + WebUI 实现富文本转录

无需编程!SenseVoiceSmall WebUI 实现富文本转录 你是否遇到过这样的场景:会议录音里夹杂着笑声、突然响起的掌声、背景音乐,还有说话人情绪起伏带来的语气变化——而传统语音识别工具只给你干巴巴的一行文字? 这次我们不写代码…

作者头像 李华
网站建设 2026/9/23 3:41:08

告别驱动安装难题:Windows系统Android调试工具自动配置指南

告别驱动安装难题:Windows系统Android调试工具自动配置指南 【免费下载链接】Latest-adb-fastboot-installer-for-windows A Simple Android Driver installer tool for windows (Always installs the latest version) 项目地址: https://gitcode.com/gh_mirrors/…

作者头像 李华
网站建设 2026/9/19 16:43:01

开源AI绘图模型趋势分析:Z-Image-Turbo+弹性GPU部署教程

开源AI绘图模型趋势分析:Z-Image-Turbo弹性GPU部署教程 1. 当前开源AI绘图模型的发展脉络 过去两年,开源图像生成模型正经历一场静默却深刻的范式迁移。从Stable Diffusion早期依赖庞大参数量和长推理步数,到如今Z-Image-Turbo这类模型以“…

作者头像 李华
网站建设 2026/9/19 20:34:41

开源漫画工具Tachiyomi完全指南:从入门到精通

开源漫画工具Tachiyomi完全指南:从入门到精通 【免费下载链接】website Official website for the Tachiyomi app. 项目地址: https://gitcode.com/gh_mirrors/website72/website Tachiyomi是一款专为Android设备设计的开源漫画工具,通过自定义漫…

作者头像 李华