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

[复制链接]
1953|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中一个外设可以用两个引脚吗?这个情况怎么理解?
mark0668 发表于 2015-8-1 01:10 | 显示全部楼层
我也有点凝问这个,同问了.引脚要打架咯.
皈依 发表于 2015-8-1 08:45 | 显示全部楼层
要不要这么虐心,如果引脚不够就换MCU
实在不行就DEINIT()
根据不同的情况初始化不同的功能
同时使用就别想了。。。
diweo 发表于 2015-8-1 12:01 | 显示全部楼层
干嘛非要把不同的外设映射到相同的引脚呢?

不要人为把事情搞得复杂化。
 楼主| 摩天轮1111 发表于 2015-8-2 16:35 | 显示全部楼层
也许是大家的想法不一样吧,有bug或者有可能存在的情况,我是都好奇想知道他的具体情况的,为了是可以控制这样的使用或者不范这样的错误,
米尔豪斯 发表于 2015-8-2 20:47 | 显示全部楼层

一个管脚最好只开一个外设的功能
lihai00 发表于 2015-8-2 21:27 | 显示全部楼层
为啥对于映射相关的问题我都觉得蛮难得理解。。。。
lwsn 发表于 2015-8-2 21:33 | 显示全部楼层
引脚应该可以复用,但需要加外设电路配合
mumu3013 发表于 2015-8-3 12:15 | 显示全部楼层
引脚复用功能是有先后顺序的,看datasheet,同一个引脚的被多个复用,在前的功能被使用,
并且楼上都说了,这种同时复用的情况一般不会有,有的话也是你软件级做的不好,有bug
amanda_s 发表于 2015-8-3 17:35 | 显示全部楼层
摩天轮1111 发表于 2015-7-31 21:26
您好,谢谢您的回复,
     您 的意思是问题2中,那个先给USART,映射到PB1,2,之后,如果先使能了usart ...

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

另外,一个外设的同一个信号只能在一个引脚上,remap后以前的引脚就没有这个功能了。
 楼主| 摩天轮1111 发表于 2015-8-4 22:31 | 显示全部楼层
amanda_s 发表于 2015-8-3 17:35
首先我要为我的想当然道歉。
如果将两个外设的功能映射到同一个引脚,并不是我所说的后配置后起效。
看了 ...

恩谢谢你
米尔豪斯 发表于 2015-8-5 09:45 | 显示全部楼层
引脚复用功能是有先后顺序的,需要软硬件辅助
lefeng 发表于 2015-8-5 10:09 | 显示全部楼层
一个外设的信号只能在一个引脚上,引脚复用是因为资源不够,一般不会
BBSTOM 发表于 2015-8-5 11:16 | 显示全部楼层
都是 一批 刚毕业的学生啊
冰河w 发表于 2015-8-5 11:59 | 显示全部楼层
引脚复用功能是有先后顺序的
s976228410 发表于 2015-8-6 09:32 | 显示全部楼层
暑假了 学生集体出动 哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

38

主题

224

帖子

15

粉丝
快速回复 在线客服 返回列表 返回顶部