target_pulse_count:1600 8微分 电机旋转角1.8° 正常来说1600应该是一整圈.
1.设定TIM1 通道一输出PWM占空比50%的脉冲.
2.在中断这里计算当前脉冲数值,达到目标后停止电机使能,关闭PWM输出 ,关闭定时器中断.
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim->Instance == TIM1) {
pulse_count++;
if (pulse_count >= target_pulse_count) { ;
MotorEnableCLOSE;
HAL_TIM_PWM_Stop(&htim1, TIM_CHANNEL_1);
HAL_TIM_Base_Stop_IT(&htim1);
}
}
}
3.在循环任务里延时几秒后 pulse_count清零,再开启电机使能,打开PWM输出,打开定时器中断.
实际上电机走个一二十圈就会有五六度的差异了.有大佬知道为什么吗
|