打印
[STM32F1]

关于GPIO引脚复用的疑问

[复制链接]
3426|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wjiwji_2205|  楼主 | 2016-9-27 11:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
初学STM32F103系列单片机,看了参考手册中关于GPIO的部分内容,心中有一个疑问不得其解,希望懂的朋友能帮忙解释一下!我的疑问是:GPIO引脚的外设时钟一旦启用,GPIO引脚就连接到相应的外设引脚上,由于好多引脚是复用的,即可以与多个外设连接,比如PA1引脚可以作为USART2/ADC/TIM5/TIM2外设引脚使用,根据手册中关于使用的描述,在同一时刻只能启用其中一个外设,也就是说在使用USART2时不能同时使用TIM2(如果不进行重映射的话),那么如果同时要使用USART2和TIM2(在PA0~PA3四个引脚上重合)时,该如何?通过搜索,其中有一篇**讲到,有两种解决办法,一、将USART2全部重映射到PD口上,代价是FSMC不能使用;二、TIM2重映射到其他引脚,代价是其他引脚上的其他外设不能使用。我的疑问是,如果必须这样的话,那么如果我启用ADC时钟,由于ADC有16个通道,对应16个引脚,如上面的PA1,那么意味着所有这16引脚上的其他外设(受影响外设有SPI1、USART2、DAC1、DAC2、TIM2、TIM3、TIM5、TIM8,尤其是DAC由于和ADC一样无法重映射,就没有办法一起使用了)均不能使用或选择所谓的分时复用,如此一来,如果不进行重映射的话,那么片上的外设和引脚资源的使用将受到极大的限制,不知道,是我理解的不对,还是这个片子就是这个样子,所以有此一问,还请知道的帮忙解释一下。
另外还有一个小小的问题问下:如果某外设时钟启用,比方说上面的USART2,那么USART2相关的外设(TX,RX,CTS,RTS等)自动的与相应的GPIO引脚连接,这个是怎么实现的,GPIO引脚是被动连接的吗(似乎是的)?
沙发
长的帅怪我落| | 2016-9-27 11:49 | 只看该作者
老实说,这种疑问我也有,但是没深入 研究过,我认为不重映射,鱼和熊掌不可兼得吧

使用特权

评论回复
板凳
yichunshan| | 2016-9-27 12:34 | 只看该作者
开启AD时钟,只是AD功能的一个前提,并不意味着AD引脚就使能,更不意味着所有ADC引脚只能作为AD使用。还要对ADC寄存器配置、IO引脚配置,最终才能确定一个AD引脚输入

使用特权

评论回复
评论
xmshao 2016-9-27 15:42 回复TA
有道理 
地板
icecut| | 2016-9-27 14:33 | 只看该作者
你可以试试分时复用...改一下配置寄存器.

如果一个功能占用了.那就不能用其他功能了....你的两只眼睛也不能一只看东一只看西是吧?
如果必须,就换 io 多的封装

使用特权

评论回复
5
wjiwji_2205|  楼主 | 2016-9-27 15:25 | 只看该作者
我用的是STM32F103VET6,除了ADC和DAC外,其他的都还好安排,就是这两个要同时工作,不晓得怎么弄

使用特权

评论回复
6
xmshao| | 2016-9-27 15:45 | 只看该作者
开启外设 还得配置相应管脚的复用功能才算。

In output mode (MODE[1:0] > 00):
00: General purpose output push-pull
01: General purpose output Open-drain
10: Alternate function output Push-pull
11: Alternate function output Open-drain

使用特权

评论回复
7
wjiwji_2205|  楼主 | 2016-9-27 16:12 | 只看该作者
这个我知道,问题是不管配置引脚与否,一旦USART2启用,如果不对TIM2进行重映射的话,TIM2是不能同时使用的,当然了,如果仅作为普通GPIO,是没有问题的,只是不能用作其他外设引脚。
考虑一下,如果一个项目中同时用到ADC,DAC,USART1,USART2,TIM2,USB,SDIO,SPI,I2C外设,有些必须一直工作,不能分时复用的情况比如USART1,USART2,USB等,那么规划这些引脚资源都郁闷死了

使用特权

评论回复
8
wjiwji_2205|  楼主 | 2016-9-28 08:04 | 只看该作者
知道的朋友进来说一下嘛!

使用特权

评论回复
9
逍遥李| | 2016-9-28 09:04 | 只看该作者
wjiwji_2205 发表于 2016-9-27 16:12
这个我知道,问题是不管配置引脚与否,一旦USART2启用,如果不对TIM2进行重映射的话,TIM2是不能同时使用的 ...

这个应该只能选更多引脚封装了,芯片设计考虑的是通用性,所以复用会很多

使用特权

评论回复
10
xmshao| | 2016-9-28 15:12 | 只看该作者
疑问是,如果必须这样的话,那么如果我启用ADC时钟,由于ADC有16个通道,对应16个引脚,如上面的PA1,那么意味着所有这16引脚上的其他外设(受影响外设有SPI1、USART2、DAC1、DAC2、TIM2、TIM3、TIM5、TIM8,尤其是DAC由于和ADC一样无法重映射,就没有办法一起使用了)
===如果你只用到PA1做ADC,其它引脚完全可以该做什么做什么,跟ADC没矛盾的。

要不你使用STM32CubeMx图形化工具配置下吧,很直观的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

5

帖子

0

粉丝