1.GPIO的重映射属于AFIO,不同类型不同引脚数单片机情况不一样,比如下图:

stm32之remap-LMLPHP

2.AFIO 下面还分default/Remap,如果用到了remap就得使用:

GPIO_PinRemapConfig ( uint32_t  GPIO_Remap, FunctionalState  NewState )

  比如:GPIO_PinRemapConfig(GPIO_Remap_USART1,ENABLE);

3.如果用到了AFIO,还得开AFIO时钟:

  RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); 

4.stm32f103cbt6,12/13脚 AFIO的default分别为usart2 tx/rx,但没有用到remap,所以不用GPIO_PinRemapConfig 函数

5. 如下配置

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);

//RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;     // uart2,PA2 TX / PA3 RX
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(GPIOA, &GPIO_InitStructure);
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_Init(GPIOA, &GPIO_InitStructure);

05-11 16:07