打印
[STM32F1]

GPIO双向配置

[复制链接]
1193|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wczrui|  楼主 | 2015-8-1 23:08 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
如何实现输入输出功能?
沙发
开漏输出,接上拉电阻,上拉电阻阻值依照实际需要确定。可以不用切换输入输出状态。

1.png (141.47 KB )

1.png

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
wczrui + 1 很给力!
板凳
wczrui|  楼主 | 2015-8-2 17:01 | 只看该作者
感谢“活在珍贵的人间”的详细答复。我用的是购买的开发版,手头没有必要的元器件,不便扩展电路。
如果只在软件上考虑,难道只能在输入输出间对端口切换配置?

使用特权

评论回复
地板
wczrui|  楼主 | 2015-8-2 17:10 | 只看该作者
活在珍贵的人间 发表于 2015-8-2 10:14
开漏输出,接上拉电阻,上拉电阻阻值依照实际需要确定。可以不用切换输入输出状态。 ...

如果只考虑软件方式,能否实现?谢谢!

使用特权

评论回复
5
wczrui 发表于 2015-8-2 17:10
如果只考虑软件方式,能否实现?谢谢!

只有切换了,目前我想不到其他的方法。我估计你是觉得用库函数切换效率低吧,其实除非要求特别苛刻的的场合,库函数完全可以满足实时性需要。

当然寄存器操作效率最高,给你一个我的操作寄存器切换端口状态的例子,仅供参考:
#define         DHT_PIN           GPIO_Pin_4                  
#define         DHT_PORT                GPIOC

#define DHT_PIN_Mode_In()          {DHT_PORT->CRL&=0XFFF0FFFF;DHT_PORT->CRL|=8<<16;DHT_PORT->ODR|=DHT_PIN;}  
#define DHT_PIN_Mode_Out()  {DHT_PORT->CRL&=0XFFF0FFFF;DHT_PORT->CRL|=3<<16;}

使用特权

评论回复
6
米尔豪斯| | 2015-8-2 20:41 | 只看该作者
双向数据传输,好像是设置成OD模式吧

使用特权

评论回复
7
zhou00| | 2015-8-2 20:49 | 只看该作者
双向输出比起单向用的要多。。。。

使用特权

评论回复
8
lvyunhua| | 2015-8-2 21:31 | 只看该作者
不错,学习了。

使用特权

评论回复
9
wczrui|  楼主 | 2015-8-3 01:17 | 只看该作者
活在珍贵的人间 发表于 2015-8-2 17:19
只有切换了,目前我想不到其他的方法。我估计你是觉得用库函数切换效率低吧,其实除非要求特别苛刻的的场 ...

感谢您的分享!

使用特权

评论回复
10
wczrui|  楼主 | 2015-8-3 01:19 | 只看该作者
米尔豪斯 发表于 2015-8-2 20:41
双向数据传输,好像是设置成OD模式吧

开漏模式确定可以实现双向数据操作?

使用特权

评论回复
11
冰河w| | 2015-8-5 11:43 | 只看该作者
之前在哪看见过用开漏输出加上拉电阻, 可以实现,具体没做过

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

1

粉丝