打印
[STM32F1]

请教一个GPIO引脚定义的问题

[复制链接]
2391|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wjiwji|  楼主 | 2015-11-19 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人初学STM32F10x单片机,之前用过430和28335,接触STM32后发现有些东西实在弄不明白,翻阅资料也没有确切的说明,现在将我遇到的疑问列出来,望资深人士指点迷津!以STM32F103VET 为例
GPIO管脚的复用:复用引脚36  PB1/ADC12_IN9/TIM3_CH4/TIM8_CH3N ,PB1为默认主功能引脚,其他的都是复用,如何来定义这个引脚呢?在28335中每个复用功能都是用特定寄存器来设定的,比如PB1时设00,ADC12_IN9时01,TIM3_CH4时02,TIM8_CH3N时设03,总之是确定的。但是在STM32中却不是这样的,设定为复用引脚如AF_PP后,要使能相应的时钟才能工作。那么我的问题就来了:
1 、仍以36脚为例,GPIO配置为复用,如果单使能ADC时钟,那么引脚被定义为ADC12_IN9,内部连接至ADC模块,这没什么问题;但是如果同时使能了ADC和TIM3时钟(单纯用作1ms标准定时器,无需输入输出),引脚将配置成什么?网上有**讲,当出现这种情况,ADC,TIM3,TIM8只能使能其中一个时钟,也即只能使用其中一种外设,那对于TIM3,TIM8这种可以内部使用的外设不是一种浪费么?
2、已配置好外设时钟,但没有配置引脚的情况,比如使能TIM3做周期定时器处理一些任务,这时候没有必要配置引脚,那这些跟TIM3关联的引脚仍是GPIO通用引脚还是其他情况?
3、还有一种情况,如果引脚配置为复用引脚,但是相应的外设时钟没有启用,一些资料里说此时引脚输出将不确定。是这样吗?
按照我对引脚复用的设计理解,GPIO复用功能就像一个多对一的拨码开关,设定为哪个脚接通就可以了(比如28335的GPIO寄存器一样),跟外设是否启用一点关系都没有,而在STM32里还跟外设时钟有关,难不成是外设时钟推动这个拨码开关不成,这样设计真的让人难以理解,使用28335就没有这种疑问。以上就是困惑我的地方,另外吐槽一下,STM32固件库设计的真不这么样!
沙发
amanda_s| | 2015-11-19 17:56 | 只看该作者
STM32F1中GPIO的复用功能配置和STM32其他系列都不一样。打开GPIO复用后,同时再使能多个外设的时钟,但只有一个外设使用这个端口,其他的外设不用输入输出是可以的。也确实是存在如果同时使能多个外设的时候后,外设工作异常的情况。这些情况在勘误手册上都有说明,也提供了解决办法。
STM32其他的系列,GPIO复用功能用起来就简单多了。专门有一个寄存器,可以选择每个GPIO口当前复用的功能。你再使能别的外设,是没有任何影响的。

使用特权

评论回复
板凳
amanda_s| | 2015-11-19 17:58 | 只看该作者
楼主是在用标准外设库,还是Cube库?
换一个新的芯片,总归没有老的顺手啦。

使用特权

评论回复
地板
玄德| | 2015-11-19 18:27 | 只看该作者

所有功能,最后必须通过N选一的开关连接到管脚。
用不到的功能,时钟打开也不碍事,只是耗电。

时钟和开关各有自己的硬件,互不干扰,自己干自己的事。

使用特权

评论回复
5
XC456| | 2015-11-19 18:46 | 只看该作者
试下cube库吧楼主

使用特权

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

本版积分规则

13

主题

19

帖子

1

粉丝