上期简单的测试了一下LCD和24C02。

本期介绍如何使用G431的按钮功能以及利用W24C02写入和读取数据。

从原理图中,四个按键通过上拉电阻接入PA0以及PB1~PB3,因此我们配置外部中断来检测按钮。

配置外部中断,这里不需要上拉或者下拉电阻,因为硬件上进行了上拉。

使能外部中断。


int KeyNumber;



struct Key
{
  int KeyStaute;//是否按下
  int Continuous;//是否连按
  int KeyContinueNumber;//连按统计
};
struct Key key1,key2,key3,key4;

定义一个结构体来检测是否连按并且定义四个这样子的变量。


void Key_Scan(struct Key * key,GPIO_TypeDef* GPIO_Port,uint16_t GPIO_Pin)
{
  if(!HAL_GPIO_ReadPin(GPIO_Port,GPIO_Pin))//按键拉高被拉低
  {
    if(key->KeyStaute)
    {
      key->KeyContinueNumber++;
      if(key->KeyContinueNumber>20)//长按超过1s
      {
        key->Continuous = 1;
      }
    }
    else
    {
      key->KeyStaute = 1;
    }
  }
  else
  {
    key->KeyStaute = 0;
    key->KeyContinueNumber = 0;
    key->Continuous = 0;
  }
}

定义一个函数用来检测是否按下与是否长按,这里我们将其封装成一个函数接口,将结构体和变量绑定到一起。

嘉立创PCB

还没有评论,抢个沙发!