STM32F107 PART REMAP
STM32F107 PART REMAP
好的,STM32F107 的 引脚重映射 (Pin Remap) 功能是指将某些片上外设(如 USART、CAN、定时器、SPI 等)的默认信号引脚,通过配置寄存器,重新映射到芯片的其他备用引脚上。
为什么需要重映射?
- PCB 布线优化: 当默认引脚的位置在 PCB 上布线困难、容易产生交叉或需要绕远时,重映射可以将信号切换到更合适的位置,简化布线,提高信号完整性。
- 引脚冲突解决: 当多个外设的默认引脚发生冲突(比如两个 USART 的 TX 都想用同一个引脚)时,重映射可以将其中一个外设的信号移到其他空闲引脚上。
- 功能复用: 充分利用芯片有限的引脚资源,让同一个物理引脚在不同时间或不同配置下承载不同外设的信号。
- 兼容性设计: 为了兼容旧版设计或特定接口位置要求。
STM32F107 重映射的关键点:
- AFIO 时钟: 使用重映射功能必须先开启
AFIO(Alternate Function I/O) 的时钟。这是最常见的遗漏点!- 代码示例 (标准外设库):
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); - 代码示例 (HAL/LL): 通常配置 GPIO 复用功能时会自动处理 AFIO 时钟,但明确开启更安全。
- 代码示例 (标准外设库):
- 重映射寄存器: 主要涉及
AFIO_MAPR(重映射和调试 I/O 配置寄存器)。通过设置该寄存器中特定的位或位域来控制不同外设的重映射选项。 - 外设类型与选项:
- 部分重映射 (Partial Remap): 只改变外设的部分信号引脚。
- 完全重映射 (Full Remap): 改变外设的所有信号引脚。
- 无重映射 (No Remap): 使用默认引脚。
- GPIO 配置: 重映射后,必须将目标引脚配置为复用功能模式 (
GPIO_Mode_AF_PP或GPIO_Mode_AF_OD),并设置正确的速度。不能再配置为简单的输入/输出模式。
STM32F107 常见外设的重映射选项 (部分示例):
| 外设 | 重映射选项 (AFIO_MAPR 位) | 默认引脚 (示例) | 部分重映射引脚 (示例) | 完全重映射引脚 (示例) | 备注 |
|---|---|---|---|---|---|
| USART1 | USART1_REMAP (Bit 2) |
TX: PA9, RX: PA10 | TX: PB6, RX: PB7 | - | 只有部分重映射选项 |
| USART2 | USART2_REMAP (Bit 3) |
TX: PA2, RX: PA3 | TX: PD5, RX: PD6 | - | 只有部分重映射选项 |
| USART3 | USART3_REMAP[1:0] (Bit 5:4) |
TX: PB10, RX: PB11 CK: PB12, CTS: PB13 |
Partial1: TX: PC10, RX: PC11 CK: PC12, CTS: PD2 |
Full: TX: PD8, RX: PD9 CK: PD10, CTS: PD11 |
00: No Remap 01: Partial Remap (PC10, PC11, PC12, PD2) 11: Full Remap (PD8, PD9, PD10, PD11) |
| TIM1 | TIM1_REMAP[1:0] (Bit 7:6) |
CH1: PA8, CH2: PA9 CH3: PA10, CH4: PA11 BKIN: PB12, CH1N: PB13 CH2N: PB14, CH3N: PB15 |
Partial: CH1: PA8, CH2: PA9 CH3: PA10, CH4: PA11 ETR: PE7, CH1N: PE8, CH2N: PE9, CH3N: PE10 |
Full: CH1: PE9, CH2: PE11 CH3: PE13, CH4: PE14 BKIN: PE15, CH1N: PE8, CH2N: PE10, CH3N: PE12 |
00: No Remap 01: Partial Remap (ETR, CH1N, CH2N, CH3N 到 PE) 11: Full Remap (所有通道到 PE) |
| TIM2 | TIM2_REMAP[1:0] (Bit 9:8) |
CH1/ETR: PA0, CH2: PA1 CH3: PA2, CH4: PA3 |
Partial1: CH1/ETR: PA15, CH2: PB3 CH3: PA2, CH4: PA3 |
Full: CH1/ETR: PA15, CH2: PB3 CH3: PB10, CH4: PB11 |
00: No Remap 01: Partial Remap1 (CH1/ETR->PA15, CH2->PB3) 10: Partial Remap2 (CH1/ETR->PA0, CH2->PA1, CH3->PB10, CH4->PB11) 注意手册差异 11: Full Remap (CH1/ETR->PA15, CH2->PB3, CH3->PB10, CH4->PB11) 务必查阅数据手册确认! |
| TIM3 | TIM3_REMAP[1:0] (Bit 11:10) |
CH1: PA6, CH2: PA7 CH3: PB0, CH4: PB1 |
Partial: CH1: PB4, CH2: PB5 CH3: PB0, CH4: PB1 |
Full: CH1: PC6, CH2: PC7 CH3: PC8, CH4: PC9 |
00: No Remap 01: Partial Remap (CH1->PB4, CH2->PB5) 11: Full Remap (所有通道到 PC) |
| TIM4 | TIM4_REMAP (Bit 12) |
CH1: PB6, CH2: PB7 CH3: PB8, CH4: PB9 |
CH1: PD12, CH2: PD13 CH3: PD14, CH4: PD15 |
- | 0: No Remap 1: Remap (所有通道到 PD) |
| CAN1 | CAN_REMAP[1:0] (Bit 14:13) |
RX: PD0, TX: PD1 | RX: PB8, TX: PB9 (重映射到 PB) RX: PA11, TX: PA12 (重映射到 PA) |
- | 00: No Remap (PD0/PD1) 01: Reserved 10: Remap to PB8/PB9 11: Remap to PA11/PA12 |
| SPI1 | SPI1_REMAP (Bit 0) |
NSS: PA4, SCK: PA5 MISO: PA6, MOSI: PA7 |
NSS: PA15, SCK: PB3 MISO: PB4, MOSI: PB5 |
- | 0: No Remap 1: Remap (所有引脚到 PB/PA15) |
| I2C1 | I2C1_REMAP (Bit 1) |
SCL: PB6, SDA: PB7 | SCL: PB8, SDA: PB9 | - | 0: No Remap 1: Remap (SCL->PB8, SDA->PB9) |
| ADC2_ETRGREG | ADC2_ETRGREG_REMAP (Bit 20) |
外部触发注入: EXTI15 | 外部触发注入: TIM8_CH4 | - | 控制 ADC2 外部触发源选择 |
| ADC2_ETRGINJ | ADC2_ETRGINJ_REMAP (Bit 19) |
外部触发规则: EXTI11 | 外部触发规则: TIM8_TRGO | - | 控制 ADC2 外部触发源选择 |
| SWJ_CFG[2:0] (Bits 26:24) | - | 完整 SWJ (JTAG-DP + SW-DP) 复位状态:PA13(JTMS/SWDIO), PA14(JTCK/SWCLK), PA15(JTDI), PB3(JTDO/TRACESWO), PB4(NJTRST) |
多种组合: 如仅 SW-DP (禁用 JTAG),释放 PA15, PB3, PB4 作 GPIO 或禁用所有调试,释放所有引脚 |
- | 调试端口重映射,非常重要!影响调试和 GPIO 使用。配置错误会导致无法连接调试器! |
重要提示:
- 查阅数据手册: 上表是通用示例,务必查阅你所使用的具体 STM32F107 型号的官方数据手册 (Datasheet) 和参考手册 (Reference Manual) 中的 "Alternate function I/O and debug configuration (AFIO)" 章节。不同子型号或封装可能略有不同的重映射选项或引脚可用性。引脚名称(如 PA9, PB6 等)请以手册中对应封装引脚图为准。
- 调试端口重映射 (SWJ_CFG): 这是重映射中最需要谨慎操作的部分。错误的配置(如禁用了 SW-DP)会导致无法通过 SWD/JTAG 连接调试器,通常需要按住复位键进入下载模式或使用串口 ISP 方式才能恢复。除非你非常清楚释放的引脚用途且不需要调试,否则建议保留
0b010(复位值,完整 SWJ) 或0b001(仅 SW-DP,释放 JTAG 引脚作 GPIO)。 - 外设时钟: 在配置重映射和 GPIO 之前,确保已经开启了目标外设的时钟和 AFIO 的时钟 (
RCC_APB2Periph_AFIO)。 - GPIO 配置顺序: 通常建议先配置重映射寄存器 (
AFIO_MAPR),然后再配置 GPIO 的复用功能模式。确保目标引脚没有被其他功能占用。 - 复用功能选择: 对于某些引脚,可能有多个复用功能。重映射选择的是外设信号到哪个引脚,而 GPIO 配置中的
GPIO_InitStructure.GPIO_PinAF(HAL/LL) 或复用功能选择器 (在较新的STM32中) 则指定该引脚选择哪个具体的复用功能信号。在 STM32F1 系列中,重映射寄存器AFIO_MAPR直接控制了信号的路由,GPIO 只需配置为复用模式即可。
配置步骤总结 (以标准外设库为例,配置 USART1 重映射到 PB6/PB7):
- 使能时钟:
RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE); - 配置重映射:
GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); // 这个函数内部操作 AFIO_MAPR 的 USART1_REMAP 位 - 配置 GPIO (PB6: TX, PB7: RX):
GPIO_InitTypeDef GPIO_InitStructure; // 配置 TX (PB6) 为复用推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_InitStructure); // 配置 RX (PB7) 为浮空输入 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOB, &GPIO_InitStructure); - 配置 USART1 参数如波特率等):
USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = 115200; ... // 其他参数 USART_Init(USART1, &USART_InitStructure); USART_Cmd(USART1, ENABLE);
总结: STM32F107 的引脚重映射是一个强大的功能,能极大提高 PCB 设计灵活性和解决引脚冲突。使用时核心是开启 AFIO 时钟、查阅数据手册确认具体选项和引脚、谨慎操作调试端口重映射、正确配置目标 GPIO 为复用模式。
请问STM32F207的MCO是否比STM32F107差?
我用STM32F107做一个带以太网通讯功能的产品,超频到100MHz左右,一切工作正常。于是换成STM32F207,我拿了两个STM32F20
AN3411_基于stm32F107的IEEE1588高精度时间协议演示
AN3411_基于stm32F107的IEEE1588高精度时间协议演示
资料下载
佚名
2022-11-21 08:11:30
STM32F107官方开发板原理图及PCB资料免费下载
本文档的主要内容详细介绍的是STM32F107官方开发板原理图及PCB资料免费下载。
资料下载
ah此生不换
2019-07-22 08:00:00
STM32F107移植LWIP 精选资料分享
STM32F107上移植LWIP2.0.3 因为最近需要在STM32F107上实现TCP/IP协议栈,所以网上查了一下,准备使用LWIP,虽然大多数用的是1.4.1版本但是官方说2系大版本修复了
STM32F107通过LWIP实现MQTT发布和订阅框架 精选资料分享
STM32F107通过LWIP实现MQTT发布和订阅框架原料创建STM32F107的BasecodeMQTT源码获取添加MQTT源码到工程修改mqtt接口文件(transport.c/h)建立
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- EDA是什么?有什么作用?
- dtmb信号覆盖城市查询
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 什么是场效应管?它的作用是什么?
- 如何进行编码器的正确接线?接线方法介绍
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- amoled屏幕和oled区别
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 通讯隔离作用
- 苹果笔记本macbookpro18款与19款区别
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机