你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32电机培训online】+ P-NUCLEO-IHM002电机正反转

[复制链接]
damiaa 发布时间:2018-8-31 16:56
本帖最后由 damiaa 于 2018-9-3 09:44 编辑 + L$ J! [; M: w+ U6 ~6 L
/ {: p8 \+ E- Q* {  I% W6 V' w7 T
【STM32电机培训online】+ P-NUCLEO-IHM002电机正反转
1 O6 m- `3 _- a# j( \2 `1,在上篇的工程代码中加入函数:
1 Z+ i" n1 E( ^& O' s% O$ D( b0 qvoid task3(void)//7 q% t2 E) z7 a
{
8 ], }, C: M; W8 e) X            MCI_Handle_t* pMciHdl = GetMCI(M1);
, v. ]! x6 c9 K            HAL_Delay(5000);$ y) f5 m7 e& X7 P3 o* V6 L
            MC_ProgramSpeedRampMotor1(3000/6,3000);
) e; }& |3 k) @            MC_StartMotor1();//
% \+ k* D0 W" Q5 k/ j: C, [            HAL_Delay(5000);, N' Z  X/ _  l3 e4 I
            MC_ProgramSpeedRampMotor1(-3000/6,3000);0 ]- ], ~5 X8 s7 @2 q% Q  E, r6 a1 E
            uint16_t sts_motor1 = MC_GetSTMStateMotor1();1 s8 _5 c2 p' Q: F- S0 b! |# ^0 W
            uint16_t oSTM = MC_GetOccurredFaultsMotor1();            //下面是测试的一些函数,暂时留在这里做参考用。
6 W' [8 x5 }& o3 L3 X, o           //uint16_t MC_GetImposedDirectionMotor1();
8 u2 V' A- [) h5 s          // MC_AcknowledgeFaultMotor1();8 F: d% L# w, L  A
          //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000);
8 O" y6 j( q1 Z9 U; f7 ^0 j; F         //MC_ProgramSpeedRampMotor1(-3000/6, 3000);
5 Q' q( S5 k! ?3 v         //  MC_StartMotor1();
' Q$ ?0 N# E, I6 I        while(1)
8 o" \; y$ k: W) d) }# ~* G) b% k        {
+ g3 H- }6 @6 A0 h' r& `2 |3 b6 j" r; k3 l, ^9 q
              HAL_Delay(5000);     ; p1 X5 |8 O( f; \
             uint32_t F_Type = MC_GetOccurredFaultsMotor1();//
* F, Y9 F& p" k' f- Z              //if(F_Type == MC_SPEED_FDBK)8 t# _1 I9 K- G) I0 T+ A4 @
               {! H# G: X- w" C5 Y$ E# J; p
                     MC_AcknowledgeFaultMotor1();6 }2 Y7 V& Y2 F- S1 z+ A) l
                    //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000);
+ n" E0 b( X% \( @. }2 N1 j                    MC_ProgramSpeedRampMotor1(-3000/6, 3000);
0 e" y5 q  n5 c3 k0 q6 j& o                    MC_StartMotor1();( M& E! M" Q, L" d
               }1 Y8 q( W3 K+ a) N: H+ n4 i; @
         }
! ?1 m! n4 Y  \}        % |  Q/ G1 r* ^( V! A1 Q
/ e) ~' t' j- Z( l8 ~! W  K2 o% K

' g6 F8 u  d0 T' [2,在main.c中前面加入:- p; w) y8 H$ H, }0 W+ Q
       extern MCT_Handle_t* GetMCT(uint8_t bMotor);
/ g% ]2 S+ i& m* P       extern MCI_Handle_t * GetMCI(uint8_t bMotor);: J% i" ?$ o1 f! I
       extern STM_Handle_t STM[1];) ~" j! x: ^4 b+ ]
% Z% d5 @3 ^5 L' ]
3,在main.c中调用task3(),编译运行。
+ b/ U1 n' ]8 b( O5 ~4,监测。. r7 R4 r  ]( U  Q7 n5 [: r8 d1 v
    可以看到电机正转到3000了停下来,然后反转。3 `, _; M/ Z0 E
    如果没有MC_AcknowledgeFaultMotor1();加入,反转不了。1 W. ~2 W. ~, M6 h: L
, A+ ?! ?3 W: B, ~7 _* P
2 x3 ?& `. X7 H) y
捕获27.PNG 捕获26.PNG   N4 J/ q" }. u! [
具体再实验加入细节。# U+ J) D3 V9 _& K: b7 ?* W! A8 C

2 o, z' i9 k* J6 B2 Q; V" v1 e3 v( }2 a
% z4 X1 Y; e5 E- |+ Q2 ?5 R4 D/ m
收藏 评论2 发布时间:2018-8-31 16:56

举报

2个回答
子曰好人 回答时间:2018-8-31 17:56:40
楼主代码风格比较凌乱呀,好多注释了的代码,虽然对于经常见到代码的我们来说不是大问题,但还是希望楼主贴出比较简洁的代码,另外发帖的时候用上专门放代码的控件,这样看起来美观一点1 U* Y4 U1 W  v" O2 ?) y6 _' _7 F
经验分享不错,点个赞
damiaa 回答时间:2018-9-1 17:33:06
子曰好人 发表于 2018-8-31 17:56
3 a7 N% [) N7 O楼主代码风格比较凌乱呀,好多注释了的代码,虽然对于经常见到代码的我们来说不是大问题,但还是希望楼主贴 ...

" S1 p* z2 P  @! G8 E好的,谢谢 提醒

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版