野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15349|回复: 6

同一个按键按一下改变一个值,三下及以上如何设置

[复制链接]
发表于 2015-10-11 17:56:28 | 显示全部楼层 |阅读模式
大神们帮帮忙啊!!!!!试了好久都没搞出来


        case E_BUTTON9:                                                                                        //LED3
                       
                                if(nine_button == S_OFF)               
                                {
                               
                                        TIM3->ARR=1999;
                                        LCD_DispStr(0,200, (uint8_t *)" 360RPM   ", BLACK);
                                        nine_button = S_ON;                                                                                                                       
}
                                else if        (nine_button == S_ON)                                                               
                                {
                                       
                                                TIM3->ARR=3999;
                                        LCD_DispStr(0,200, (uint8_t *)" 180RPM   ", BLACK);                                       
                                        nine_button = S_OFF;                                                                                                               
                                        }       
                                        else        if(nine_button == S_OFF)                                                                               
                                {
                                       
                                                TIM3->ARR=999;
                                        LCD_DispStr(0,200, (uint8_t *)" 90RPM   ", BLACK);                               
                                        nine_button = S_OFF;                                                                                                               
                                        }                         
                                even = E_NULL;
                break;   
}


这个程序前面两个转速可以来回调,可是怎么都调不到第三个转速!!!!!     如何设计可以让这三个转速来回调啊??????????????????????????
回复

使用道具 举报

发表于 2015-10-11 18:46:25 | 显示全部楼层
case :
{
       switch ()
             {
                    CASE:
             }
}
回复 支持 反对

使用道具 举报

发表于 2015-10-12 08:51:49 | 显示全部楼层
你这样只定义了两个状态,on和off,没有第三种状态。
要有三种状态,大概可以这样写:

        case E_BUTTON9:                                                                                        //LED3
                        
                                if(nine_button == 2)               
                                {
                                
                                        TIM3->ARR=1999;
                                        LCD_DispStr(0,200, (uint8_t *)" 360RPM   ", BLACK);
                                        nine_button = 0;                                                                                                                       
}
                                else if        (nine_button == 0)                                                               
                                {
                                       
                                                TIM3->ARR=3999;
                                        LCD_DispStr(0,200, (uint8_t *)" 180RPM   ", BLACK);                                       
                                        nine_button = 1;                                                                                                                
                                        }        
                                        else        if(nine_button == S_OFF)                                                                                
                                {
                                       
                                                TIM3->ARR=999;
                                        LCD_DispStr(0,200, (uint8_t *)" 90RPM   ", BLACK);                                
                                        nine_button = 2;                                                                                                                
                                        }                        
                                even = E_NULL;
                break;   
}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-10-12 19:39:04 | 显示全部楼层
flyleaf 发表于 2015-10-12 08:51
你这样只定义了两个状态,on和off,没有第三种状态。
要有三种状态,大概可以这样写:

可以的,大神好厉害。。。。。


再请教下,光标定位函数是什么啊?????
回复 支持 反对

使用道具 举报

发表于 2015-10-12 20:07:44 | 显示全部楼层
flyleaf 发表于 2015-10-12 08:51
你这样只定义了两个状态,on和off,没有第三种状态。
要有三种状态,大概可以这样写:

学习了,谢谢大神!
回复 支持 反对

使用道具 举报

发表于 2015-11-6 18:26:44 | 显示全部楼层
flyleaf 发表于 2015-10-12 08:51
你这样只定义了两个状态,on和off,没有第三种状态。
要有三种状态,大概可以这样写:

我的开发板上只有两个按键,感觉不够用。
我的问题是:检测 按键 K1连续按下2次的程序应该怎样来写?
uint8_t Key_Scan1(GPIO_TypeDef* GPIOx,u16 GPIO_Pin)
{                       
        /*检测是否有按键按下 */
        if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY1_ON )
        {          
                /*延时消抖*/
                Delay(10000);               
                if(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY1_ON )  
                {         
                        /*等待按键释放 */
                        while(GPIO_ReadInputDataBit(GPIOx,GPIO_Pin) == KEY1_ON);   
                        return         KEY1_ON;         
                }
                else
                        return KEY1_OFF;
        }
        else
                return KEY1_OFF;
}
这是检测按下2次的程序!谢谢
回复 支持 反对

使用道具 举报

发表于 2015-11-24 13:54:25 | 显示全部楼层
我好想知道你最终写这一块的整体代码,最近也在写,但是没有成功
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-27 16:33 , Processed in 0.031196 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表