上期简单的测试了一下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


登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!