主要的结构就是先软件消抖识别按下的按键是哪个,然后如果在按下的状态就计时,松开的时候检测计时的多少来判断长短按
#define key1 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_0)
#define key2 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_1)
#define key3 HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_2)
#define key4 HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_0)
int KEY_READ(void) //普通延时判断按键,总共四个按键
{
if(!key1||!key2||!key3||!key4)
{
HAL_Delay(10);
if(!key1)
{
return 1;
}
else if(!key2)
{
return 2;
}
else if(!key3)
{
return 3;
}
else if(!key4)
{
return 4;
}
}
return 0;
}
void key_ls() //按键长短检测
{
static int key_state=0;
key_state=KEY_READ();
sprintf(buf1," No 1 %d ",key_state);
LCD_DisplayStringLine(Line1, (uint8_t *)buf1);
static int count=0;
//////////////////////////////////长按程序会不断执行
if(key_state!=0) //如果有按键按下,就不
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



