本帖最后由 freeelectron 于 2018-9-2 18:17 编辑
通过任务3:主要学习电机反转指令,调用函数知道当前电机运行状态,清除报错,电机回到IDLE状态 。
代码说明:参考了论坛大佬的代码 - /* USER CODE BEGIN 1 */
- State_t sts_motor1;
- /* USER CODE END 1 */
复制代码- /* USER CODE BEGIN 2 */
- MC_ProgramSpeedRampMotor1(-3000/6,1000);//负转3000RPM
- MC_StartMotor1();
- HAL_Delay(10000);
- MC_ProgramSpeedRampMotor1(3000/6,1000);//正转3000RPM
- /* USER CODE END 2 */
复制代码- /* USER CODE BEGIN 3 */
-
- sts_motor1 = MC_GetSTMStateMotor1(); //返回 Motor 1 状态机当前的状态
- if(FAULT_OVER==sts_motor1)
- {
- MC_AcknowledgeFaultMotor1();
- }
- else
- {
- if(IDLE==sts_motor1)
- {
- MC_StartMotor1();
- MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000);//最后一次设定的速度
- }
- }
-
- }
- /* USER CODE END 3 */
复制代码
查看速度波形文件:
MC_AcknowledgeFaultMotor1(); 函数说明:应答 Motor 1 发生过的故障。用户调用这个函数前,如果电机发生了故障。电机将停留在FAULT_OVER状态,并保留故障代码。在调用了这个函数之后,状态机将清除故障代码的记录,并恢复到 IDLE 状态。
电机常用的几种状态:
|