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

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

[复制链接]
damiaa 发布时间:2018-8-31 16:56
本帖最后由 damiaa 于 2018-9-3 09:44 编辑
# W+ B( T9 t  @* P6 d; W- R& x
# }5 [* P( p* X& p【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);
" r( m9 a0 f: I6 H" q0 C6 `& u            MC_ProgramSpeedRampMotor1(3000/6,3000);3 i9 O- O  Y" K1 K9 P/ U* n
            MC_StartMotor1();//
/ l* t* q5 Q/ a( A: L            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();
& Y7 [  U) g- c% \# @8 {6 r. ]# z            uint16_t oSTM = MC_GetOccurredFaultsMotor1();            //下面是测试的一些函数,暂时留在这里做参考用。
) Z# e  a7 \7 I' D           //uint16_t MC_GetImposedDirectionMotor1();
3 {7 p+ b9 [7 |/ E/ n" u& t! Y. A          // MC_AcknowledgeFaultMotor1();
- l( [. J! }- W2 Q          //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)
- `' l; w1 M7 S+ A& f        {0 Y- D. s5 l$ U& `+ X
9 u& U$ n+ |; _
              HAL_Delay(5000);     
. W+ f% b( e3 T  _$ e             uint32_t F_Type = MC_GetOccurredFaultsMotor1();//
/ V! J4 b' P. w* h/ e# z4 Z              //if(F_Type == MC_SPEED_FDBK)/ P/ |6 J, `9 N* v+ E/ P# y, k4 [
               {
7 Z% M$ B& m# a# @  u7 @$ f                     MC_AcknowledgeFaultMotor1();) K' i& _& b, Z
                    //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000);
9 f0 @- P8 g0 K/ X                    MC_ProgramSpeedRampMotor1(-3000/6, 3000);
& j1 S* \, K) c7 ?+ k                    MC_StartMotor1();4 J/ }2 ~! r9 \& _4 b1 C
               }
9 p5 a  ?1 c% d3 n% u/ C5 w; z         }
! g$ ^: A+ Q" p5 i4 Q0 @}        2 d$ n, J7 ]4 C

1 \+ E) m0 q/ a) W; B- C7 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);
4 T: ?* C5 Y- e0 o( j' Z) |       extern STM_Handle_t STM[1];
2 {4 m+ T3 P  v4 V0 N# d; b6 N1 b
. ?$ l* q$ X6 H5 U* S, b" k3,在main.c中调用task3(),编译运行。
2 ~- F- e2 C1 d% b4,监测。
7 o  w3 ?- g0 U1 H    可以看到电机正转到3000了停下来,然后反转。& g) h% b6 ?8 |, D
    如果没有MC_AcknowledgeFaultMotor1();加入,反转不了。
' y( K0 }4 g" m& q3 O) [$ O5 O
" H* w$ |  n1 j, V, p" _) B
* k1 o  Q+ d2 ?- o! N& c& E 捕获27.PNG 捕获26.PNG
0 z0 Z/ k- D, w具体再实验加入细节。1 V" r/ e1 l4 o9 q

& L/ X% N8 @$ v; J. P
9 @7 ]' P: ^) e' v: F5 h# Q" n' ~. f( Y$ F; e* W
赞 收藏 评论2 发布时间:2018-8-31 16:56

举报

2个回答
子曰好人 回答时间:2018-8-31 17:56:40
楼主代码风格比较凌乱呀,好多注释了的代码,虽然对于经常见到代码的我们来说不是大问题,但还是希望楼主贴出比较简洁的代码,另外发帖的时候用上专门放代码的控件,这样看起来美观一点
. @, u7 K* Z( ]- h经验分享不错,点个赞
damiaa 回答时间:2018-9-1 17:33:06
子曰好人 发表于 2018-8-31 17:56
+ I: B; j1 h7 Q* e楼主代码风格比较凌乱呀,好多注释了的代码,虽然对于经常见到代码的我们来说不是大问题,但还是希望楼主贴 ...
$ I. T; P1 L* h7 ?# X
好的,谢谢 提醒
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版