本帖最后由 TLLED 于 2018-9-1 22:40 编辑 实验4:基于MCSDK5.0 状态的切换。一、实验内容要求如下:
二、实验代码修改:修改main.c代码,修改的部分如下(红色字体)int main(void){ /* USER CODE BEGIN 1 */ State_t ste; //定义变量 /* USER CODE END 1 */ /* MCU Configuration----------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_DAC_Init(); MX_TIM1_Init(); MX_USART2_UART_Init(); MX_MotorControl_Init(); /* Initialize interrupts */ MX_NVIC_Init(); /* USER CODE BEGIN 2 */ MC_StartMotor1(); //启动电机 HAL_Delay(1000); MC_ProgramSpeedRampMotor1(3000/6,1000); //正转3000转 HAL_Delay(10000); //延时10s MC_ProgramSpeedRampMotor1(-3000/6,1000); //反转3000转 HAL_Delay(2000); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { ste=MC_GetSTMStateMotor1(); //获取电机任务状态 if(ste==FAULT_OVER) //电机报错 { MC_AcknowledgeFaultMotor1(); //清除故障 } else if(ste == IDLE) //恢复故障后,电机负3000转运行 { MC_StartMotor1(); MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 1000); } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ //State t sts_motor1 = MCI_GetSTMStateMotor1(); //STM_GetFaultState(&STM[M1]); } /* USER CODE END 3 */}三、执行结果:
|