关于IO用作复用功能时的时钟设置注意要点

[复制链接]
 楼主| ST_ARM 发表于 2008-7-15 16:33 | 显示全部楼层 |阅读模式
近来碰到很多客户在使用STM32的外设时,由于IO口被用作复用功能,但是外设的初始化正确,GPIO口初始化正确,外设的时钟也已开启,但是外设无法正常运行。
其中最关键的一项,大多数使用者多没有设置,就是某个IO口被用作外设的接口时,需要开启IO口的复用功能的时钟,即进行外设、IO的时钟使能时,需要如下代码

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOx | RCC_APB2Periph_AFIO, ENABLE);    /* GPIOx and AFIO clock enable */
x --- 为对应的GPIO口,如:A、B、C、D、E。

希望用户在使用时,注意该要点!
utopia779 发表于 2008-7-26 20:47 | 显示全部楼层

学习了!

学习了!
lianshumou 发表于 2008-7-28 10:42 | 显示全部楼层

还好我一看寄存器里有个AFIO的时钟使能

就知不使能它肯定不好使,要不然出了问题可真是很难找啊!
ijk 发表于 2008-7-28 11:57 | 显示全部楼层

AFIO的时钟使能

  AFIO的时钟使能,什么时候是必须的,什么时候不需要?
  有人说,在使用串口时,没有使能AFIO的时钟,串口也能正常工作。
hawk05 发表于 2008-7-28 12:50 | 显示全部楼层

太及时了

多谢了,我说怎么不好用那!如果AFIO时钟不设置,软件仿真没问题,硬件仿真就不行了,一直找不到原因,这回明白了,多谢了!
Forever.c 发表于 2008-8-6 14:31 | 显示全部楼层

haha!就是它了

以前吃过亏!!
harlemjia 发表于 2008-8-27 18:07 | 显示全部楼层

我串口,定时器,AD不设他也照常工作啊 ?

谁能解释一下?
violet520 发表于 2008-8-28 09:21 | 显示全部楼层

版主来解释一下

急需版主来解释一下
香水城 发表于 2008-8-28 10:37 | 显示全部楼层

关于GPIO端口复用功能的使用

需要使能AFIO时钟的基本原则是:使用到技术参考手册(RM0008)第7.3节介绍的功能所涉及的管脚时,应使能AFIO时钟。但具体哪些情况一定要开启AFIO时钟,手册上确实讲的不清楚,我正在与总部的工程师沟通,试图搞清楚这个问题。

目前最好的办法就是:只要使用IO管脚的复用功能时,始终开启AFIO时钟!
harlemjia 发表于 2008-8-28 10:38 | 显示全部楼层

看来版主也不是很清楚这块内容

香水城 发表于 2008-8-28 10:51 | 显示全部楼层

搞清楚固然重要,但更重要的是实用

我注重的是解决实际问题,在此基础上才是明白背后的原理,如果原理一时搞不清楚,只要不影响应用,就只好先缓一缓。

我在9楼已经说过,我正在与总部的工程师沟通,等有了结果再回来向大家汇报。
harlemjia 发表于 2008-8-28 14:42 | 显示全部楼层

呵呵

感谢热心的版主
lut1lut 发表于 2008-8-28 15:21 | 显示全部楼层

同问:我也觉得只有使用到了remap以及

外部中断,还有很少人用到的Cortex-M3的SEV指令时才需要打开AFIO时钟
luckyjjjjj 发表于 2008-8-28 23:06 | 显示全部楼层

超过一个复用功能怎么选择

翻遍手册没找到说明,
luckyjjjjj 发表于 2008-8-28 23:36 | 显示全部楼层

看ST的库

在那个conf.h里开启外设,打开同一个端口上所有复用的外设,并且都初始化(初始化外设,初始化GPIO,开启外设的时钟,开启IO口复用功能的时钟),会有什么后果,总线fault?
芯片设计时为什么不考虑用多路开关,用户可以通过寄存器配置
violet520 发表于 2008-8-29 13:57 | 显示全部楼层

没交代明白

需要权威来解释一下
香水城 发表于 2008-8-29 14:22 | 显示全部楼层

任何时候一个管脚只可能有一种功能

实际应用中不可能有一个管脚有超过一个复用功能的情况,所以14、15楼的问题没有意义。

如果你不幸作了15楼说的事情,我很难说清楚有什么后果,至少芯片本身不会损坏,但如果你的外围电路因此误动作造成芯片损坏,只有设计这个电路的人才能知道了。
luckyjjjjj 发表于 2008-8-29 14:36 | 显示全部楼层

我想问的是在多个复用功能间选择的问题

按照你们的库,初始化外设和IO,开启时钟,开启外设就可以用了。多个复用功能间选择一个,禁止另外的没有说明,翻遍你们的手册也没找到说明。
香水城 发表于 2008-8-29 14:43 | 显示全部楼层

哈哈,常识性的问题

如果你能够理解“任何时候一个管脚只可能有一种功能”是一个基本原则,是一个常识性的基础,“只能选择管脚的多个复用功能中的一个,禁止其他复用功能”也就是一个基本常识了,这种常识性的东西好像不必在手册里明确说明吧。

打个比方,芯片需要加电才能工作,但手册里并没有明确说明这一点,因为没有必要。
luckyjjjjj 发表于 2008-8-29 15:29 | 显示全部楼层

可能我意思没表达清楚

我想问的是怎样选择其中一个功能 ,你们的库是这样用的,初始化外设和IO,开启时钟,把外设映射到APB总线上,这就代表这个外设被激活了,你们的手册没找到相关说明。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

844

帖子

1

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