OpenEdv-开源电子网

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

按键实验中KEY_Scan()中输入1的时候,连按按键为什么灯不会闪烁

[复制链接]

2

主题

2

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2020-7-14
在线时间
6 小时
发表于 2020-7-21 16:56:07 | 显示全部楼层 |阅读模式
1金钱
按键实验里,主函数文件里,KEY_Scan()中如果输入0,表示不支持连按,连按按键灯只会亮一次或者灭一次,这是正常的;
但是KEY_Scan()中如果输入1,表示支持连按,这个时候连按按键会发现灯会持续亮还会变暗,我已经把最后面的delay延时增长了,结果差不多,这是为什么?求大佬指教!

最佳答案

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

你改成支持连按模式了,自然就控制不灵光了因为连按会一直返回有效,你无法准确控制按下的时间,就无法确定是奇数还是偶数,奇数就有效,偶数就相当于没按
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2020-7-21 16:56:08 | 显示全部楼层
你改成支持连按模式了,自然就控制不灵光了因为连按会一直返回有效,你无法准确控制按下的时间,就无法确定是奇数还是偶数,奇数就有效,偶数就相当于没按

回复

使用道具 举报

6

主题

412

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2704
金钱
2704
注册时间
2019-8-14
在线时间
414 小时
发表于 2020-7-21 17:45:35 | 显示全部楼层
拍个视频看看你的现象
回复

使用道具 举报

44

主题

62

帖子

1

精华

中级会员

Rank: 3Rank: 3

积分
382
金钱
382
注册时间
2013-8-31
在线时间
14 小时
发表于 2020-8-10 14:32:39 | 显示全部楼层
KEY0 和 KEY1 是低电平有效的,而 KEY_UP 是高电平有效的,并且
外部都没有上下拉电阻,所以,需要在 STM32F1 内部设置上下拉。请问下这个是什么意思?
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-7-30
在线时间
5 小时
发表于 2020-8-10 21:55:09 | 显示全部楼层
这个现象在HAL库版本程序里面会出现,在寄存器版本程序就会看到闪烁。在HAL版本程序while刚开始处加入延时函数,就可以看到闪烁。我很好奇,HAL函数版本的程序扫描速度为什么那么快,寄存器的扫描速度反而慢那么多,无法确定代码问题导致的还是芯片内部速度问题,原子哥也没说,老哥找到原因后回复我一下。
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
21
金钱
21
注册时间
2020-7-30
在线时间
5 小时
发表于 2020-8-10 22:01:42 | 显示全部楼层
supergiant 发表于 2020-8-10 14:32
KEY0 和 KEY1 是低电平有效的,而 KEY_UP 是高电平有效的,并且
外部都没有上下拉电阻,所以,需要在 STM3 ...

如果你在开发板上接上下拉电阻,就不需要在STM32内部使能上下拉,就是因为开发板没有,所以才使能内部上下拉。使能后的引脚电位跟KEY引脚的电位是一样的,如果KEY接地,引脚读取的值就是0。平时KEY是不接地的,引脚就为悬空,引脚设置为输入的时候不好读取悬空引脚电平,因此接上拉后,平时引脚读取的值为高电平,为1。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-4-30 17:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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