如何用按键控制LED灯闪烁

2019-07-21 02:40发布

TIM图片20190419165913.jpg
如图,我用的是正点原子精英版的实验例程,我想改成按下KEY1,蜂鸣器响同时LED0闪烁;按下KEY0,LED1亮,LED0灭,蜂鸣器不响。但是我这个功能不能实现,就是按下KEY1,LED0不会闪烁,只会按一下灭,按一下亮;第二种的话就是使LED1闪烁,但是会陷入死循环。现在发出来的例程是死循环的。求各位大佬帮忙指点下哈。

#include "sys.h"
#include "usart.h"               
#include "delay.h"       
#include "led.h"
#include "beep.h"
#include "key.h"                  
//ALIENTEK精英STM32F103开发板 实验3
//按键输入 实验  
//技术支持:www.openedv.com
//广州市星翼电子科技有限公司           
int main(void)
{                                                                  
        u8 key;          
        Stm32_Clock_Init(9);        //系统时钟设置
        delay_init(72);                            //延时初始化
        LED_Init();                                  //初始化与LED连接的硬件接口
        BEEP_Init();                 //初始化蜂鸣器端口
        KEY_Init();                 //初始化与按键连接的硬件接口
        LED0=0;                                        //先点亮红灯
        while(1)
        {
                key=KEY_Scan(0);        //得到键值
                   if(key)
                {                                                  
                         switch(key)
                        {                                 
                                case KEY1_PRES:       
                                        while(1)
                                        {
                                                BEEP = 1;
                                                LED0 =~ LED0;
                                                delay_ms(300);
                                        }
                                case KEY0_PRES:       
                                        LED1 = 0;
                                    LED0 = 1;
                                    BEEP = 0;       
                                        break;
                        }
                }
                else delay_ms(10);
        }         
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。