蓝桥杯嵌入式按键配置

  1. cube32 PB0–PB2 PA0 → GPIO_Input,并且是上拉模式
  2. key_app.c :
    uint8_t key_val = 0;//当前按键状态
    uint8_t key_old = 0;//前一按键状态
    uint8_t key_down = 0;//按下的按键
    uint8_t key_up = 0;//释放的按键
  3. 底层key_read:
    1. 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;
      
      }
      
    2. 逻辑层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;
      }