用PB13作为互补输出引脚没反应,用PA7却正常,为什么?

文章导读
结论:PB13作为TIM1的CH1N互补输出需要开启重映射GPIO_PartialRemap_TIM1,否则默认使用PA7。必须取消注释GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE);才能将CH1N从PA7切换到PB13。
📋 目录
  1. 解决方案代码
  2. 论坛原帖1
  3. 论坛原帖2
  4. 论坛原帖3
  5. 论坛原帖4
  6. 论坛原帖5
  7. 论坛原帖6
A A

结论:PB13作为TIM1的CH1N互补输出需要开启重映射GPIO_PartialRemap_TIM1,否则默认使用PA7。必须取消注释GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE);才能将CH1N从PA7切换到PB13。

解决方案代码

#include "stm32f10x.h" // Device header void PWM_Init(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE); GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE); // 必须开启这一行,重映射到PB13 //GPIO初始化 GPIO_InitTypeDef GPIO_Initstructure; GPIO_Initstructure.GPIO_Pin = GPIO_Pin_8; GPIO_Initstructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_Initstructure); GPIO_Initstructure.GPIO_Pin = GPIO_Pin_13; GPIO_Initstructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Initstructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOB, &GPIO_Initstructure); // PB13现在才能用 }

论坛原帖1

用PB13作为互补输出引脚没反应,用PA7却正常,为什么?楼主你少开启了重映射啊!TIM1的CH1N默认是PA7,要用PB13必须GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE); 另外记得GPIOB13也要初始化为复用推挽输出。

用PB13作为互补输出引脚没反应,用PA7却正常,为什么?

论坛原帖2

我也是这个问题,代码里把重映射那行注释掉了,结果PB13没信号,用示波器测PA7却有。开启后完美解决。STM32默认引脚映射要记牢,不然白搞半天。

论坛原帖3

PB13是TIM1_CH1N的重映射引脚,参考手册第109页,Partial remap TIM1才会用到PB13、PB14、PB15这些。你的代码里// GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE); 就是罪魁祸首,打开它。

用PB13作为互补输出引脚没反应,用PA7却正常,为什么?

论坛原帖4

同样问题,PA7正常PB13无声,原因是忘了AFIO时钟和重映射。完整步骤:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_PinRemapConfig(GPIO_PartialRemap_TIM1, ENABLE); 然后GPIOB13设为AF_PP。

论坛原帖5

调试一天终于找到,TIM1互补输出默认PA7~PA11,重映射后才到PB13~PB15。代码直接抄标准库例子就行,别自己瞎搞引脚。

用PB13作为互补输出引脚没反应,用PA7却正常,为什么?

论坛原帖6

问同样问题的人不少,都因为忽略了重映射。手册Table9清楚写着,默认CH1N=PA7,PartialRemap1=PB13。开启后记得检查GPIO模式是GPIO_Mode_AF_PP。

FAQ
Q: 为什么PA7能直接用不用重映射?
A: PA7是TIM1 CH1N的默认引脚,不需要重映射就能直接输出互补信号。
Q: 开启重映射后PA7还有信号吗?
A: 没有,重映射会把功能切换到PB13,PA7就失效了。
Q: PB13初始化模式是什么?
A: GPIO_Mode_AF_PP,推挽复用输出,速度50MHz。
Q: 还要开启什么时钟?
A: RCC_APB2Periph_AFIO必须开启,重映射功能依赖它。