OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3759|回复: 4

新人求助,如何实现再次按下按键重新延时

[复制链接]

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2020-12-28
在线时间
32 小时
发表于 2021-3-17 15:04:23 | 显示全部楼层 |阅读模式
1金钱
刚接触stm32,想要实现一个按下按键两个led反转的功能,并且反转后会延时几秒。目前问题是如何实现再次按下按键后,让时间重新延时,比如我多次按下按键,可以使延时时间叠加。
代码如下
int main(void)
{
        vu8 key=0;
        u16 t;  
        u16 len;       
        u16 times=0;
        delay_init();                     //延时函数初始化          
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
        uart_init(115200);         //串口初始化为115200
        LED_Init();                             //LED端口初始化
        KEY_Init();          //初始化与按键连接的硬件接口
        delay_init();                     //延时函数初始化          
        LED_Init();                             //LED端口初始化
        KEY_Init();          //初始化与按键连接的硬件接口
        BEEP_Init();                 //初始化蜂鸣器端口
                                //先点亮红灯
        while(1)
        {
                LED1=0;       
                LED0=1;
                key=KEY_Scan(0);        //得到键值
                                  
                        switch(key)
                        {                                 

                                case KEY0_PRES:        //控制LED0翻转
                                        LED0=0;
                                LED1=1;
                                delay_ms(1864);
                                delay_ms(1864);
                                delay_ms(1864);
                                        break;
       
                        }
                }
        }         

最佳答案

查看完整内容[请看2#楼]

按下按键两个led反转,并且反转后会延时几秒再翻转回来,多次按下按键,可以使延时时间叠加
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

890

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1481
金钱
1481
注册时间
2020-8-19
在线时间
336 小时
发表于 2021-3-17 15:04:24 | 显示全部楼层
按下按键两个led反转,并且反转后会延时几秒再翻转回来,多次按下按键,可以使延时时间叠加

实验3 按键输入.zip

2.78 MB, 下载次数: 5

回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2020-12-28
在线时间
32 小时
 楼主| 发表于 2021-3-19 09:18:30 | 显示全部楼层
bin133 发表于 2021-3-17 15:04
按下按键两个led反转,并且反转后会延时几秒再翻转回来,多次按下按键,可以使延时时间叠加

好像不行啊大佬,并没有使延时叠加
回复

使用道具 举报

4

主题

80

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1060
金钱
1060
注册时间
2020-8-4
在线时间
248 小时
发表于 2021-3-19 09:37:36 | 显示全部楼层
定义一个变量,每次按下按键,该变量自加;再写一个翻转LED的函数,如果变量为0,则LED是一个状态,如果变量不为0,则是翻转状态,同时加入延时函数,每延时一次,变量自减,如果变量减为0,则跳过延时
回复

使用道具 举报

1

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
68
金钱
68
注册时间
2020-12-28
在线时间
32 小时
 楼主| 发表于 2021-3-26 09:17:01 | 显示全部楼层
yatt 发表于 2021-3-19 09:37
定义一个变量,每次按下按键,该变量自加;再写一个翻转LED的函数,如果变量为0,则LED是一个状态,如果变 ...

好的谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-28 01:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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