一、根据ADC来改变电压
void pwm_proc()
{
if(lock ==0)
{
if(pattern==0) //低频模式
{if(0.0<adc2_value&&adc2_value <=1.0)
{
__HAL_TIM_SetAutoreload(&htim2,1000000/4000-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/4000 *10/100+1);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
locked_duty=10;
}
else if(1.0<adc2_value &&adc2_value<=3.0)
{
duty =37.5*adc2_value-27.5;
__HAL_TIM_SetAutoreload(&htim2,1000000/freq-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/freq *duty/100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
locked_duty=duty;
}
else if(adc2_value>3.0)
{
__HAL_TIM_SetAutoreload(&htim2,1000000/freq-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/4000 *85/100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
locked_duty=85;
}
}
else
{
if(0.0<adc2_value&&adc2_value <=1.0)
{
__HAL_TIM_SetAutoreload(&htim2,1000000/8000-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/8000 *10/100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
locked_duty=10;
}
else if(1.0<adc2_value &&adc2_value<=3.0)
{
duty =37.5*adc2_value-27.5;
__HAL_TIM_SetAutoreload(&htim2,1000000/freq-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/freq *duty/100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
locked_duty=duty;
}
else if(adc2_value>3.0)
{
__HAL_TIM_SetAutoreload(&htim2,1000000/freq-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/8000 *85/100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
locked_duty=85;
}
}
}
else
{
__HAL_TIM_SetAutoreload(&htim2,1000000/freq-1);
__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_2,1000000/freq *locked_duty/100);
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
}
volt =freq *6.28f*R/100.0f/K;
}