|
本帖最后由 damiaa 于 2018-9-3 09:44 编辑 【STM32电机培训online】+ P-NUCLEO-IHM002电机正反转1 C1 R; F+ z* W 1,在上篇的工程代码中加入函数:: S* d. x3 F: H) Z/ C# G void task3(void)//& a% B! S+ j# Y, _- c# d- q {0 {; c8 Y! n9 ~ MCI_Handle_t* pMciHdl = GetMCI(M1);# K/ G1 S. ?- R% A" Z HAL_Delay(5000); MC_ProgramSpeedRampMotor1(3000/6,3000);3 i9 O- O Y" K1 K9 P/ U* n MC_StartMotor1();// HAL_Delay(5000);0 `* `& }$ O0 i- u4 r0 Z. G MC_ProgramSpeedRampMotor1(-3000/6,3000);( q5 q# ^# [9 j% i+ Z& j% D) r+ B uint16_t sts_motor1 = MC_GetSTMStateMotor1(); uint16_t oSTM = MC_GetOccurredFaultsMotor1(); //下面是测试的一些函数,暂时留在这里做参考用。 //uint16_t MC_GetImposedDirectionMotor1(); // MC_AcknowledgeFaultMotor1(); //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000);" d/ n5 r8 D- V //MC_ProgramSpeedRampMotor1(-3000/6, 3000);; ^( @& o8 n/ b [0 [) K // MC_StartMotor1();4 |5 k0 A y! R, b0 x5 \ while(1) {0 Y- D. s5 l$ U& `+ X 9 u& U$ n+ |; _ HAL_Delay(5000); uint32_t F_Type = MC_GetOccurredFaultsMotor1();// //if(F_Type == MC_SPEED_FDBK)/ P/ |6 J, `9 N* v+ E/ P# y, k4 [ { MC_AcknowledgeFaultMotor1();) K' i& _& b, Z //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000); MC_ProgramSpeedRampMotor1(-3000/6, 3000); MC_StartMotor1();4 J/ }2 ~! r9 \& _4 b1 C } } } 2 d$ n, J7 ]4 C 7 L+ C5 r2 u& z7 \" w 2,在main.c中前面加入:+ N2 D2 m7 J. N) W extern MCT_Handle_t* GetMCT(uint8_t bMotor);' b$ G) u j5 k L extern MCI_Handle_t * GetMCI(uint8_t bMotor); extern STM_Handle_t STM[1]; 3,在main.c中调用task3(),编译运行。 4,监测。 可以看到电机正转到3000了停下来,然后反转。& g) h% b6 ?8 |, D 如果没有MC_AcknowledgeFaultMotor1();加入,反转不了。
具体再实验加入细节。1 V" r/ e1 l4 o9 q " n' ~. f( Y$ F; e* W |
微信公众号
手机版
经验分享不错,点个赞
好的,谢谢 提醒