OpenEdv-开源电子网

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

读入函数和引脚输出配置

[复制链接]

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-11-13
在线时间
0 小时
发表于 2014-12-5 11:10:41 | 显示全部楼层 |阅读模式

今天在做一个按键控制LED亮的时候,第一步先对IO口进行配置,第二步用GPIO_Readinputdata函数去判断引脚电平,结果很顺利。

但是在进一步调整的时候发现,我对  按键引脚的I/O口配置是GPIO_Mode_Out_PP;是一个输出模式,GPIO_Readinputdata肯定是对输入

模式的引脚进行判断,因为按键是输入。

仔细考虑后,项目中只考虑电平高低变化,对IO口的设置应该不用这么严格。当然写程序的时候还是要注意这点。

这个不能算分享,应该是个疑惑,大家有什么好的看法

     个人观点,刚学,认识肯定不到位,如果大牛有什么深入理解希望能分享一下。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11560
金钱
11560
注册时间
2014-4-1
在线时间
1318 小时
发表于 2014-12-5 14:57:58 | 显示全部楼层
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-11-13
在线时间
0 小时
 楼主| 发表于 2014-12-5 15:11:44 | 显示全部楼层
回复【2楼】xuande:
---------------------------------
按键控制灯的亮暗, 接按键的IO口(GPIOA_GPIO_PIN_5)模式配置至少是GPIO_Mode_IN_的输入模式,灯接的IO口(GPIOA_GPIO_PIN_6)至少是GPIO_Mode_Out_的输出模式,对吧,用GPIO_Readinputdatabit(GPIOA,GPIO_PIN_5)判断引脚是否按下,来控制LED(GPIOA_GPIO_PIN_6)的
亮暗。
但是我在IO口配置的时候把GPIOA_GPIO_PIN_5配置成了GPIO_Mode_Out_PP的输出模式,用GPIO_Readinputdatabit(GPIOA,GPIO_PIN_5)还是读取到了IO口的电平变化,对ReadinputdataBit函数有疑惑。
回复 支持 反对

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11560
金钱
11560
注册时间
2014-4-1
在线时间
1318 小时
发表于 2014-12-5 17:02:38 | 显示全部楼层
既然 IO 口设置为输出方式(GPIO_Mode_Out_PP),怎么又能作为输入呢?
是这意思吗?

两种可能:
1、IO 口的模式寄存器MODER,与输出类型寄存器 OTYPER ,二者是分开的。前者管输入/输出/AF/模拟,后者管推挽/开漏。
     LZ 先设置前者为输入,又设置后者为 GPIO_Mode_Out_PP。
     但在输入模式下,后者是不起作用的,所以能正常输入。

2、误解。
     假如 LZ 确实把 IO 设置为输出了,
     可能 LZ 的按键输入电平,恰好与此时的输出状态相同,造成误解。

我个人不使用库函数,不知道 GPIO_Mode_Out_PP 的具体功能,所以以上判断属于猜测。

但有一点我可以肯定:ST 芯片虽然不完美,但不存在 IO 方面的错误,只能是我们自己错了。

回复 支持 反对

使用道具 举报

3

主题

2170

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5782
金钱
5782
注册时间
2013-11-22
在线时间
1212 小时
发表于 2014-12-5 18:40:02 | 显示全部楼层
IO设置成推挽后  也可以读取IO的当前状态
当前推挽输出高   读输入数据寄存器就是高      输出低   读取的就是低
回复 支持 反对

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11560
金钱
11560
注册时间
2014-4-1
在线时间
1318 小时
发表于 2014-12-5 18:43:53 | 显示全部楼层
回复【5楼】lycreturn:
---------------------------------
你这说法有问题,严重怀疑。
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-11-13
在线时间
0 小时
 楼主| 发表于 2014-12-10 09:27:52 | 显示全部楼层
回复【4楼】xuande:
---------------------------------
因为是新手,所以函数库的运行机制不清楚,操作寄存器还玩不起来.我也觉得肯定是自己的问题,不了解这个函数吧.
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2014-11-13
在线时间
0 小时
 楼主| 发表于 2014-12-10 09:28:53 | 显示全部楼层
回复【5楼】lycreturn:
---------------------------------
推挽看过说明,真的不是太明白推挽是什么意思.
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-28 02:13

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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