烧写后,是8种颜色循环变换,重置后,要按两下按键,8种颜色才能循环变换

三色灯烧写后,开始的时候是隔三秒变换一种颜色,按下蓝色按键重置后,一直是白色,要按两下两下黑色按键,颜色才开始循环变化,这是什么原因
有什么解决办法??👀

img


img

!: 代表值得取反,对于整形变量,只要不为0,使用 ! 取反都是0,0取反就是1。就像 bool 只有真假一样。你的flag怎么还判断出-1了?

白光是由于三色全部点亮导致的,逻辑再检查检查

代码先贴全,不然没法分析。

1.代码是二楼这个吧,没看懂里面有中断还有串口
2.灯是怎么连接的,有说明吗

把color判断从if(flag==1)中拿出来试试看

while(1)
{
    if(KEY1 == 0)
    {
        DelayMs(60);
        if(KEY1 == 0)
        {
            flag = !flag; 
          
            BUZZER_ON();
            DelayMs(1000);
            BUZZER_OFF();
        }
        
    }
    
    if(flag == 1)  
    {
        if(RGBCount > 3000)  
        {
            RGBCount = 0;
            
            RGBState(); 
    }
    
    switch(color)
    {
        case 1:
            DATA_IO1 = 1;DATA_IO2 = 1;DATA_IO3 = 1;
            OledClear();
            OledSprintf(1,1,"白色");
            OledSprintf(3,1,"R-1,G-1,B-1");
        break;
        case 2:
        .....后面的不变
    }    
    
    ....后面的不变
}