打印
[STM32F1]

一个关于复用和映射里面比较奇怪和绕的问题,求教大神...

[复制链接]
1629|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
摩天轮1111|  楼主 | 2015-7-30 23:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       弱弱的问个问题啊,大神勿喷,如标题所示的这样。       就是比如USART3原来是PA1,PA2引脚的复用功能,你首先开了GPIOA和USART3的时钟,然后配置了GPIOA的这个1,2复用,然后配置下USART3的参数,使能USART3,这样PA1,2就变成USART3了,

       然后另外一个引脚,比如PB1,PB2,他是CAN1的复用功能引脚,也就是你开了GPIOB和CAN1的时钟,然后配置了GPIOB的这个1,2复用,然后配置下CAN1的一些参数,然后使能CAN1,这样PB1,2就变成了CAN1了,
       情况描述: 我现在的问题是这样的,如果恰好这个USART3还有重新映射的功能,它正好重新映射的话就是映射到PB1,PB2那么这种情况下,比如我给USART3重新映射了,也就是先开GPIOB和USART3还有AFIO的时钟,然后配置GPIOB1,2复用和配置GPIO引脚remap也就是AFIO,然后配置USART3的参数,使能USART3,这样PB1,2就变成了USART3了,
问题1:如果上面的情况中同时也开了GPIOA的时钟,那么配置GPIOB 1,2复用的时候,同时也配置了GPIOA 1,2的复用,然后后面的继续进行,和上面一样,也就是配置了USART3 的参数,使能USART3,那么这时候GPIOA 1,2 是什么功能呢,复用功能还是什么功能?
问题2 :如果上面的情况描述中,USART3映射到GPIOB1,2里面去了,就在上面的情况描述里面使能时钟的时候也使能了CAN1的时钟,然后配置了GPIOB1,2的复用了,remap了,然后使能USART3之后又使能CAN1,那么这个时候,PB1,2到底是USART3,还是CAN1呢?
求大神不吝赐教,十分感谢,或者问题1,2搂在一起的情况,就是又开了GPIOA时钟,又开了GPIOB时钟,又配置GPIOA复用,又配置GPIOB复用,然后还配置了GPIOB的remap,然后使能了USART3,又使能CAN1,那会是神马个情况啊?
沙发
wowow| | 2015-7-30 23:15 | 只看该作者
一个管脚最好只开一个外设的功能。少数特例可以。

使用特权

评论回复
板凳
amanda_s| | 2015-7-31 17:16 | 只看该作者
被你绕晕了。
一个引脚肯定只能用做一个外设的功能。哪个最后配置,就是哪个。

使用特权

评论回复
地板
摩天轮1111|  楼主 | 2015-7-31 21:26 | 只看该作者
amanda_s 发表于 2015-7-31 17:16
被你绕晕了。
一个引脚肯定只能用做一个外设的功能。哪个最后配置,就是哪个。
...

您好,谢谢您的回复,
     您 的意思是问题2中,那个先给USART,映射到PB1,2,之后,如果先使能了usart,然后再使能了can,那么结果就是pb1,2是can的作用,
     要是先使能了复用的can,然后再开的usart的使能,那就是pb2就是usart的功能?是以使能看还是以什么看?
     再另外问题1中一个外设可以用两个引脚吗?这个情况怎么理解?

使用特权

评论回复
5
mark0668| | 2015-8-1 01:10 | 只看该作者
我也有点凝问这个,同问了.引脚要打架咯.

使用特权

评论回复
6
皈依| | 2015-8-1 08:45 | 只看该作者
要不要这么虐心,如果引脚不够就换MCU
实在不行就DEINIT()
根据不同的情况初始化不同的功能
同时使用就别想了。。。

使用特权

评论回复
7
diweo| | 2015-8-1 12:01 | 只看该作者
干嘛非要把不同的外设映射到相同的引脚呢?

不要人为把事情搞得复杂化。

使用特权

评论回复
8
摩天轮1111|  楼主 | 2015-8-2 16:35 | 只看该作者
也许是大家的想法不一样吧,有bug或者有可能存在的情况,我是都好奇想知道他的具体情况的,为了是可以控制这样的使用或者不范这样的错误,

使用特权

评论回复
9
米尔豪斯| | 2015-8-2 20:47 | 只看该作者

一个管脚最好只开一个外设的功能

使用特权

评论回复
10
lihai00| | 2015-8-2 21:27 | 只看该作者
为啥对于映射相关的问题我都觉得蛮难得理解。。。。

使用特权

评论回复
11
lwsn| | 2015-8-2 21:33 | 只看该作者
引脚应该可以复用,但需要加外设电路配合

使用特权

评论回复
12
mumu3013| | 2015-8-3 12:15 | 只看该作者
引脚复用功能是有先后顺序的,看datasheet,同一个引脚的被多个复用,在前的功能被使用,
并且楼上都说了,这种同时复用的情况一般不会有,有的话也是你软件级做的不好,有bug

使用特权

评论回复
13
amanda_s| | 2015-8-3 17:35 | 只看该作者
摩天轮1111 发表于 2015-7-31 21:26
您好,谢谢您的回复,
     您 的意思是问题2中,那个先给USART,映射到PB1,2,之后,如果先使能了usart ...

首先我要为我的想当然道歉。
如果将两个外设的功能映射到同一个引脚,并不是我所说的后配置后起效。
看了数据手册里面,它是建议不要这么做的。
F1以后就单独有一个寄存器AFR来选择同一个引脚的第二功能的了,不会有这个问题。

另外,一个外设的同一个信号只能在一个引脚上,remap后以前的引脚就没有这个功能了。

使用特权

评论回复
14
摩天轮1111|  楼主 | 2015-8-4 22:31 | 只看该作者
amanda_s 发表于 2015-8-3 17:35
首先我要为我的想当然道歉。
如果将两个外设的功能映射到同一个引脚,并不是我所说的后配置后起效。
看了 ...

恩谢谢你

使用特权

评论回复
15
米尔豪斯| | 2015-8-5 09:45 | 只看该作者
引脚复用功能是有先后顺序的,需要软硬件辅助

使用特权

评论回复
16
lefeng| | 2015-8-5 10:09 | 只看该作者
一个外设的信号只能在一个引脚上,引脚复用是因为资源不够,一般不会

使用特权

评论回复
17
BBSTOM| | 2015-8-5 11:16 | 只看该作者
都是 一批 刚毕业的学生啊

使用特权

评论回复
18
冰河w| | 2015-8-5 11:59 | 只看该作者
引脚复用功能是有先后顺序的

使用特权

评论回复
19
s976228410| | 2015-8-6 09:32 | 只看该作者
暑假了 学生集体出动 哈哈

使用特权

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

本版积分规则

38

主题

224

帖子

15

粉丝