STM32F10xxx 串口数量与对应引脚说明一、串口总数与型号适配关系STM32F10xxx系列的串口分为同步异步串口USART支持硬件流控、同步通信和异步串口UART仅基础异步收发不同子型号/闪存容量的串口资源数量不同核心对应关系如下产品系列子型号/闪存容量串口外设资源串口总数STM32F101基本型小/中容量16~128KBUSART1、USART2、USART33个STM32F101基本型大容量256~512KBUSART1、USART2、USART3、UART4、UART55个STM32F102USB型全容量USART1、USART2、USART33个STM32F103主流型小/中容量16~128KBUSART1、USART2、USART33个STM32F103主流型大容量256~512KBUSART1、USART2、USART3、UART4、UART55个STM32F105/F107互联型全系列USART1、USART2、USART3、UART4、UART55个注你文档中重点提及的STM32F107xx属于互联型产品标配5个串口3个USART2个UART。二、各串口详细引脚定义以下为每个串口的核心收发引脚TX/RX、硬件流控/同步时钟引脚以及STM32F1系列特有的AFIO引脚重映射配置同时标注封装适配性。1. USART1APB2总线全系列标配USART1是全系列型号都支持的串口支持重映射所有封装均引出基础收发引脚。功能默认复用无重映射重映射配置USART1_REMAP1封装适配TX发送PA9PB648/64/100/144脚全支持RX接收PA10PB748/64/100/144脚全支持CTS清除发送PA11无重映射48/64/100/144脚全支持RTS请求发送PA12无重映射48/64/100/144脚全支持CK同步时钟PA8无重映射48/64/100/144脚全支持2. USART2APB1总线全系列标配USART2是全系列型号都支持的串口支持部分重映射重映射引脚仅在大封装引出。功能默认复用无重映射部分重映射USART2_REMAP01封装适配TX发送PA2PD5默认引脚48脚及以上支持重映射仅100/144脚RX接收PA3PD6默认引脚48脚及以上支持重映射仅100/144脚CTS清除发送PA0PD3默认引脚48脚及以上支持重映射仅100/144脚RTS请求发送PA1PD4默认引脚48脚及以上支持重映射仅100/144脚CK同步时钟PA4PD7默认引脚48脚及以上支持重映射仅100/144脚3. USART3APB1总线64脚及以上封装支持USART3支持无重映射、部分重映射、完全重映射三种模式小封装无对应引脚。功能默认复用无重映射部分重映射完全重映射封装适配TX发送PB10PC10PD8默认引脚64脚及以上部分/完全重映射仅100/144脚RX接收PB11PC11PD9默认引脚64脚及以上部分/完全重映射仅100/144脚CTS清除发送PB13PB13PD11默认引脚64脚及以上完全重映射仅144脚RTS请求发送PB14PB14PD12默认引脚64脚及以上完全重映射仅144脚CK同步时钟PB12PB12PD10默认引脚64脚及以上完全重映射仅144脚重映射配置USART3_REMAP[1:0]00无重映射/01部分重映射/11完全重映射。4. UART4APB1总线仅大容量/互联型支持UART4仅支持异步基础收发无硬件流控、同步时钟功能无引脚重映射仅100/144脚封装引出。功能固定引脚说明TX发送PC10与USART3部分重映射TX引脚共用不可同时使用RX接收PC11与USART3部分重映射RX引脚共用不可同时使用5. UART5APB1总线仅大容量/互联型支持UART5仅支持异步基础收发无硬件流控、同步时钟功能无引脚重映射仅100/144脚封装引出。功能固定引脚说明TX发送PC12无引脚复用冲突独立使用RX接收PD2无引脚复用冲突独立使用三、关键使用注意事项引脚重映射前提使用重映射功能时必须开启AFIO外设时钟配置AFIO_MAPR寄存器对应的重映射位同时将GPIO配置为复用推挽/输入模式。封装限制48脚封装仅可使用USART1、USART2无法使用USART3/UART4/UART564脚封装可使用USART1、USART2、USART3无法使用UART4/UART5100/144脚封装大容量/互联型型号可使用全部5个串口。时钟配置USART1挂载在APB2总线最高时钟72MHzUSART2/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引脚配置为复用功能模式并正确连接到外部电路。如果需要还要配置重映射来改变引脚位置。步骤三设置流速和规格——通过寄存器设置这条流水线的通信参数波特率水流速度、数据位、校验位、停止位数据包的规格。步骤四启动与操作——开启串口然后通过“发送寄存器”将数据放入流水线发送出去或从“接收寄存器”读取从流水线送进来的数据。