STM32——GPIO重映射(GPIO_PinRemapConfig)

STM32——GPIO重映射(GPIO_PinRemapConfig)

1.重映射拿来干嘛的?

我们来看看官方文档对重映射是如何解释的。
在这里插入图片描述
嗷,相信看了文档过后,会有一个大致的了解了吧。举个例子就明白了,假如我当前USART1用到的引脚是PA9(USART1_TX),PA10(USART1_RX),但是这个时候刚好PA9和PA10这两个引脚已经用于其他用途了,那么我们就不能用这两个引脚了,那么问题来了,那我们是不是就不能使用USART1了呢?NO,这个时候重映射就发挥了他的作用了,我们可以通过将USART1的功能引脚重新映射到PB6(USART1_TX),PB7(USART1_RX)。经过这么一解释,相信都能明白了吧。

2.如何查看重映射的功能引脚

下面我们以STM32F103C8为例,可以在STM32F103C8数据手册里面3 Pin descriptions这一章节里面看到各个引脚的功能,如下图所示,我们可以查询到芯片具有哪些引脚,以及默认是什么功能,复用功能有哪些。STM32——GPIO重映射(GPIO_PinRemapConfig)_第1张图片
如果想要更加直观的看到一些功能的默认引脚以及复用引脚,可以在STM32参考手册里面**8.3 复用功能I/O和调试配置(AFIO)**这一章查到,如下图所示,手册列出了各种功能的默认引脚和复用引脚,更加直观。STM32——GPIO重映射(GPIO_PinRemapConfig)_第2张图片

3.部分映射和完全映射

只有少部分功能具有部分映射和完全映射,下面以USART3为例,可以从下表中看到USART3各个默认引脚,部分重映射以及完全重映射所对应的引脚。可以看出,部分重映射中USART3_CTS和USART3_RTS所对应的引脚还是默认的,只是把USART3_RX、USART3_TX、USART3_CK重新映射到了其他引脚上面,完全重映射就是把所有的引脚都重新映射到了其他引脚上面。
STM32——GPIO重映射(GPIO_PinRemapConfig)_第3张图片

4.注意注意注意

注意注意注意,重要的事情说三遍,重映射和IO口的复用一样,需要开启AFIO的时钟。

5.经验之谈:为什么我的PB4引脚不能使用

这就是经验之谈啊,困扰了我一天多的问题,我在使用MPU6050模块的时候,其中一个信号引脚接的是PB4,然后始终读不出来数据。最后终于解决了,其实很简单的一个问题,主要还是基础知识掌握得不扎实的错。
经过了上面对重映射的学习,就很容易解释这个问题了。如下图,可以看到PB4、PB3等各个引脚默认是用于调试端口,所以肯定就不能用啦,这个时候我们只需要对引脚进行重映射,加上下面这一句代码就ok了。GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

什么,你以为这就OK了?还是太年轻,我们再上面的第4点,使用端口的重映射的时候,需要开启复用时钟AFIO, 所以,仅仅重映射了还不行,还需要开复用时钟啊,千万不要忘记再加上这一句代码RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); /* 打开GPIO时钟 */
STM32——GPIO重映射(GPIO_PinRemapConfig)_第4张图片

你可能感兴趣的:(STM32,stm32,单片机)