STM32F103 学习笔记-21-串口通信(第4节)-串口发送和接收代码讲解(上)
STM32F10xxx 串口数量与对应引脚说明
一、串口总数与型号适配关系
STM32F10xxx系列的串口分为同步异步串口USART(支持硬件流控、同步通信)和异步串口UART(仅基础异步收发),不同子型号/闪存容量的串口资源数量不同,核心对应关系如下:
|
产品系列 |
子型号/闪存容量 |
串口外设资源 |
串口总数 |
|---|---|---|---|
|
STM32F101(基本型) |
小/中容量(16~128KB) |
USART1、USART2、USART3 |
3个 |
|
STM32F101(基本型) |
大容量(256~512KB) |
USART1、USART2、USART3、UART4、UART5 |
5个 |
|
STM32F102(USB型) |
全容量 |
USART1、USART2、USART3 |
3个 |
|
STM32F103(主流型) |
小/中容量(16~128KB) |
USART1、USART2、USART3 |
3个 |
|
STM32F103(主流型) |
大容量(256~512KB) |
USART1、USART2、USART3、UART4、UART5 |
5个 |
|
STM32F105/F107(互联型) |
全系列 |
USART1、USART2、USART3、UART4、UART5 |
5个 |
注:你文档中重点提及的STM32F107xx属于互联型产品,标配5个串口(3个USART+2个UART)。
二、各串口详细引脚定义
以下为每个串口的核心收发引脚(TX/RX)、硬件流控/同步时钟引脚,以及STM32F1系列特有的AFIO引脚重映射配置,同时标注封装适配性。
1. USART1(APB2总线,全系列标配)
USART1是全系列型号都支持的串口,支持重映射,所有封装均引出基础收发引脚。
|
功能 |
默认复用(无重映射) |
重映射配置(USART1_REMAP=1) |
封装适配 |
|---|---|---|---|
|
TX(发送) |
PA9 |
PB6 |
48/64/100/144脚全支持 |
|
RX(接收) |
PA10 |
PB7 |
48/64/100/144脚全支持 |
|
CTS(清除发送) |
PA11 |
无重映射 |
48/64/100/144脚全支持 |
|
RTS(请求发送) |
PA12 |
无重映射 |
48/64/100/144脚全支持 |
|
CK(同步时钟) |
PA8 |
无重映射 |
48/64/100/144脚全支持 |
2. USART2(APB1总线,全系列标配)
USART2是全系列型号都支持的串口,支持部分重映射,重映射引脚仅在大封装引出。
|
功能 |
默认复用(无重映射) |
部分重映射(USART2_REMAP=01) |
封装适配 |
|---|---|---|---|
|
TX(发送) |
PA2 |
PD5 |
默认引脚48脚及以上支持;重映射仅100/144脚 |
|
RX(接收) |
PA3 |
PD6 |
默认引脚48脚及以上支持;重映射仅100/144脚 |
|
CTS(清除发送) |
PA0 |
PD3 |
默认引脚48脚及以上支持;重映射仅100/144脚 |
|
RTS(请求发送) |
PA1 |
PD4 |
默认引脚48脚及以上支持;重映射仅100/144脚 |
|
CK(同步时钟) |
PA4 |
PD7 |
默认引脚48脚及以上支持;重映射仅100/144脚 |
3. USART3(APB1总线,64脚及以上封装支持)
USART3支持无重映射、部分重映射、完全重映射三种模式,小封装无对应引脚。
|
功能 |
默认复用(无重映射) |
部分重映射 |
完全重映射 |
封装适配 |
|---|---|---|---|---|
|
TX(发送) |
PB10 |
PC10 |
PD8 |
默认引脚64脚及以上;部分/完全重映射仅100/144脚 |
|
RX(接收) |
PB11 |
PC11 |
PD9 |
默认引脚64脚及以上;部分/完全重映射仅100/144脚 |
|
CTS(清除发送) |
PB13 |
PB13 |
PD11 |
默认引脚64脚及以上;完全重映射仅144脚 |
|
RTS(请求发送) |
PB14 |
PB14 |
PD12 |
默认引脚64脚及以上;完全重映射仅144脚 |
|
CK(同步时钟) |
PB12 |
PB12 |
PD10 |
默认引脚64脚及以上;完全重映射仅144脚 |
重映射配置:USART3_REMAP[1:0]=00(无重映射)/01(部分重映射)/11(完全重映射)。
4. UART4(APB1总线,仅大容量/互联型支持)
UART4仅支持异步基础收发,无硬件流控、同步时钟功能,无引脚重映射,仅100/144脚封装引出。
|
功能 |
固定引脚 |
说明 |
|---|---|---|
|
TX(发送) |
PC10 |
与USART3部分重映射TX引脚共用,不可同时使用 |
|
RX(接收) |
PC11 |
与USART3部分重映射RX引脚共用,不可同时使用 |
5. UART5(APB1总线,仅大容量/互联型支持)
UART5仅支持异步基础收发,无硬件流控、同步时钟功能,无引脚重映射,仅100/144脚封装引出。
|
功能 |
固定引脚 |
说明 |
|---|---|---|
|
TX(发送) |
PC12 |
无引脚复用冲突,独立使用 |
|
RX(接收) |
PD2 |
无引脚复用冲突,独立使用 |
三、关键使用注意事项
-
引脚重映射前提:使用重映射功能时,必须开启AFIO外设时钟,配置AFIO_MAPR寄存器对应的重映射位,同时将GPIO配置为复用推挽/输入模式。
-
封装限制:
-
48脚封装:仅可使用USART1、USART2,无法使用USART3/UART4/UART5;
-
64脚封装:可使用USART1、USART2、USART3,无法使用UART4/UART5;
-
100/144脚封装:大容量/互联型型号可使用全部5个串口。
-
-
时钟配置:USART1挂载在APB2总线,最高时钟72MHz;USART2/3、UART4/5挂载在APB1总线,最高时钟36MHz,波特率配置需匹配对应总线时钟。
-
引脚共用冲突:UART4的TX/RX与USART3部分重映射引脚共用,同一时刻只能选择一个外设使用对应引脚。
讲解:如何理解串口发送和接收中的“串口”
在嵌入式开发中,当我们谈论“串口发送和接收”时,这里的“串口”是一个综合概念,可以从三个层面来理解:
1. 核心:一个独立的“数据流水线”
你可以把每一个串口(如USART1、UART4)想象成MCU内部一条独立的、专门负责串行通信的“流水线”。这条流水线有固定的“入口”(TX引脚,用于发送数据)和“出口”(RX引脚,用于接收数据)。当你配置并使用USART1时,你就是在启用并操作这条名为“USART1”的流水线。
2. 硬件实体:引脚、时钟与寄存器
-
引脚(Pin):这是流水线连接外部的物理接口。如上文表格所示,每个串口的TX、RX引脚是固定的(或可通过重映射改变)。你必须正确地将这些引脚连接到外部设备(如USB转串口模块、传感器等)。
-
时钟(Clock):流水线的工作节拍。不同的串口挂载在不同的总线(APB1/APB2)上,时钟频率不同。配置波特率时,必须基于这个时钟来计算,否则数据传输速度会出错。
-
控制寄存器:你是流水线的调度员,通过读写一系列寄存器来“下达指令”,例如:开启流水线、设置数据格式(波特率、数据位、停止位等)、查询流水线状态(数据是否准备好发送/接收)、以及实际读写数据。
3. 软件配置:让流水线工作起来
在代码中,“使用串口”本质上就是按照以下步骤配置和操作这条流水线:
-
步骤一:选对流水线——根据你的芯片型号和封装(见上文第一部分),确定你有几个可用的串口(流水线),并选择一个来使用(例如USART2)。
-
步骤二:接通水管——根据第二部分的引脚定义,将选定的串口TX、RX引脚配置为复用功能模式,并正确连接到外部电路。如果需要,还要配置重映射来改变引脚位置。
-
步骤三:设置流速和规格——通过寄存器,设置这条流水线的通信参数:波特率(水流速度)、数据位、校验位、停止位(数据包的规格)。
-
步骤四:启动与操作——开启串口,然后通过“发送寄存器”将数据放入流水线发送出去,或从“接收寄存器”读取从流水线送进来的数据。
更多推荐


所有评论(0)