问题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
,不然每次相加都会少最后一次记录的数值。
总结
多注意细节!!!!!!!!!