打印
[STM32F1]

IO推挽输出,读输入寄存器的值是否是IO口的值?

[复制链接]
890|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
whtwhtw|  楼主 | 2019-11-11 16:32 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 whtwhtw 于 2019-11-11 16:33 编辑


如图,这是M3参考手册中关于IO口输出配置的讲解,其中红色部分:
在开漏模式时,对输入数据寄存器的读访问可得到I/O状态。
青色部分:
在推挽式模式时,对输出数据寄存器的读访问得到最后一次写的值。
这两句话分开来解释都没问题。
重点是,“推挽模式时,对输入数据寄存器的读访问可得到I/O状态”,这句话是否有问题呢?


那“在开漏模式时,对输出数据寄存器的读访问得到最后一次写的值”,这句话是否有问题呢?


怎么感觉都是对的?参考手册为什么要这么写?

使用特权

评论回复
沙发
whtwhtw|  楼主 | 2019-11-11 16:56 | 只看该作者
按照红色框上一条,其实输出IO口数据都是读入到输入寄存器了

使用特权

评论回复
板凳
whtwhtw|  楼主 | 2019-11-11 17:00 | 只看该作者
本帖最后由 whtwhtw 于 2019-11-11 17:17 编辑

又看了M0的参考手册,这就是验证我说的了


这里就没有再分推挽和开漏的区别了。。。。。。

这图和上图在上拉下拉都关闭的情况下,差别在哪里?

用M0单片机验证IO作为中断复用功能,同时读取IO,确实也没问题。

使用特权

评论回复
地板
whtwhtw|  楼主 | 2019-11-11 17:02 | 只看该作者
本帖最后由 whtwhtw 于 2019-11-11 17:06 编辑

又看了M3的英文参考手册

确实也有开漏和推挽的限制。。。

使用特权

评论回复
5
whtwhtw|  楼主 | 2019-11-11 17:04 | 只看该作者
本帖最后由 whtwhtw 于 2019-11-11 17:07 编辑

那么能不能得出结论
在输出状态下,可以随时读取IO的状态?那也就没有必要来回切换输入、输出状态!
如果不行,问题出在哪里?

使用特权

评论回复
6
parameters| | 2019-11-11 19:08 | 只看该作者
应该要看输入寄存器前面的施密特触发器有没有使能吧

使用特权

评论回复
7
whtwhtw|  楼主 | 2019-11-12 13:42 | 只看该作者
parameters 发表于 2019-11-11 19:08
应该要看输入寄存器前面的施密特触发器有没有使能吧

没找到这个开关

使用特权

评论回复
8
gdszzyq| | 2019-11-12 17:00 | 只看该作者
一、你理解反了,图中说的是:推挽模式时,对输出数据寄存器的读访问得到最后一次写的值,开漏模式时,对输入数据寄存器的读访问可得到I/O状态       二、按图中说明,我觉得还是有点问题,应该这么表述比较合理:开漏模式时,当输出寄存器上的值为1时,对输入数据寄存器的读访问可得到I/O状态,因为当输出寄存器上的值为0时I/O状态是一直为0的。

使用特权

评论回复
9
gdszzyq| | 2019-11-12 17:07 | 只看该作者
推挽模式和开漏模式的差别是,当输出寄存器的值为1时,推挽模式是激活P-MOS的,这时输出高电平;而开漏模式是不激活P-MOS的(也就是I/O处于高阻态)

使用特权

评论回复
10
renzheshengui| | 2019-12-9 16:25 | 只看该作者
单步运行的时候是不准确的

使用特权

评论回复
11
wakayi| | 2019-12-9 16:29 | 只看该作者
应该可以的 但是有时候不准确

使用特权

评论回复
12
wowu| | 2019-12-9 16:32 | 只看该作者
哦 原来是这样啊

使用特权

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

本版积分规则

72

主题

2501

帖子

35

粉丝