- cube32 PB0–PB2 PA0 → GPIO_Input,并且是上拉模式
- key_app.c :
uint8_t key_val = 0;//当前按键状态
uint8_t key_old = 0;//前一按键状态
uint8_t key_down = 0;//按下的按键
uint8_t key_up = 0;//释放的按键 - 底层key_read:
-
uint8_t key_read(void) { uint8_t temp = 0; if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0) == GPIO_PIN_RESET) { temp = 1; } if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1) == GPIO_PIN_RESET) { temp = 2; } if(HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2) == GPIO_PIN_RESET) { temp = 3; } if(HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0) == GPIO_PIN_RESET) { temp = 4; } return temp; } -
逻辑层key_proc
void key_proc(void) { key_val = key_read(); key_down = key_val & (key_old ^ key_val); key_up = ~key_val & (key_old ^ key_val); key_old = key_val; }
-