按键编程记录 | 创建于2025/12/15
说明:记录下遇到的按键使用方法
大体思想都是通用的
最常见的阻塞软件延时
这个是参考正点原子的
// 宏定义 获取按键1对应IO口的电平 #define KEY1_LEVEL HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) #define KEY2_LEVEL HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_1) uint8_t Key_GetNum(void) { static uint8_t key_up = 1; // 按键抬起标志位 uint8_t key_num = 0xff; // 返回的键值,默认0xff if(key_up && (KEY1_LEVEL || KEY2_LEVEL)) { delay_ms(20); // 消抖时间20ms key_up = 0; // 按键抬起标志位置0,认为按键已按下 // 再度检测引脚电平 if(KEY1_LEVEL) key_num = 1; if(KEY2_LEVEL) key_num = 2; } else if(!KEY1_LEVEL && !KEY2_LEVEL) { key_up = 1; // 若按键都没按下,标志位解锁 } return key_num; // 返回键值 }