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

2019-07-21 07:58发布

如果配置成开漏输出,从说明书看可以实现0输出有效,1输出为高阻态,也可以读取这个开漏输出口的数据输入寄存器数值。
我就想使用这个口来输出0,当输出1时读取端口的状态数据,以此来实现不配置为输入从而实现准双向口功能。
但是试验发现读取的数值不对。
请问这个想法可行吗?如果可行需要如何配置。
(如果需要输入时改变端口配置为输入当然可以)


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
正点原子
1楼-- · 2019-07-21 10:03
必须改输入输出状态,你以为51啊?  老老实实改
xiatianyun
2楼-- · 2019-07-21 13:27
正点原子 发表于 2018-11-10 13:24
必须改输入输出状态,你以为51啊?  老老实实改

OK,谢谢回复!
xxssl
3楼-- · 2019-07-21 13:44
正点原子 发表于 2018-11-10 13:24
必须改输入输出状态,你以为51啊?  老老实实改

其实改成开漏输出是可以双向功能的,比如PA8,设置输出PAout(8)=1或者PAout(8)=0,读取输入先把电平拉高PAout(8)=1,然后读取a=PAin(8),我测试过,输入和输出都可以使用
warship
4楼-- · 2019-07-21 14:35
xxssl 发表于 2018-11-12 10:28
其实改成开漏输出是可以双向功能的,比如PA8,设置输出PAout(8)=1或者PAout(8)=0,读取输入先把电平拉高P ...

好像楼主就是这么做的,
结果却不对哦。
yygkqzh
5楼-- · 2019-07-21 17:54
 精彩回答 2  元偷偷看……
xiatianyun
6楼-- · 2019-07-21 23:29
经过多次试验,确实可以实现准双向口,不过似乎用处不大,主要还是当端口浮空时读取的值不确定。
要实现准双向口,端口需要配置为开漏输出,读取前必须先输出1使端口高阻态并维持一段时间(for空循环10次),然后才读。这时如果端口是0则读值为0,如果端口为1则读值为1,如果端口浮空,则读的值不确定。所以有几个关键点:读前输出1、端口不能出现浮空。
一起这样,不如就需要输出配置为输出,需要输入配置为输入。

一周热门 更多>