Скажем если энкодер для данного мотора активирован - проверяй позицию, если не активирован - то соответственно и проверять нечего.
можно записать так
Код
case MOT_ST_RUN:
if (mot_data[mot_num].enc_num > 0)
MOT_PositionLoop(mot_idx);
break;
if (mot_data[mot_num].enc_num > 0)
MOT_PositionLoop(mot_idx);
break;
или спрятать проверку условия в функцию
Код
void MOT_PositionLoop(uint32_t mot_num)
{
if (mot_data[mot_num].enc_num > 0)
{
}
}
{
if (mot_data[mot_num].enc_num > 0)
{
}
}
и потом
Код
case MOT_ST_RUN:
MOT_PositionLoop(mot_idx);
break;
MOT_PositionLoop(mot_idx);
break;
Вопрос как лучше?