OpenEdv-开源电子网

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

STM32mini按键抖动问题。

[复制链接]

10

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-10-15
在线时间
4 小时
发表于 2013-7-7 09:50:45 | 显示全部楼层 |阅读模式
KEY0 KEY1设置了上拉输入,JTAG/SWD都关闭了,按键扫描程序也加了去抖,为什么实际使用的时候会出现KEY0有时候按键不灵敏,按几下才+1,KEY1相反,太灵敏,按一下加好几个

void JtagSWDSelect(void)
{
u32 temp;
temp = 0x02;  //此处修改模式
temp <<= 25;
RCC->APB2ENR |= 1<<0;     //开启辅助时钟   
AFIO->MAPR &= 0xF8FFFFFF; //清除MAPR的[26:24]
AFIO->MAPR |= temp;       //设置jtag模式
}
/* 设置按键KEY0(PA13)、KEY1(PA15) 上拉输入 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;   
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
GPIO_Init(GPIOA, &GPIO_InitStructure); 

u8 KeyScan(void)
{
static u8 KeyUp = 1;   //考虑到上拉输入松开时按键输入1,后续要用到&&运算,故设松开为1
if( KeyUp && (KEY0==0 || KEY1==0) ) //之前按键松开,且有按键按下
{
Delayms(10);
KeyUp = 0;
if(KEY0==0)
{
return 1;
}
else if(KEY1==0)
{
return 2;
}
}
else if(KEY0==0 || KEY1==0) 
{
KeyUp = 1;
}
return 0x00;
}

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

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-7-7 11:42:52 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

10

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2012-10-15
在线时间
4 小时
 楼主| 发表于 2013-7-9 10:22:08 | 显示全部楼层
回复【2楼】xouou_53320:

扫描函数明显逻辑错误了,改改

---------------------------------
参照原子写的.你觉得哪里有问题?
回复 支持 反对

使用道具 举报

头像被屏蔽

6168

主题

7036

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
19705
金钱
19705
注册时间
2012-12-27
在线时间
25 小时
发表于 2013-7-9 13:45:40 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

25

主题

683

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1351
金钱
1351
注册时间
2012-4-25
在线时间
195 小时
发表于 2013-7-9 13:48:42 | 显示全部楼层
按键最好有 扫描 方式
1-1
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-18 02:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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