OpenEdv-开源电子网

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

STM32 IO口配置为推挽输出模式时能不能对IO口的状态进行读操作?

[复制链接]

16

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2015-8-5
在线时间
53 小时
发表于 2018-8-15 14:59:28 | 显示全部楼层 |阅读模式
1金钱
如图所示:“出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器 ”,安参考手册上的描述应该可以读取IO口的数据,但是看网上的描述都是要读取的时候,把IO口配置为输入模式。
QQ截图20180815145527.png

最佳答案

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

设置复用输出的时候,是由外设控制IO的方向的,可以输入,也可以输出。
坚持到感动自己
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-15 14:59:29 | 显示全部楼层
设置复用输出的时候,是由外设控制IO的方向的,可以输入,也可以输出。
回复

使用道具 举报

9

主题

796

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2038
金钱
2038
注册时间
2017-8-2
在线时间
522 小时
发表于 2018-8-15 16:07:23 | 显示全部楼层
那你设置成复用推挽嘛....
猪猪熊呢?
回复

使用道具 举报

16

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2015-8-5
在线时间
53 小时
 楼主| 发表于 2018-8-15 16:42:21 | 显示全部楼层
323232 发表于 2018-8-15 16:07
那你设置成复用推挽嘛....

参考手册上,关于读取的描述基本上一样,只是复用推挽的io的状态可以直接进入片上外设。网上的一种说法是推挽读取io口操作读到的是锁存器内的数据并不是io的状态,所以有点乱。
坚持到感动自己
回复

使用道具 举报

16

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2015-8-5
在线时间
53 小时
 楼主| 发表于 2018-8-16 08:46:15 | 显示全部楼层
正点原子 发表于 2018-8-15 14:59
设置复用输出的时候,是由外设控制IO的方向的,可以输入,也可以输出。

原子哥,通用推挽输出参考手册上“出现在I/O脚上的数据在每个APB2时钟被采样到输入数据寄存器”这段话我理解的是可以读取io口的状态,但是和网上的说法不一样
坚持到感动自己
回复

使用道具 举报

31

主题

1955

帖子

3

精华

论坛元老

Rank: 8Rank: 8

积分
4522
金钱
4522
注册时间
2018-5-11
在线时间
947 小时
发表于 2018-8-16 14:40:20 来自手机 | 显示全部楼层
可以找英文原版看看,不过这个我感觉没有什么意义,既然设置为输出了,其端口状态就被锁存为输出寄存器的值,可以读,但读取的应该是输出寄存器的状态吧
回复

使用道具 举报

16

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2015-8-5
在线时间
53 小时
 楼主| 发表于 2018-8-16 16:43:12 | 显示全部楼层
warship 发表于 2018-8-16 14:40
可以找英文原版看看,不过这个我感觉没有什么意义,既然设置为输出了,其端口状态就被锁存为输出寄存器的值 ...

对,我上查的说读的是锁存器的状态,但是参考手册(报考英文版的)上都有“每个APB2时钟IO引脚上的数据都会被采集到输入寄存器中”,感觉意思有出入
坚持到感动自己
回复

使用道具 举报

5

主题

86

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1535
金钱
1535
注册时间
2015-2-4
在线时间
285 小时
发表于 2018-8-16 17:44:43 | 显示全部楼层
在设置成输出的状态下,“每个APB2时钟IO引脚上的数据都会被采集到输入寄存器中”这话没错。但要想有效读取IO口状态,只有在开漏输出状态(并且要保证上次输出是1,有点“欲读先写”之意,以保证IO口能反映外部电路电平变化),这样读到的才是外部IO状态。
回复

使用道具 举报

16

主题

51

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
344
金钱
344
注册时间
2015-8-5
在线时间
53 小时
 楼主| 发表于 2018-8-17 08:47:09 | 显示全部楼层
wdgao 发表于 2018-8-16 17:44
在设置成输出的状态下,“每个APB2时钟IO引脚上的数据都会被采集到输入寄存器中”这话没错。但要想有效读取 ...

好的,多谢指教
坚持到感动自己
回复

使用道具 举报

0

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1713
金钱
1713
注册时间
2017-2-22
在线时间
296 小时
发表于 2018-9-1 11:01:41 | 显示全部楼层
网上那些误导了吧!所谓的读懂就是寄存器,其实读寄存器的输入端一直是连着GPIO的,你读相应的寄存器就是读GPIO的电平本身就是没冲突,stm32本身的复用功能又没有关闭读寄存器的施密特触发功能,不像stm8关闭了ADC对应引脚的施密特触发功能才会无法直接读取GPIO的实际电平!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 05:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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