
本帖最后由 damiaa 于 2018-9-3 09:44 编辑 【STM32电机培训online】+ P-NUCLEO-IHM002电机正反转 1,在上篇的工程代码中加入函数: void task3(void)// { MCI_Handle_t* pMciHdl = GetMCI(M1); HAL_Delay(5000); MC_ProgramSpeedRampMotor1(3000/6,3000); MC_StartMotor1();// HAL_Delay(5000); MC_ProgramSpeedRampMotor1(-3000/6,3000); uint16_t sts_motor1 = MC_GetSTMStateMotor1(); uint16_t oSTM = MC_GetOccurredFaultsMotor1(); //下面是测试的一些函数,暂时留在这里做参考用。 //uint16_t MC_GetImposedDirectionMotor1(); // MC_AcknowledgeFaultMotor1(); //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000); //MC_ProgramSpeedRampMotor1(-3000/6, 3000); // MC_StartMotor1(); while(1) { HAL_Delay(5000); uint32_t F_Type = MC_GetOccurredFaultsMotor1();// //if(F_Type == MC_SPEED_FDBK) { MC_AcknowledgeFaultMotor1(); //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000); MC_ProgramSpeedRampMotor1(-3000/6, 3000); MC_StartMotor1(); } } } 2,在main.c中前面加入: extern MCT_Handle_t* GetMCT(uint8_t bMotor); extern MCI_Handle_t * GetMCI(uint8_t bMotor); extern STM_Handle_t STM[1]; 3,在main.c中调用task3(),编译运行。 4,监测。 可以看到电机正转到3000了停下来,然后反转。 如果没有MC_AcknowledgeFaultMotor1();加入,反转不了。 ![]() ![]() 具体再实验加入细节。 |
经验分享不错,点个赞
好的,谢谢 提醒