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引脚配置为复用功能模式,并正确连接到外部电路。如果需要,还要配置重映射来改变引脚位置。
-
步骤三:设置流速和规格------通过寄存器,设置这条流水线的通信参数:波特率(水流速度)、数据位、校验位、停止位(数据包的规格)。
-
步骤四:启动与操作------开启串口,然后通过"发送寄存器"将数据放入流水线发送出去,或从"接收寄存器"读取从流水线送进来的数据。