key.c 901 Bytes
/*
 * key.c
 *
 *  Created on: Oct 28, 2019
 *      Author: Yasin
 */

/* Includes ------------------------------------------------------------------*/
#include "key.h"
#include "led.h"
#include "cmsis_os.h"

/**
 * 按键处理函数
 * @param mode 0 - 连续触发           1 - 不连续触发
 */
uint8_t KEY_Scan(uint8_t mode)
{
  static uint8_t key_up = 1;
  if (mode)
  {
    key_up = 1;
  }
  if (key_up && KEY2_read() == KEY2_DOWN)
  {
    osDelay(10);
    key_up = 0;
    if (KEY2_read() == KEY2_DOWN)
    {
      return 1;
    }
  }
  else if (KEY2_read() == KEY2_UP)
  {
    key_up = 1;
  }

  return 0;
}

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  switch (GPIO_Pin) {
    case GPIO_PIN_8:
      osDelay(30);
      if (KEY1_read() == KEY1_DOWN)
      {
        ledState++;
      }
      break;
    default:
      break;
  }
}