tpgf 发表于 2024-3-7 08:16

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

#define key_inputHAL_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)
        {
                casekey_state_0:// 按键初始态
                if (!key_press)   key_state = key_state_1;   // 键被按下,状态转换到键确认态
                break;

                casekey_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

用中断做按键检查有点浪费资源。
页: [1]
查看完整版本: 按键检测 中断中的按键检测(无松手检测,不卡程序)