搜索
ST MCU Finder
安装免费手机应用,
寻找理想的ST MCU

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

[复制链接]
346|11
 楼主 | 2019-11-11 16:32 | 显示全部楼层 |阅读模式
本帖最后由 whtwhtw 于 2019-11-11 16:33 编辑

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


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


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

使用特权

评论回复
 楼主 | 2019-11-11 16:56 | 显示全部楼层
按照红色框上一条,其实输出IO口数据都是读入到输入寄存器了

使用特权

评论回复
 楼主 | 2019-11-11 17:00 | 显示全部楼层
本帖最后由 whtwhtw 于 2019-11-11 17:17 编辑

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

QQ截图20191111165545.png
这里就没有再分推挽和开漏的区别了。。。。。。

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

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

使用特权

评论回复
 楼主 | 2019-11-11 17:02 | 显示全部楼层
本帖最后由 whtwhtw 于 2019-11-11 17:06 编辑

又看了M3的英文参考手册
QQ截图20191111170041.png
确实也有开漏和推挽的限制。。。

使用特权

评论回复
 楼主 | 2019-11-11 17:04 | 显示全部楼层
本帖最后由 whtwhtw 于 2019-11-11 17:07 编辑

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

使用特权

评论回复
| 2019-11-11 19:08 | 显示全部楼层
应该要看输入寄存器前面的施密特触发器有没有使能吧

使用特权

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

没找到这个开关

使用特权

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

使用特权

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

使用特权

评论回复
| 2019-12-9 16:25 | 显示全部楼层
单步运行的时候是不准确的

使用特权

评论回复
| 2019-12-9 16:29 | 显示全部楼层
应该可以的 但是有时候不准确

使用特权

评论回复
| 2019-12-9 16:32 | 显示全部楼层
哦 原来是这样啊

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表