- 通过下面的代码,是否能够得出当前电机的速度?
int leftSpeed,rightSpeed; //全局变量,放最前面
/*********************main函数之前****************************/
int getTIMx_DetaCnt(TIM_HandleTypeDef *htim)
{
int cnt;
cnt = htim->Instance->CNT - 0x7FFF;
htim->Instance->CNT = 0x7FFF;
return cnt;
}
void Get_Motor_Speed(int *leftSpeed, int *rightSpeed)
{
*leftSpeed = getTIMx_DetaCnt(&htim2);
*rightSpeed = getTIMx_DetaCnt(&htim4);
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if (htim == &htim3)
{
Get_Motor_Speed(&leftSpeed, &rightSpeed);
}
}
/***************************************************************/
/*************************main函数之内,while之前************************/
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);//启
HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);//启
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_1);//启
HAL_TIM_PWM_Start(&htim4,TIM_CHANNEL_2);//启
__HAL_TIM_CLEAR_FLAG(&htim3,TIM_FLAG_UPDATE);
HAL_TIM_Base_Start_IT(&htim3);
/*****************************************************************************/
/*****************需要测速的时候***********************/
Get_Motor_Speed(&leftSpeed, &rightSpeed);
直接使用leftSpeed、rightSpeed
/*******************************************************/
- 另外我如何能够通过这个步进电机的编码,计算出机器累计经过的距离,有什么方法可以求吗