硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1361|回复: 9
收起左侧

[有问必答] 按键FIFO移植问题

[复制链接]

6

主题

21

回帖

39

积分

新手上路

积分
39
发表于 2022-4-30 11:53:31 | 显示全部楼层 |阅读模式
小白求助,在按键FIFO移植问题发现一个疑惑,我现在想要  按下蓝灯亮  松手蓝灯熄灭    长按红灯亮(只要被判断是长按了,就一直红灯亮,直到松手), 问题是长按后确实红灯亮了(长按状态成功),可是马上又变成蓝灯亮了(按下状态),然后发现可以通过改变设定的时间阈值来保持(长按状态),不知道有没有什么方法可以实现只要被判断是长按了,就一直红灯亮,直到松手


                        switch (ucKeyCode)
                        {
                                case KEY_DOWN_K1:                       
                                        printf("K1¼ü°′ÏÂ\r\n");
                                  HAL_GPIO_WritePin(GPIOH,GPIO_LED_B_PIN,GPIO_PIN_SET);
                                   HAL_GPIO_WritePin(GPIOH,GPIO_LED_G_PIN,GPIO_PIN_RESET);
                                  HAL_GPIO_WritePin(GPIOH,GPIO_LED_R_PIN,GPIO_PIN_RESET);   //蓝灯亮
                                        break;


                                case KEY_UP_K1:                               
                                        printf("K1¼üμˉÆe\r\n");
                                HAL_GPIO_WritePin(GPIOH,GPIO_LED_B_PIN,GPIO_PIN_RESET);   //蓝灯熄灭
                                HAL_GPIO_WritePin(GPIOH,GPIO_LED_G_PIN,GPIO_PIN_RESET);
                                HAL_GPIO_WritePin(GPIOH,GPIO_LED_R_PIN,GPIO_PIN_RESET);   
                                        break;


                                case KEY_1_LONG:            /*K1¼ü3¤°′ */
                                        printf("K1¼ü3¤°′\r\n");
                                  HAL_GPIO_WritePin(GPIOH,GPIO_LED_R_PIN,GPIO_PIN_SET);    // 红灯熄灭
                                   HAL_GPIO_WritePin(GPIOH,GPIO_LED_B_PIN,GPIO_PIN_RESET);
                                  HAL_GPIO_WritePin(GPIOH,GPIO_LED_G_PIN,GPIO_PIN_RESET);
                               




                   bsp_SetKeyParam(KID_K1, 100, 1000);






是设定标志位吗,具体怎么设置还是有什么更适合的方法,ADC扫描读取 io 电平?





回复

使用道具 举报

1

主题

369

回帖

372

积分

高级会员

积分
372
发表于 2022-4-30 21:34:24 | 显示全部楼层
按理说硬汉哥的这个按键fifo实现你的功能不用修改啥啊
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106726
QQ
发表于 2022-5-1 06:30:14 | 显示全部楼层
image.png
回复

使用道具 举报

6

主题

21

回帖

39

积分

新手上路

积分
39
 楼主| 发表于 2022-5-1 08:28:30 | 显示全部楼层

好的谢谢,我自己再好好看看
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2023-6-19 20:22:36 | 显示全部楼层

请问怎么把长按和短按区分开呀,程序上想触发长按事件就一定会先触发短按事件,怎么才能得到长按的时候前面不触发短按呀?
回复

使用道具 举报

3

主题

18

回帖

27

积分

新手上路

积分
27
发表于 2023-6-20 16:57:34 | 显示全部楼层
2441274997 发表于 2023-6-19 20:22
请问怎么把长按和短按区分开呀,程序上想触发长按事件就一定会先触发短按事件,怎么才能得到长按的时候前 ...

兄弟你居然问出来这个违背物理常识的问题 ,长按一定会有按下的动作, 要么就弹起当成短按 ,.
回复

使用道具 举报

1

主题

7

回帖

10

积分

新手上路

积分
10
发表于 2023-6-23 20:12:02 | 显示全部楼层
2441274997 发表于 2023-6-19 20:22
请问怎么把长按和短按区分开呀,程序上想触发长按事件就一定会先触发短按事件,怎么才能得到长按的时候前 ...

不去处理按下,只处理长按和弹起,然后把弹起分为长按后的弹起与短按的弹起,不处理长按的弹起
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2023-8-19 19:15:13 | 显示全部楼层
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2023-8-19 19:16:41 | 显示全部楼层
https://github.com/530china/EmbeddedButton/tree/master
参考硬汉的fifo思想写的按键驱动,支持常见的单双多击,长按及短按长按等按键事件,有需要的可以看下
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-2 00:24 , Processed in 0.320592 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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