OpenEdv-开源电子网

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

设置为复用功能的引脚 还可以直接作为I/O口吗?

[复制链接]

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
发表于 2016-10-12 10:22:40 | 显示全部楼层 |阅读模式
5金钱
对某个引脚用GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)设置为复用功能后,是否还可以直接在作为I/O口使用(就是不用外设复用功能了),会不会对I/O有影响?

最佳答案

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

重新初始化成普通I/O功能就可以了,需要外设复用功能的时候再初始化成外设复用
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-10-12 10:22:41 | 显示全部楼层
重新初始化成普通I/O功能就可以了,需要外设复用功能的时候再初始化成外设复用
回复

使用道具 举报

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
 楼主| 发表于 2016-10-14 11:57:55 | 显示全部楼层
特朗姆斯 发表于 2016-10-12 10:22
重新初始化成普通I/O功能就可以了,需要外设复用功能的时候再初始化成外设复用

奥奥,是对I/O的寄存器都初始化?
回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-10-14 13:30:04 | 显示全部楼层
若然落木 发表于 2016-10-14 11:57
奥奥,是对I/O的寄存器都初始化?

假设PA7可以复用作串口的发送(TX)功能。你如果要用PA7作为串口的TX功能那就把PA7按串口初始化的方式进行初始化,如果不用串口功能了就把PA7重新初始化为普通I/O功能就可以了。

我说的可能复杂了一点。其实操作起来很容易,有两个初始化函数就行了,一个把I/O初始化为普通I/O功能,一个把I/O初始化为复用功能。想用哪个功能前就先调用一下那个初始化函数。
回复

使用道具 举报

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
 楼主| 发表于 2016-10-14 14:03:37 | 显示全部楼层
本帖最后由 若然落木 于 2016-10-14 14:07 编辑
特朗姆斯 发表于 2016-10-14 13:30
假设PA7可以复用作串口的发送(TX)功能。你如果要用PA7作为串口的TX功能那就把PA7按串口初始化的方式进 ...

是用其他函数把I/O口复用到AF0或AF14(数据手册这两个通常没有复用功能),是不是就达到变为I/O口了?用哪个函数?
GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);这个函数里貌似不可以复用到AF0,AF14。

回复

使用道具 举报

6

主题

201

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1149
金钱
1149
注册时间
2015-11-13
在线时间
267 小时
发表于 2016-10-14 17:25:02 | 显示全部楼层
若然落木 发表于 2016-10-14 14:03
是用其他函数把I/O口复用到AF0或AF14(数据手册这两个通常没有复用功能),是不是就达到变为I/O口了?用 ...

设为普通I/O不需要涉及到复用功能

你参考原子的LED灯是怎么初始化I/O的,这就是典型的普通I/O初始化
回复

使用道具 举报

12

主题

101

帖子

0

精华

高级会员

Rank: 4

积分
963
金钱
963
注册时间
2016-3-16
在线时间
109 小时
 楼主| 发表于 2016-10-14 18:26:20 | 显示全部楼层
特朗姆斯 发表于 2016-10-14 17:25
设为普通I/O不需要涉及到复用功能

你参考原子的LED灯是怎么初始化I/O的,这就是典型的普通I/O初始化

明白了,我之前迷了。用I/O初始化函数,把它设置为其他模式(通用输出/输入),不再做为复用模式就行了。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-13 17:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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