stm32f103 GPIO输入 问题

问题遇到的现象和发生背景

用按键扫描用注释掉的那一段时板子没有任何效果,,求解释

问题相关代码,请勿粘贴截图

int main ()
{
    vu8 key=0;
    LED_Init();
    KEY_Init ();
    while(1)
    {
        key=KEY_Scan(0);

////////////////////////////////////////        if(key==KEY0_PRES)
////////////////////////////////////////        {
////////////////////////////////////////            LED0=!LED0;
////////////////////////////////////////        }
////////////////////////////////////////        else if(key==KEY1_PRES)
////////////////////////////////////////        {
////////////////////////////////////////            LED1=!LED1;
////////////////////////////////////////        }
////////////////////////////////////////        else if(key==WKUP_PRES)
////////////////////////////////////////        {
////////////////////////////////////////            LED1=!LED1;
////////////////////////////////////////            LED0=!LED0;
////////////////////////////////////////        }                   没效果
    
        delay_ms(1000);
        
        if(key)
        {
            switch (key)
            {
                case KEY0_PRES: LED0=!LED0;                break; 
                case KEY1_PRES: LED1=!LED1;             break; 
                case WKUP_PRES: LED0=!LED0;LED1=!LED1;  break; 
                case      0   :  LED0=0;                break;
            }
        
        }else delay_ms(10);


    }
}

也就是换成下面这一段按键没有反应


#include "stm32f10x.h"
#include "KEY.h"
#include "led.h"
#include "sys.h"
#include "delay.h"
#include "sys.h"

int main ()
{
    vu8 key=0;
    LED_Init();
    KEY_Init ();
    while(1)
    {
        key=KEY_Scan(0);

        if(key==KEY0_PRES)
        {
            LED0=!LED0;
        }
        else if(key==KEY1_PRES)
        {
            LED1=!LED1;
        }
        else if(key==WKUP_PRES)
        {
            LED1=!LED1;
            LED0=!LED0;
        }                   
    delay_ms(10);
        
////////////////        if(key)
////////////////        {
////////////////            switch (key)
////////////////            {
////////////////                case KEY0_PRES: LED0=!LED0;                break; 
////////////////                case KEY1_PRES: LED1=!LED1;             break; 
////////////////                case WKUP_PRES: LED0=!LED0;LED1=!LED1;  break; 
////////////////                case      0   :  LED0=0;                break;
////////////////            }
////////////////        
////////////////        }else delay_ms(10);


    }
}
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

是不是没有delay,导致LED变化太快,肉眼看不过来