登录/注册

STM32F107 PART REMAP

STM32F107 PART REMAP

更多

好的,STM32F107 的 引脚重映射 (Pin Remap) 功能是指将某些片上外设(如 USART、CAN、定时器、SPI 等)的默认信号引脚,通过配置寄存器,重新映射到芯片的其他备用引脚上。

为什么需要重映射?

  1. PCB 布线优化: 当默认引脚的位置在 PCB 上布线困难、容易产生交叉或需要绕远时,重映射可以将信号切换到更合适的位置,简化布线,提高信号完整性。
  2. 引脚冲突解决: 当多个外设的默认引脚发生冲突(比如两个 USART 的 TX 都想用同一个引脚)时,重映射可以将其中一个外设的信号移到其他空闲引脚上。
  3. 功能复用: 充分利用芯片有限的引脚资源,让同一个物理引脚在不同时间或不同配置下承载不同外设的信号。
  4. 兼容性设计: 为了兼容旧版设计或特定接口位置要求。

STM32F107 重映射的关键点:

  1. AFIO 时钟: 使用重映射功能必须先开启 AFIO (Alternate Function I/O) 的时钟。这是最常见的遗漏点!
    • 代码示例 (标准外设库): RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
    • 代码示例 (HAL/LL): 通常配置 GPIO 复用功能时会自动处理 AFIO 时钟,但明确开启更安全。
  2. 重映射寄存器: 主要涉及 AFIO_MAPR (重映射和调试 I/O 配置寄存器)。通过设置该寄存器中特定的位或位域来控制不同外设的重映射选项。
  3. 外设类型与选项:
    • 部分重映射 (Partial Remap): 只改变外设的部分信号引脚。
    • 完全重映射 (Full Remap): 改变外设的所有信号引脚。
    • 无重映射 (No Remap): 使用默认引脚。
  4. GPIO 配置: 重映射后,必须将目标引脚配置为复用功能模式 (GPIO_Mode_AF_PPGPIO_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 使用。配置错误会导致无法连接调试器!

重要提示:

  1. 查阅数据手册: 上表是通用示例务必查阅你所使用的具体 STM32F107 型号的官方数据手册 (Datasheet)参考手册 (Reference Manual) 中的 "Alternate function I/O and debug configuration (AFIO)" 章节。不同子型号或封装可能略有不同的重映射选项或引脚可用性。引脚名称(如 PA9, PB6 等)请以手册中对应封装引脚图为准。
  2. 调试端口重映射 (SWJ_CFG): 这是重映射中最需要谨慎操作的部分。错误的配置(如禁用了 SW-DP)会导致无法通过 SWD/JTAG 连接调试器,通常需要按住复位键进入下载模式或使用串口 ISP 方式才能恢复。除非你非常清楚释放的引脚用途且不需要调试,否则建议保留 0b010 (复位值,完整 SWJ) 或 0b001 (仅 SW-DP,释放 JTAG 引脚作 GPIO)。
  3. 外设时钟: 在配置重映射和 GPIO 之前,确保已经开启了目标外设的时钟AFIO 的时钟 (RCC_APB2Periph_AFIO)。
  4. GPIO 配置顺序: 通常建议先配置重映射寄存器 (AFIO_MAPR),然后再配置 GPIO 的复用功能模式。确保目标引脚没有被其他功能占用。
  5. 复用功能选择: 对于某些引脚,可能有多个复用功能。重映射选择的是外设信号到哪个引脚,而 GPIO 配置中的 GPIO_InitStructure.GPIO_PinAF (HAL/LL) 或复用功能选择器 (在较新的STM32中) 则指定该引脚选择哪个具体的复用功能信号。在 STM32F1 系列中,重映射寄存器 AFIO_MAPR 直接控制了信号的路由,GPIO 只需配置为复用模式即可。

配置步骤总结 (以标准外设库为例,配置 USART1 重映射到 PB6/PB7):

  1. 使能时钟:
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1 | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
  2. 配置重映射:
    GPIO_PinRemapConfig(GPIO_Remap_USART1, ENABLE); // 这个函数内部操作 AFIO_MAPR 的 USART1_REMAP 位
  3. 配置 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);
  4. 配置 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

2024-05-14 08:05:43

STM32F107中断死循环的原因?

STM32F107,中断死循环

2024-05-11 06:31:18

怎样去设计一种基于STM32F107的数据采集器呢

基于STM32F107设计的数据采集器有哪些功能呢?怎样去设计一种基于STM32F107的数据采集器呢?

2021-11-09 08:06:51

AN3226_基于STM32F107以太网应用升级应用手册

AN3226_基于STM32F107以太网应用升级应用手册

资料下载 佚名 2022-11-24 08:31:00

AN3411_基于stm32F107的IEEE1588高精度时间协议演示

AN3411_基于stm32F107的IEEE1588高精度时间协议演示

资料下载 佚名 2022-11-21 08:11:30

智嵌STM32F107网络互联开发板V2.2原理图

智嵌 STM32F107网络互联开发板V2.2原理图免费下载。

资料下载 1579 2022-03-28 15:37:38

STM32F107单片机开发板的模板文件免费下载

本文档的主要内容详细介绍的是STM32F107单片机开发板的模板文件免费下载。

资料下载 佚名 2020-04-23 17:14:13

STM32F107官方开发板原理图及PCB资料免费下载

本文档的主要内容详细介绍的是STM32F107官方开发板原理图及PCB资料免费下载。

资料下载 ah此生不换 2019-07-22 08:00:00

stm32f107中断事件有哪些呢?

什么是中断?stm32f107中断事件有哪些呢?

2021-11-01 07:42:36

怎样将STM32F103工程移植成STM32F107工程呢

STM32F107与STM32F103有何区别?怎样将STM32F103工程移植成ST

2021-10-27 08:07:01

STM32F107开发板板载资源包括哪些

STM32F107开发板是什么?STM32F107开发板板载资源包括哪些?

2021-10-27 06:01:23

STM32F103和STM32F107的主要区别有哪些

STM32F103和STM32F107的晶振有何区别?STM32F103和STM32F

2021-10-15 07:58:18

STM32F107移植LWIP 精选资料分享

STM32F107上移植LWIP2.0.3 因为最近需要在STM32F107上实现TCP/IP协议栈,所以网上查了一下,准备使用LWIP,虽然大多数用的是1.4.1版本但是官方说2系大版本修复了

2021-08-05 07:33:39

STM32F107通过LWIP实现MQTT发布和订阅框架 精选资料分享

STM32F107通过LWIP实现MQTT发布和订阅框架原料创建STM32F107的BasecodeMQTT源码获取添加MQTT源码到工程修改mqtt接口文件(transport.c/h)建立

2021-08-05 06:17:30

请问STM32F107如何访问HTTP?

STM32F107如何访问HTTP,比如地址为http://192.168.1,单片机程序里应如何写

2019-10-22 03:59:28
7天热门专题 换一换
相关标签