AFIO重映射:USART1_TX从PA9搬PB6,救活一版PCB

短文标题:AFIO重映射:USART1_TX从PA9搬PB6,救活一版PCB

你有没有想过一个问题:画PCB时,USART1的默认引脚PA9离串口座太远,走线绕一大圈,干扰大还占地方。怎么办?重新画板?不用。AFIO重映射让USART1_TX/RX"搬"到PB6/PB7。改一行配置,救一版PCB。引脚复用:一个引脚多个功能 STM32的每个GPIO引脚在芯片内部都接了一个信号选择器(多路开关):

  • 默认:引脚连接到GPIO控制器
  • 配置为复用功能(AF):引脚连接到某个片内外设(USART、SPI、TIM等)

// 配置PA9为复用推挽输出(USART1_TX)

GPIOA->CRH &= ~(0x0F << 4); // 清除CNF9、MODE9

GPIOA->CRH |= (0x0B << 4); // 复用推挽输出,50MHz

不是随便接的 :PA9/USART1_TX、PA10/USART1_RX是芯片设计时固定的组合。重映射:换一组引脚 ,如果默认引脚不方便PCB走线,可以通过AFIO重映射切换到备用引脚。USART1的重映射选项:

使能重映射:

__HAL_RCC_AFIO_CLK_ENABLE(); // 使能AFIO时钟

AFIO->MAPR |= AFIO_MAPR_USART1_REMAP; // 开启USART1重映射

换引脚后,外设功能不变,代码只需加这两行。哪些外设支持重映射?

  • USART1:TX/RX可映射到PB6/PB7
  • SPI1:可映射到PB3/PB4/PB5
  • I2C1:可映射到PB8/PB9
  • TIM2、TIM3:多个通道可重映射
  • CAN:可重映射到PB8/PB9

查数据手册"Alternate function mapping"表重映射的应用场景

  • PCB布线优化:让信号走最短路径,减少过孔和交叉
  • 引脚冲突解决:两个外设争同一引脚,重映射其中一个
  • 减少层数:单面板或二层板布线更顺畅
  • 兼容多种封装:同一程序适配不同引脚分配的板子

注意事项

  • 使能重映射前必须打开AFIO时钟(RCC_APB2ENR的AFIOEN位)
  • 重映射后原默认引脚上的外设功能失效,但GPIO功能仍可用
  • 不是所有外设都支持重映射,部分外设仅部分重映射
  • 100/144引脚封装的重映射选项多于64/48引脚封装(受引脚数限制)

这个故事的启示, 重映射让外设"搬家",不是硬件灵活性过剩,是芯片设计者留给PCB工程师的"后悔药"。软件改一行配置,硬件省一次打板。写在最后, 下次画PCB发现引脚位置不对,先查数据手册看能不能重映射。改一行代码,救一版PCB。


(本文灵感源于于振南《新概念ARM32单片机》教程第4.3节"USART硬件通信与引脚复用"和第4.4节"引脚复用与重映射(Remap)机制"。)

觉得有用?点赞、转发,让更多人看懂"AFIO重映射"的硬件布局智慧。

相关推荐
LCG元6 小时前
【实战】STM32 从零实现 Modbus RTU 从站:寄存器映射、CRC 校验与串口中断解析
stm32·单片机·嵌入式硬件
尼喃6 小时前
PW1555平芯微代理商,DFN3X3-10封装耐受30V浪涌非持续工作
嵌入式硬件
云泽8087 小时前
深入浅出 STM32(十九):从寄存器原理到 volatile 避坑实战
stm32·单片机·嵌入式硬件
恒锐丰小瑞7 小时前
率能SS6623E 20V/4.3A/单通道直流电机驱动IC,低导通电阻(110mΩ)与多重保护,用于电子锁/玩具/机器人
单片机·嵌入式硬件·机器人
wuyk5558 小时前
《WiFi 嵌入式物联网开发全套实战》| 第01章 WiFi整体架构详解:BSS/ESS/AP/STA模式彻底区分
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·51单片机
wuyk5558 小时前
第六章:CAN 调试工具、抓包分析、全套故障排查 + CAN-FD 进阶拓展
开发语言·stm32·单片机
那年窗外下的雪.8 小时前
STM32嵌入式学习 01:GPIO 输出与 LED 闪烁
stm32·单片机·学习
恒锐丰科技韩生9 小时前
RB4762A|晶准 单节锂电池内置 MOS 保护芯片 DFN2×3‑6
嵌入式硬件·硬件工程
雨田言炎10 小时前
STM32专题之内部SRAM
stm32·单片机·嵌入式硬件
gfdr510 小时前
把吃灰的电视盒子,改成一台不花月租的监控
python·嵌入式硬件·电视盒子