复用与重映射

端⼝复⽤的定义
        STM32有许多的内置外设(如串⼝、ADC、DCA等等),这些外设的外部引脚都是和GPIO复⽤的。也就是说,⼀个GPIO如果可以
复⽤为内置外设的功能引脚,那么当这个GPIO作为内置外设使⽤的时候,就叫复⽤。详细的可以参考《STM32F103ZET6数据⼿
册》p30的内容,表格的倒数第⼆栏就表⽰端⼝复⽤功能。
        ⽐如说,STM32的串⼝1的引脚对应的I/O位PA9、PA10。⽽PA9、PA10默认的功能都是GPIO,所以说当PA9、PA10引脚作为
串⼝1使⽤的时候就是端⼝复⽤。

默认复⽤功能前必须对端⼝位配置寄存器编程。
        1)对于复⽤的输⼊功能,端⼝可以配置成:
                ①:输⼊模式(浮空、上拉或下拉)(模拟输⼊不⾛复⽤这条线前⾯内部结构篇幅中提到过)
                ②:复⽤功能输出模式:输⼊驱动器被配置成浮空输⼊模式
        2)对于复⽤输出功能,端⼝必须配置成复⽤功能输出模式(推挽或开漏)。
        3)对于双向复⽤功能,端⼝位必须配置复⽤功能输出模式(推挽或开漏)。这时,输⼊驱动器被配置成浮空输⼊模式。
        如果把⼀端⼝配置成复⽤输出功能,将使引脚和输出寄存器断开,并和⽚上外设的输出信号连接。如果软件把⼀个 GPIO 脚配置成复⽤输出功能,但是外设没有被激活,它的输出将不确定。

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参考手册里面**8.3 复用功能I/O和调试配置(AFIO)**这一章查到,如下图所示,手册列出了各种功能的默认引脚和复用引脚,更加直观。在这里插入图片描述

3.部分映射和完全映射

首先需要知道的是USART3_REMAP[1:0]是在复用重映射和调试 复用重映射和调试I/O 配置寄存器(AFIO_MAPR)的两位

只有少部分功能具有部分映射和完全映射,下面以USART3为例,可以从下表中看到USART3各个默认引脚,部分重映射以及完全重映射所对应的引脚。可以看出,没有重映像时为初始引脚,部分重映射中USART3_CTS和USART3_RTS所对应的引脚还是默认(和没有重映像时一致)的,只是把USART3_RX、USART3_TX、USART3_CK重新映射到了其他引脚上面,完全重映射就是把所有的引脚都重新映射到了其他引脚上面。
在这里插入图片描述

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)_FILWY_M的博客-CSDN博客

总结一下:

简单的说 STM32的 io 有3个功能一个是默认的 一个是复用 一个是重映射功能(这个其实也属于复用)

如果配置成复用 则将使用第2个功能 如果配置成复用 同时 相应的重映射配置了 则将使用第3个功能

根据该系列芯片的用户手册的GPIO口章节的复用章节得到如进行IO口引脚功能复用功能修改,需要修改AFIO_RMP_CFG寄存器中关于USART1的重映像为进行功能选择

查找手册,看是否还有其余IO口可以有USART1的功能,查看手册发现PB6和PB7的复用功能(第二功能)可以作为USART1使用。

  • 4
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值