STM32工作笔记0050---端口复用和重映射

技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152

端口复用重要,端口重映射作为了解,有些复杂.

首先看什么是内置外设:

内置外设是类似于 比如串口,ADC模块,DAC模块等是芯片内置的外设.

咱们知道芯片中首先由个内核,然后右边是各种外设.

然后再说什么是复用,复用就是比如这里PA9,PA10他可以做为通用的IO口可以用,

但同时也可以作为串口来使用,这个就是复用.

一个串口需要5个引脚.

复用的好处,比如LCT6的芯片,他只有64个针脚,他有51个IO口,那么如果不服用的话,

又有ADC又有串口,5个串口,每个串口有5个引脚.这样的话,64个引脚是不够用的.

那么每个引脚的复用情况是什么样的呢?

看文档

可以看到这里,

PA9,PA10可以作为串口,USART1_TX的发送和USART1_RX的接收引脚的.

那么串口2有什么可以复用的呢,可以查一下USART2

那么,一个IO口哪些时候是作为复用功能,什么时候是作为IO口使用,这个复用功能是怎么配置的.

接下来说一下这个:

这里可以看到,要使用端口的复用功能,需要配置一下,

1.首先使能对应的GPIO端口时钟,这个只要是用GPIO口就要使能这个APB2时钟

2.然后,这里比如要使用的是串口,那么就要去使能这个复用的外设串口的时钟,使能的时候,可以

   再.h文件中搜索,比如这里搜索USART1也就是串口1.可以找到前面如果有APB2的话,那么就是需要用

   APB2这个时钟使能.

3.再去用GPIO_INIT这个函数去配置端口,

   主要是配置这个端口是什么模式,比如是串口啊,还是定时器啊,还是作为普通IO口啊.

这个配置需要参考文档

这里可以看到对于USART串口,如果要用全双工模式,需要配置对应的GPIO口为推挽复用输出...什么的..

按照这个配置就可以.

然后配置一个看看

可以看到经过上面的配置,那么这个PA9,PA10就不是普通的IO口了,他就变成了串口的功能.

然后再看看端口重映射.

映射的意思是,为了进一步提高对引脚的利用.

这里比如PA2这个原来是串口2 USART2那么通过配置他可以映射到PD上的某个引脚.

也就是把某个引脚,映射到另一个引脚上.

咱们来看一下映射的功能

比如这里用PA2,PA3

这里可以看到PA2,PA3是用作USART2_TX 

USART2_RX发送,接收引脚的.

然后再看最后那一列,最后那一列就是指定了映射端口

最后一列是remap是映射的意思

比如这里,咱们可以看到这个USART2_TX和USART2_RX

这个还可以重映射到PD5,PD6上面去,这样的话,可以方便我们去布线.

接下来把串口2,USART2_TX和USART2_RX,也就是PA2,PA3映射到

PD5,PD6上面去.

上面就是说,上面提到的复用怎么看文档.

再看一下什么是部分重映射,什么是完全重映射

这个比较简单,

比如USART3_TX,USART3_RX,USART3_CK,USART3_CTS,USART3_RTS,

也就是这里比如串口3,他是占用5个引脚的,那么没有重映射的时候,他占用,PB10,PB11,PB12,PB13,PB14这5个引脚,

那么如果我配置了部分重映射,比如我把

PB10配置到了PC10上面,把PB11配置到了PC11上面,把PB12配置到了PC12上面.

然后,PB13,PB14还是用原来的,也就是只有部分做了重映射.

然后如果

PB10映射到PD8

PB11映射到PD9

....

所有的串口3对应的针脚都映射了,这个就是完全重映射.

然后看一下一个端口重映射配置的例子:

这里以串口1为例,USART1

比如这里的PA9,PA10,这里原来PA9,PA10是USART1_TX,USART1_RX

这里咱们把它重映射到PB6,PB7.

这个配置重映射的过程是:

首先

1.使能GPIO时钟,那么这里因为要映射到PB5,PB6上就要使能,GPIOB的时钟.

2.然后使能功能外设时钟,也就是使能串口1,USART1的时钟,然后

3.使能这个功能辅助时钟AFIO,一会看这个AFIO什么时候用这个时钟

4.然后使用函数来开启重映射.

上面说了什么时候需要操作AFIO使能.这个时钟.

然后看看代码

可以看到有对应的GPIO_pinRemapConfig()这个函数,这里有两个参数.

通过有效性的检查,这个部分,咱们去看看定义.

可以看到这里有很多的端口复用的规则.

上面定义了这些端口复用的规则,这里可以看到比如咱们说

USART3串口,他可以部分映射,也可以完全重映射.可以看到这里的

GPIO_PartialRemap_USART3这个就是部分重映射.

GPIO_FullRemap_USART3这个就是完全重映射.

这里需要配置的.

猜你喜欢

转载自blog.csdn.net/lidew521/article/details/108183876