OpenEdv-开源电子网

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

STM32 一个IO口既做输入又做输出问题

[复制链接]

27

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2017-5-3
在线时间
72 小时
发表于 2017-9-5 21:02:51 | 显示全部楼层 |阅读模式
4金钱
微信截图_20170905205808.png 微信截图_20170905205852.png IO既做输出又做输入怎样设置的,这些设置都怎样理解?为什么要这样设置?

最佳答案

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

IO既做输出又做输入,设置为开漏模式GPIO_OUT_OD。 开漏模式:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。设置寄存器及数据移位要看手册
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

108

帖子

1

精华

高级会员

Rank: 4

积分
716
金钱
716
注册时间
2017-4-25
在线时间
203 小时
发表于 2017-9-5 21:02:52 | 显示全部楼层
IO既做输出又做输入,设置为开漏模式GPIO_OUT_OD。
开漏模式:IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。设置寄存器及数据移位要看手册
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
发表于 2017-9-5 21:08:15 | 显示全部楼层
这些只是宏定义,设置方法就是更改寄存器的值,至于为什么这样的设置是因为你需要既作输入又做输出。
回复

使用道具 举报

17

主题

181

帖子

0

精华

高级会员

Rank: 4

积分
504
金钱
504
注册时间
2017-7-24
在线时间
117 小时
发表于 2017-9-5 21:19:15 | 显示全部楼层
好吧我不胡闹了,我猜你要的答案是这样。
1、这个#define只是宏定义,宏定义什么呢?就是把DS1302_IO_IN设置成后面的,后面的意思就是把相应的IO口设置成输入模式,输出模式同理。具体是哪个IO口,还有设置原理,详参库函数开发手册。或者你可以看看原子哥视频教程。
2、第一个回答应该可以回答后两个问题了。至于第一个问题,怎么理解设置一般是这样的,当作为输入的时候,调用_IO_IN()这个函数,就是把相应的IO口设置成输入了。作为输出同理。至于怎么设置,请详参第一个回答。
3、若看过这些你还不懂,那你再提问我。
回复

使用道具 举报

27

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2017-5-3
在线时间
72 小时
 楼主| 发表于 2017-9-5 22:47:33 | 显示全部楼层
OK,谢谢啦
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 09:12

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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