打印
[示例代码]

按键检测 中断中的按键检测(无松手检测,不卡程序)

[复制链接]
2344|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-3-7 08:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#define key_input  HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_3)                        // 按键输入口
#define key_state_0        0
#define key_state_1        1
#define key_state_2        2


char read_key(void)
{       
  static char key_state = 0;
        char key_press, key_return = 0;
        key_press = key_input;      // 读按键I/O电平
        switch (key_state)
        {
                case  key_state_0:  // 按键初始态
                if (!key_press)   key_state = key_state_1;   // 键被按下,状态转换到键确认态
                break;

                case  key_state_1:   // 按键确认态
                if (!key_press)
                {                                                                                      
                key_state = key_state_2;  //  按键仍按下, 状态转换到键释放态
                }
                else
                        key_state = key_state_0;  // 按键已抬起,转换到按键初始态
                break;

                case key_state_2:
                if (key_press)
                {
                        key_state = key_state_0;        //按键已释放,转换到按键初始态
                        key_return = 1;             // 按键有按下,并且已经释放,按键确认输出为“1”
                }
                        break;
                }       
  return key_return;
}


————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/abc565846881/article/details/135573108

使用特权

评论回复
沙发
yangxiaor520| | 2024-3-15 21:49 | 只看该作者
用中断做按键检查有点浪费资源。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1530

主题

14513

帖子

9

粉丝