1. 实验目标与系统架构解析
本实验构建一个完整的串口回环通信系统:上位机通过串口助手发送任意数据(单字节或字符串),STM32F103单片机接收后原样转发回上位机,实现数据透传验证。该设计不依赖中断机制,完全基于轮询(Polling)模式,是嵌入式串口通信最基础、最可控的实现方式,适用于对实时性要求不高但调试便利性要求极高的开发阶段。
整个数据流路径清晰可追溯:上位机 → USB转TTL芯片(如CH340)→ STM32 USART1 RX引脚 → USART1接收数据寄存器(RDR)→ 用户缓冲区 → USART1发送数据寄存器(TDR)→ USART1 TX引脚 → USB转TTL芯片 → 上位机。其中,USART1作为全双工异步收发器,其核心控制逻辑围绕两个关键状态标志位展开:TXE(Transmit Data Register Empty)和RXNE(Read Data Register Not Empty)。前者指示TDR已空,可写入新数据;后者指示RDR非空,有新数据待读取。二者均位于USART状态寄存器(SR)中,是轮询模式下驱动通信的唯一依据。
在STM32F103的APB2总线上,USART1挂载于该高速总线,其时钟由RCC模块独立使能。这意味着USART1的波特率计算与APB2预分频系数直接相关,而非系统主频(HCLK)。若APB2预分频为1,则USARTDIV = f_APB2 / (16 × 波特率);若APB2预分频大于1,则需乘以相应倍数。这一细节决定了为何在CubeMX或手动配置中,必须首先确认RCC时钟树中APB2的分频设置——它构成了所有后续通信参数的物理基础。
2. 寄存器级接收机制深度剖析
理解RXNE标志位的行为是掌握