本届赛题总体来讲难度偏简单,但仍有一些细节需要处理。
1.基本定时器6
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim -> Instance == TIM6)
{
}
}
2.波形变换的判断
//滤波处理
for(ucNum_ADC = 0; ucNum_ADC < 10; ucNum_ADC++)
{
ADC_Value_SUM += (double)ADC2_Get() * 3.3 / 4095;
HAL_Delay(10);//控制采样频率
}
ADC_Value_AVE = ADC_Value_SUM / 10;
ADC_Value_SUM = 0;
//波形判断
if(ADC_Value_AVE < V_min_Ctrl)
{
ucFlag = 1;
}
if((ADC_Value_AVE > V_min_Ctrl) && (ADC_Value_AVE < V_max_Ctrl))
{
if(ucFlag == 1)
{
ucFlag = 2;
ulSec = 0;
ucLed |= 0x01;
HAL_TIM_Base_Start_IT(&htim6);
}
}
if(ADC_Value_AVE > V_max_Ctrl)
{
ucLed &= ~0x01;
HAL_TIM_Base_Stop_IT(&htim6);
}
3.参数设置不合理的处理
case 1:
if(!ucState)
{
ucState = 1;
}
else
{
ucState = 0;
if(V_max >= (V_min + 1))
{
V_max_Ctrl = V_max;
V_min_Ctrl = V_min;
ucLed &= ~0x02;
}
else
{
V_max = V_max_Ctrl;
V_min = V_min_Ctrl;
ucLed |= 0x02;
}
}