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輸出,打開定時器中斷.
實際上電機走個一二十圈就會有五六度的差異了.有大佬知道為什么嗎
|