AFIO---重映射功能的使用以及常见问题
H417系列采用了完全不同的IO映射设计,分开讨论:
一,CH32FV2x_V3x,X03X,00X:
重映射功能
外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。
简单的讲就是把管脚的外设功能映射到另一个管脚,但不是可以随便映射的。
部分重映射 & 完全重映射
- 部分重映射: 功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。
- 完全重映射:功能外设的所有引脚都重新映射
- 我们以V203的TIM2为例:
-
![]()
-
默认映射脚位为不需要重映射配置的默认脚位,直接初始化外设时钟即可。如若使用后面几种组合,需要进行配置,配置流程如下:
- 第一步:开启AFIO时钟:
![]()
-
第二步: 调用库函数进行重映射:
![]()
注意此步骤需要在第一步后再进行,同时注意此函数参数的选择,下面有三种参数选择,分别对应着上面几种映射组合,体现在手册里引脚描述如
- TIM2_CH2_1,TIM2_CH2_2,TIM2_CH2_3,那么后缀-1就代表着部分映射1,-2就代表着部分映射2,如此类推
-
![]()
-
手册上类似描述如下:
![]()
第三步:正常初始化外设时钟即可,并初始化对应通道对应引脚的GPIO时钟,和相应引脚配置。
![]()
-
-
二,H417系列:
H417关于引脚映射采用了完全不同的设计理念,但总体原理类似,且更好理解一些:

其实通俗理解可以把H417的每个GPIO引脚内部想象成一个多路选择开关,复用相关寄存器呢就是控制这个开关的
控制器,
- 每个引脚对应4位:这4位可以表示16种选择(AF0到AF15),用来决定这个引脚到底连接到哪个内部外设(比如是连接USART1还是TIM2)。
- 信号共用:关键点在于,对于一个引脚,无论是作为外设的输入还是输出,都共用同一组AF选择信号。这意味着你只需要配置一次,芯片内部就会自动完成信号路径的连接。
具体外设功能对应引脚可见DS0数据手册,我们已TIM1的通道二为例,经查看手册发现

第一步:开启AFIO,与对应GPIO端口时钟

第二步:打开PE11与TIM1_CH2上的开关(通俗理解)

这样,就配置好了用PE11作为TIM1的通道二输出。
-
注:重映射常见问题
一,怎么重映射不成功,打印相应的寄存器发现并未被成功赋值;
检查上述步骤一和二是否反了,需要先开启AFIO时钟才可以对相应位进行操作
-
二,将PA13,PA14脚复用为普通IO不成功/怎么将PA13,PA14脚复用为普通IO
检查是否开了AFIO时钟,对应操作如下:
关闭SWD复用,并设置为浮空输入
-
![]()
三,晶振脚复用为普通IO不成功/怎么将晶振脚复用为普通IO
与三问题类似,
![]()
-
四, 将PA6-PA7复用为串口一的功能脚不成功
-
注意手册里的说明,PA6-PA7的组合为串口一的一个特殊组合,需要配合 AFIO_PCFR2 寄存器 bit26 USART1_RM1 使用,所以需要两次调用remap函数,操作如下:
- 需注意V208,V203RB后两组映射不存在!
-
![]()
五,CH32L103将串口三复用到PD0,PD1不成功
- 原因:多一个步骤,需要将晶振功能关掉映射成PD0,1才能进行串口的重映射。
-
![]()
-
![]()
-











浙公网安备 33010602011771号