float get_angle_rad()
{
float encoder_angle_rad_calculate;
all_count = __HAL_TIM_GET_COUNTER(&htim3);//因为计数值4000就是一圈
encoder_angle_rad_calculate = ((float)all_count/4000.0f) * 2 * PI; //4000是编码器分辨率,结果值有溢出的可能
//限制角度在0-2PI
// if(encoder_angle_rad_calculate >= (2.0f * PI)) encoder_angle_rad_calculate -= (2.0f * PI);
// else if(encoder_angle_rad_calculate <= 0) encoder_angle_rad_calculate += (2.0f * PI);
encoder_angle_rad_calculate = fmod(encoder_angle_rad_calculate,2*PI);
return encoder_angle_rad_calculate;
}
//获取电角度:机械角度*极对数
float get_ele_angle_rad()
{
float encoder_ele_angle_rad_calculate;
encoder_ele_angle_rad_calculate = 4 * get_angle_rad();
// if(encoder_ele_angle_rad_calculate >= (2.0f * PI)) encoder_ele_angle_rad_calculate -= (2.0f * PI);
// else if(encoder_ele_angle_rad_calculate <= 0) encoder_ele_angle_rad_calculate += (2.0f * PI);
encoder_ele_angle_rad_calculate = fmod(encoder_ele_angle_rad_calculate,2*PI);
return encoder_ele_angle_rad_calculate;
}
最后还需要补充一个零点校正部分