OpenEdv-开源电子网

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

关于端口的复用和重映射功能的一点分享

[复制链接]

12

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2016-3-15
在线时间
66 小时
发表于 2017-1-24 00:14:31 | 显示全部楼层 |阅读模式
新手发帖,不明白规则,有问题请大家指正。

初学STM32的同学很容易被端口复用和重映射这两个概念搞混(尤其是第一次接触单片机的,比如我),都学到了定时器篇,才反过头来看这两个概念,发现还是有点混淆,于是翻了翻官方的资料,又回过头来看了看原子对这两个概念的解释,发一点分享给大家,希望可以帮到初学者。

主要参考来自于STM32103ZET6数据手册、STM32中文参考手册和原子的STM32F1开发指南(库函数版)4.4端口复用和重映射。

1、首先看数据手册的引脚说明(以PA7为例)
可以看到表头主功能是作为IO口使用,备用功能分成了两个部分,一个是默认(也就是我们现在说的复用功能,其实我觉得翻译成备用功能的默认功能会不会好一点,当然是比较罗嗦了,但是对新手来说不容易混淆),另一个则是重映射。那为什么要划分这两个备用功能?有什么区别呢?需要参考我们的STM32中文参考手册。


2、STM32中文参考手册对于复用功能和重映射功能的定义
(参考STM32中文参考手册8.1.4和8.1.5章节,这里我直接拷贝了)
8.1.4复用功能(AF)
使用默认复用功能前必须对端口位配置寄存器编程。
● 对于复用的输入功能,端口必须配置成输入模式(浮空、上拉或下拉)且输入引脚必须由外部驱动
注意: 也可以通过软件来模拟复用功能输入引脚,这种模拟可以通过对GPIO控制器编程来实现。此时,端口应当被设置为复用功能输出模式。显然,这时相应的引脚不再由外部驱动,而是通过GPIO控制器由软件来驱动。
● 对于复用输出功能,端口必须配置成复用功能输出模式(推挽或开漏)。
● 对于双向复用功能,端口位必须配置复用功能输出模式(推挽或开漏)。这时,输入驱动器被配置成浮空输入模式。
如果把端口配置成复用输出功能,则引脚和输出寄存器断开,并和片上外设的输出信号连接。
如果软件把一个GPIO脚配置成复用输出功能,但是外设没有被激活,它的输出将不确定。
8.1.5 软件重新映射I/O复用功能
为了使不同器件封装的外设I/O功能的数量达到最优,可以把一些复用功能重新映射到其他一些脚上。这可以通过软件配置相应的寄存器来完成(参考AFIO寄存器描述)。这时,复用功能就不再映射到它们的原始引脚上了


这里可以看到重映射功能是将复用功能重新映射到其他引脚,所以可以近似的理解为复用功能为IO口的第二功能,重映射功能为复用功能的第二功能。需要注意的是,当对复用功能的IO口设置了相应的重映射配置,此时复用功能就不再映射到原来的引脚了,所以我们看到原子的例程使用重映射功能的配置步骤一般是:先使能IO口的时钟和复用功能的时钟,接着使能辅助功能时钟,开启重映射,最后要配置重映射后的IO口。

引脚说明

引脚说明
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7535
金钱
7535
注册时间
2016-11-30
在线时间
641 小时
发表于 2017-1-24 09:14:37 | 显示全部楼层
很不错的帖子,学习了!谢谢楼主的分享!
回复 支持 反对

使用道具 举报

12

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
111
金钱
111
注册时间
2016-3-15
在线时间
66 小时
 楼主| 发表于 2017-1-25 21:40:56 | 显示全部楼层
lvkanger 发表于 2017-1-24 09:14
很不错的帖子,学习了!谢谢楼主的分享!

新手请多指教
回复 支持 反对

使用道具 举报

0

主题

29

帖子

0

精华

高级会员

Rank: 4

积分
672
金钱
672
注册时间
2012-2-24
在线时间
226 小时
发表于 2017-1-26 18:06:03 来自手机 | 显示全部楼层
谢谢分亨。收藏了
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
131
金钱
131
注册时间
2016-7-1
在线时间
31 小时
发表于 2017-3-2 16:30:00 | 显示全部楼层
楼主可以的,很专业的分析
回复 支持 反对

使用道具 举报

3

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-3-8
在线时间
36 小时
发表于 2017-3-31 15:45:54 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

3

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
89
金钱
89
注册时间
2017-3-8
在线时间
36 小时
发表于 2017-3-31 16:49:17 | 显示全部楼层
谢楼主分享!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2017-11-22
在线时间
0 小时
发表于 2017-11-22 19:12:49 | 显示全部楼层
谢谢楼主,写得很好,理解了
回复 支持 反对

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-11-20 17:20:20 | 显示全部楼层
不错,学习了
业精于勤荒于嬉;行成于思毁于随!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-28 06:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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