第十三届蓝桥杯国赛复盘

问题1——按键延时

按键长按两秒才有反应,而题目给出的时间是1s.

if (Key_Old == 4)
    {
    
    
        B4_time += 10;
        if (B4_flag == 1)
        {
    
    
            if (B4_time > 150)
            {
    
    
                B4_flag = 0;
                B4_time = 0;
                //长按操作
                if (lcd_flag == 3)
                    if (lcd_adc_flag == 1)
                    {
    
    
                        PA5_num = 0;
                        PA5_max = 0;
                        PA5_min = 0;
                        PA5_h = 0;
						memset(PA5_sum,0,100*sizeof(u8));

                    }
                    else if (lcd_adc_flag == 0)
                    {
    
    
                        PA4_num = 0;
                        PA4_max = 0;
                        PA4_min = 0;
                        PA4_h = 0;
						memset(PA4_sum,0,100*sizeof(u8));
                    }
            }
        }
    }

    if (Key_Down == 0 && Key_Old == 0)
    {
    
    
        if (B4_time > 0 && B4_time < 70)
        {
    
    
            //短按操作
            if (lcd_flag == 1)
                adc_flag = 1;
            else if (lcd_flag == 2)
                pwm_oc_flag ^= 1;
            else if (lcd_flag == 3)
                lcd_adc_flag ^= 1;
        }
        B4_time = 0;
        B4_flag = 1;
    }

确实,0-70与t>150之间的间隔太大了。。。
应该改成100才对。

问题2——平均数计算

 if (PA5_num == 0)
        {
    
    
            PA5_max = PA5_val;
            PA5_min = PA5_val;
            PA5_h = PA5_val;
        }
        else
        {
    
    
            if (PA5_val > PA5_max) PA5_max = PA5_val;
            if (PA5_val < PA5_min) PA5_min = PA5_val;
            for (i = 0; i < PA5_num; i++)
            {
    
    
                PA5_sum_all += PA5_sum[i];
            }
            PA5_h = PA5_sum_all / PA5_num;
        }
        if (PA5_num ++ > 100) PA5_num = 0;

else后面的for循环里面,应该是i <= PA5_num ,不然每次相加都会少最后一次记录的数值。

总结

多注意细节!!!!!!!!!

猜你喜欢

转载自blog.csdn.net/weixin_55374353/article/details/128104370