重映射功能
外设引脚重映射的概念,即一个外设的引脚除了具有默认的端口外,还可以通过设置重映射寄存器的方式,把这个外设的引脚映射到其它的端口。
简单的讲就是把管脚的外设功能映射到另一个管脚,但不是可以随便映射的。
部分重映射 & 完全重映射
- 部分重映射: 功能外设的部分引脚重新映射,还有一部分引脚是原来的默认引脚。
- 完全重映射:功能外设的所有引脚都重新映射
- 我们以TIM2为例:
-
-
默认映射脚位为不需要重映射配置的默认脚位,直接初始化外设时钟即可。如若使用后面几种组合,需要进行配置,配置流程如下:
- 第一步:开启AFIO时钟:
-
第二步: 调用库函数进行重映射:
注意此步骤需要在第一步后再进行,同时注意此函数参数的选择,下面有三种参数选择,分别对应着上面几种映射组合,体现在手册里引脚描述如
- TIM2_CH2_1,TIM2_CH2_2,TIM2_CH2_3,那么后缀-1就代表着部分映射1,-2就代表着部分映射2,如此类推
-
-
手册上类似描述如下:
第三步:正常初始化外设时钟即可,并初始化对应通道对应引脚的GPIO时钟,和相应引脚配置。
注:重映射常见问题
一,怎么重映射不成功,打印相应的寄存器发现并未被成功赋值;
检查上述步骤一和二是否反了,需要先开启AFIO时钟才可以对相应位进行操作
-
二,将PA13,PA14脚复用为普通IO不成功/怎么将PA13,PA14脚复用为普通IO
检查是否开了AFIO时钟,对应操作如下:
三,晶振脚复用为普通IO不成功/怎么将晶振脚复用为普通IO
与三问题类似,
-
四, 将PA6-PA7复用为串口一的功能脚不成功
-
注意手册里的说明,PA6-PA7的组合为串口一的一个特殊组合,需要配合 AFIO_PCFR2 寄存器 bit26 USART1_RM1 使用,所以需要两次调用remap函数,操作如下:
-