OpenEdv-开源电子网

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

GPIO如何配置和应用才能实现双向口功能?

[复制链接]

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
发表于 2018-11-10 13:24:28 | 显示全部楼层 |阅读模式
5金钱
如果配置成开漏输出,从说明书看可以实现0输出有效,1输出为高阻态,也可以读取这个开漏输出口的数据输入寄存器数值。
我就想使用这个口来输出0,当输出1时读取端口的状态数据,以此来实现不配置为输入从而实现准双向口功能。
但是试验发现读取的数值不对。
请问这个想法可行吗?如果可行需要如何配置。
(如果需要输入时改变端口配置为输入当然可以)


最佳答案

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

必须改输入输出状态,你以为51啊? 老老实实改
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-11-10 13:24:29 | 显示全部楼层
必须改输入输出状态,你以为51啊?  老老实实改
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-11-12 09:56:10 | 显示全部楼层
正点原子 发表于 2018-11-10 13:24
必须改输入输出状态,你以为51啊?  老老实实改

OK,谢谢回复!
回复

使用道具 举报

12

主题

330

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2294
金钱
2294
注册时间
2016-5-21
在线时间
954 小时
发表于 2018-11-12 10:28:58 | 显示全部楼层
正点原子 发表于 2018-11-10 13:24
必须改输入输出状态,你以为51啊?  老老实实改

其实改成开漏输出是可以双向功能的,比如PA8,设置输出PAout(8)=1或者PAout(8)=0,读取输入先把电平拉高PAout(8)=1,然后读取a=PAin(8),我测试过,输入和输出都可以使用
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4523
金钱
4523
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-11-12 21:14:00 | 显示全部楼层
xxssl 发表于 2018-11-12 10:28
其实改成开漏输出是可以双向功能的,比如PA8,设置输出PAout(8)=1或者PAout(8)=0,读取输入先把电平拉高P ...

好像楼主就是这么做的,
结果却不对哦。
我的开源链接 https://github.com/ShuifaHe/STM32.git  请关注,点赞支持哦。
回复

使用道具 举报

11

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
447
金钱
447
注册时间
2013-8-4
在线时间
69 小时
发表于 2018-11-13 12:42:20 来自手机 | 显示全部楼层
可以双向 四楼正解
回复

使用道具 举报

29

主题

338

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
1181
金钱
1181
注册时间
2018-4-13
在线时间
170 小时
 楼主| 发表于 2018-11-14 15:55:54 | 显示全部楼层
经过多次试验,确实可以实现准双向口,不过似乎用处不大,主要还是当端口浮空时读取的值不确定。
要实现准双向口,端口需要配置为开漏输出,读取前必须先输出1使端口高阻态并维持一段时间(for空循环10次),然后才读。这时如果端口是0则读值为0,如果端口为1则读值为1,如果端口浮空,则读的值不确定。所以有几个关键点:读前输出1、端口不能出现浮空。
一起这样,不如就需要输出配置为输出,需要输入配置为输入。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 20:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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