stm32一个按键两种功能,不用长短按叫

八个流水灯,按一次从上往下流,再按一下所有灯熄灭,按一次又从上往下流

按键检测,按键服务函数用整形变量初值,每按一次加1,根据这个值case不同的函数,可以设置多个可限制多少次后初值复位

弄一个取反就行了,按一次取一次反

u8 state=0;
void keyscan11()//按键扫描
{
u8 i=0;
if(KEY1 == 0)//加键按下
{
delay_ms(10);//消抖
if(KEY1 == 0)
{
while(KEY1 == 0)
{}
if(state<2)////代表3种状态
state+=1;
else
state=0;
switch(state)
{
case 0:
for(i=0;i<8;i++)
{
GPIOB->BSRR=(1<<i);
delay_ms(1000);
GPIOB->BRR=(1<<i);
}
break;
case 1:GPIOB->BRR=0xff;break;
case 2:
for(i=0;i<8;i++)
{
GPIOB->BSRR=(1<<(7-i));
delay_ms(1000);
GPIOB->BRR=(1<<(7-i));
}
break;

                        }
                        
                 
            }
    }

}