key.c 1.03 KB
/*
 * 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 && (KEY1_read() == KEY1_DOWN || KEY2_read() == KEY2_DOWN))
  {
    osDelay(10);
    key_up = 0;
    if (KEY1_read() == KEY1_DOWN)
    {
      return KEY1;
    }
    if (KEY2_read() == KEY2_DOWN)
    {
      return KEY2;
    }
  }
  else if (KEY1_read() == KEY1_UP && 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;
//  }
//}