怎么处理按键和while循环呀?

2019-07-20 14:12发布

使用F4开发板,想做一个,按K1键后LED1键,间隔闪烁,按K2键后,LED2间隔闪烁,但是在处理按键后,闪烁的时候,在while(1)里面循环一直不出来了,并且写入k2键按下跳出的判断也没有用,我要怎么去实现呢?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
34条回答
Sun_Fly
1楼-- · 2019-07-23 20:25
假如爱有天意123 发表于 2017-6-1 15:51
确实是使用else if就可以了,但是我要怎么才能做到,按k1键的时候led1灯闪烁,按k2键的时候只有led2灯闪 ...

是应为你去掉了break,不是应为加了else if
K1 K2做成中断,有中断就置1,对应不同的if语句
安尚科技
2楼-- · 2019-07-24 02:10
假如爱有天意123 发表于 2017-6-1 16:06
灯亮,灯的关闭,我都是在另一个.c文件里面写的,并且你看上面的图,我加的有定时器,但是在循环里面我在 ...

哈哈,思路不对。
给你个例程自己研究吧


        key+=KEY_Scan(0);
        switch(key)
        {
                case 0:关闭小灯;key+=1;break;
                case 1:执行灯亮函数1;break;
                case 2:关闭小灯;key+=1;break;
                case 3:执行灯亮函数2;break;
                case 4:关闭小灯;key+=1;break;
                case 5:执行灯亮函数3;break;
                case 6:关闭小灯;key+=1;break;
                case 7:执行灯亮函数4;break;
                case 8:关闭小灯;key=0;break;
                default :break;
        }

//下面为定时器延时500ms图片变化的函数,可以改为小灯


void HP6_BMP(u8 x,u8 y)
{
        if(delay_hp6>999)
                {
                        delay_hp6=0;
                        OLED_DisplayBMP(x,y,40,40,HP6[0]);
                       
                }
                        else if(delay_hp6>499&&delay_hp6<1000)
                {
                        OLED_DisplayBMP(x,y,40,40,HP6[1]);
                               
                }
OLED_Refresh_Gram();//刷新OLED屏用的
}
假如爱有天意123
3楼-- · 2019-07-24 06:12
 精彩回答 2  元偷偷看……
l68715553
4楼-- · 2019-07-24 06:43
goto:
Sun_Fly
5楼-- · 2019-07-24 07:36
假如爱有天意123 发表于 2017-6-2 09:34
为什么我这个判断死循环没有用呢?进入死循环后就出不来了

无语了,去掉while(1),把整个if括到while里面  你C语言没学好,谁教你的
假如爱有天意123
6楼-- · 2019-07-24 13:14
 精彩回答 2  元偷偷看……

一周热门 更多>