您好,
我计划将我自己的程序合并到instaSPIN实验室提供的代码中。 我想稍微更改一下主环路结构以实现更好的集成,我需要一个建议来确保它不会导致任何未预测的行为。
让我们来看看实验6a中的一般代码结构:
void main(void)
{<<initialize
all modules>>
while (1){
//正在等待设置启用系统标志
while (!(gMotorVars.Flag_enableSys));
//启用库内部PI。 IQ现在没有参考
Ctrl_setFlag_enableSpeedCtrl(ctrlHandle, false);
//当enable系统标志为true时循环
while (gMotorVars.Flag_enableSys)
{
<<运行INSTASPIN函数>>
}
//禁用PWM
HAL_DisablePwm (halHandle);
//设置默认控制器参数(重置控制以重新识别电机)
Ctrl_setParams(ctrlHandle,&gUserParams);
gMotorVars.Flag_Run_Identify =假;
//设置SpinTAC组件
st_setupVelCtl(stHandle);
st_setupVelMove(stHandle);
}// While(1)循环结束
}// main()函数结束
我想做的更改包括:
1)删除第一个“while (!(gMotorVars.Flag_enableSys)”,它阻止代码在 Flag_enableSys被清除后继续运行-我猜它只是通过while (1)循环底部的设置说明来阻止代码空闲运行?
2)将“CTRL_setFlag_enableSpeedCtrl(ctrlHandle, false);”移到循环之前(到初始化阶段)-我计划使用Spin-TAC控制器,因此不需要重新启用此控制器
3)将"while (gMotorVars.Flag_enableSys)"循环更改为"if"语句,并将循环外部的所有内容都放置到"else (其他)"部分-它不会产生任何影响(执行第1点操作后),除非存在一些隐藏的'break (中断)语句?
感谢你的帮助。
