OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4476|回复: 8

在串口通信实验中,例程中只是设置了端口的时钟,就如同按键实验中一样,而在外部中断实验中,却打开的是IO口复用时钟,

[复制链接]

11

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2015-10-29
在线时间
8 小时
发表于 2015-11-1 12:23:36 | 显示全部楼层 |阅读模式
5金钱
在串口通信实验中,例程中只是设置了端口的时钟,就如同按键实验中一样,而在外部中断实验中,却打开的是IO口复用时钟,我不解的是,usart1在使用A9和A10的时候不应该也是复用吗?外部中断和串口的时钟设置为什么不一样呢,小弟刚接触stm32,可能理解的不正确,还希望您能给与指点,非常感谢

最佳答案

查看完整内容[请看2#楼]

复用功能时钟开启的2个情况: 1,中断配置. 2,重映射. 除此之外,其他情况基本上都不需要设置复用时钟.
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-11-1 12:23:37 | 显示全部楼层
复用功能时钟开启的2个情况:
1,中断配置.
2,重映射.

除此之外,其他情况基本上都不需要设置复用时钟.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2015-11-1 19:59:44 | 显示全部楼层
在sys文件夹中的uart.c中已经配置复用了

对原子哥sys文件夹要有一定学习认识,参照开发指南sys文件夹章节
以我资质之鲁钝,当尽平心静气、循序渐进、稳扎稳打之力。
回复

使用道具 举报

11

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2015-10-29
在线时间
8 小时
 楼主| 发表于 2015-11-2 10:35:04 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
哦,知道了,谢谢大站长
回复

使用道具 举报

11

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2015-10-29
在线时间
8 小时
 楼主| 发表于 2015-11-2 10:35:22 | 显示全部楼层
回复【2楼】龙之谷:
---------------------------------
恩恩,谢谢啦
回复

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
48
金钱
48
注册时间
2015-11-23
在线时间
7 小时
发表于 2015-11-26 09:35:53 | 显示全部楼层
回复【3楼】正点原子:
---------------------------------
USART实验中也有中断配个啊,也没有用到AFIO的时钟啊?外部中断肯定没有涉及到重映射啊,重映射是把一个引脚映射到另外一个引脚,EXTI里面没有吧?望原子哥解答
回复

使用道具 举报

11

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2015-10-29
在线时间
8 小时
 楼主| 发表于 2015-11-26 14:26:49 | 显示全部楼层
回复【6楼】Alones:
---------------------------------
首先为什么要开启时钟?
答:因为要对寄存器进行读写!而在STM32中对寄存器的读写都是要打开寄存器对应的时钟才可以的【就像人一样,有了跳动的脉搏手臂才能有能量才能进行各种动作】。
然后就什么时候AFIO时钟开启(所有时钟都是这样)就清楚了:当需要对“AFIO时钟管理的寄存器”进行读写时AFIO时钟打开!当然不对“AFIO时钟管理的寄存器”读写时也可以打开AFIO时钟,此时只是白白增加能耗、写无用代码(白白浪费程序存储器空间)而已!
接下来:跟AFIO相关的寄存器有哪些呢?
答:根据《STM32中文参考手册_V10》有:①事件控制寄存器(AFIO_EVCR)、②复用重映射和调试I/O?配置寄存器(AFIO_MAPR)、③外部中断配置寄存器1(AFIO_EXTICR1)、④外部中断配置寄存器2(AFIO_EXTICR2)、⑤外部中断配置寄存器3(AFIO_EXTICR3)、⑥外部中断配置寄存器4(AFIO_EXTICR4)。
应用:在usart1串口通信没有端口重映射时为什么不打开AFIO时钟?PA9、PA10作为通用I/O口也复用了,为什么不打开为什么不打开复用时钟?
答:AFIO全称:Alternate function I/O? alternate备用的、替代的、交替的,所以AFIO可翻译为“备用功能I/O”,原英文手册上解释很清楚:[《STM32英文手册》P152]
To optimize the number of peripherals available for the 64-pin or the 100-pin or the 144-pin?package, it is possible to remap?some alternate functions to some other pins. This is
achieved by software, by programming the AF remap and debug I/O configuration register(AFIO_MAPR) on page 159. In this case, the alternate functions are no longer mapped to
their original assignations.
可见AFIO就设计用来remap some alternate functions to some other pins的,所以根本就没有什么“复用”之说,看来都是翻译惹的祸!另外看一下I/O复用时的情况就更清楚了
[STM32中文参考手册_V10》P109]:

可见,当设置“PA9为GPIO_Mode_AF_PP(只是一个常数0x18)、PA10为GPIO_Mode_IN_FLOATING(只是一个常数0x04)”时PA9、PA10就已经直接跟串口的相应寄存器连接上了,而串口的寄存器不需要AFIO时钟、PA9/PA10也不许要AFIO时钟,同时有没有对AFIO相应的寄存器操作所以根本不用开启AFIO时钟!
回复

使用道具 举报

11

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
107
金钱
107
注册时间
2015-10-29
在线时间
8 小时
 楼主| 发表于 2015-11-26 14:30:08 | 显示全部楼层
回复【6楼】Alones:
---------------------------------
这个是论坛里一位前辈总结的,非常好,你可以参考下,其实就是翻译错误导致错误思维导向
回复

使用道具 举报

13

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2016-5-26
在线时间
108 小时
发表于 2019-8-19 10:37:15 | 显示全部楼层
我看了两遍,还是不是很理解 。
打开手册如下,意思是:
因为要  把IO口配置为exti的输入源,要用到AFIO_exticr寄存器。
所以   就必需打开AFIO的时钟。


然后就怎么是 复用了呢?我也不知道,我也不清楚
vk.png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 20:59

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表