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

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

[复制链接]
damiaa 发布时间:2018-8-31 16:56
本帖最后由 damiaa 于 2018-9-3 09:44 编辑 7 @) e& q) b" Y/ _* p8 p1 t  A

0 H3 A$ L+ T* Z* \! D【STM32电机培训online】+ P-NUCLEO-IHM002电机正反转" F9 y0 d& r2 b
1,在上篇的工程代码中加入函数:% R2 ~( ]+ ?9 Y- [
void task3(void)//% g! T. h$ J% Z1 m' d
{
0 r5 Q% u" E2 _, s, `7 Q            MCI_Handle_t* pMciHdl = GetMCI(M1);& C7 }) E0 A+ W4 b
            HAL_Delay(5000);, s9 z, u4 R/ s4 J. k0 M
            MC_ProgramSpeedRampMotor1(3000/6,3000);
5 n2 q- J5 F: k% T3 s            MC_StartMotor1();//
1 P! _6 u8 P6 D            HAL_Delay(5000);1 o  Q6 y7 ]. Q/ |5 [  P. \! H
            MC_ProgramSpeedRampMotor1(-3000/6,3000);2 t, D8 Q. q& O0 @* T. w- A$ L
            uint16_t sts_motor1 = MC_GetSTMStateMotor1();
/ [7 m- r" ~2 d1 p, [* B. [            uint16_t oSTM = MC_GetOccurredFaultsMotor1();            //下面是测试的一些函数,暂时留在这里做参考用。
# s2 |4 v5 e2 n3 J1 |: I2 w! o- w           //uint16_t MC_GetImposedDirectionMotor1(); 7 r2 \6 w+ i$ _6 B5 _* M5 a. ?4 j
          // MC_AcknowledgeFaultMotor1();5 `6 H6 X: I9 `4 z
          //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000);
  D  [4 B% N0 y/ T; {         //MC_ProgramSpeedRampMotor1(-3000/6, 3000);
) c6 q+ i- O1 D( }- f( b* H! Z$ N         //  MC_StartMotor1();! X7 w: k6 G) g( l
        while(1)
; D0 R3 B' W0 p! ]0 G+ b8 {* T* `        {9 s0 z: Q) f* Y  V

5 s  n1 W  `9 E; L/ u              HAL_Delay(5000);     
. b" i) Y$ u$ [# |( L             uint32_t F_Type = MC_GetOccurredFaultsMotor1();//9 a( l3 c- W7 W8 T6 E0 T. \
              //if(F_Type == MC_SPEED_FDBK); Y& }% ?: x$ V8 U; P
               {- _' I3 J8 `3 n. Q' n! K0 m
                     MC_AcknowledgeFaultMotor1();* G7 g2 k1 x1 I* n+ n. S
                    //MC_ProgramSpeedRampMotor1(MC_GetLastRampFinalSpeedMotor1(), 3000);6 Q' R  J( S, B
                    MC_ProgramSpeedRampMotor1(-3000/6, 3000);' c( G6 k% Z: b8 }4 [5 ?
                    MC_StartMotor1();
7 u% q* a' w6 }/ j! l& c: ~               }( M1 n2 `5 P, s) b0 [6 V+ w$ k
         }  h2 `$ \1 Y! j  m4 K6 j
}        * p4 T  q8 r; o+ \
' \0 K* z+ U0 ?  e. l
1 @. X6 S& M/ _0 y( W+ u
2,在main.c中前面加入:% y. u# v; c# p+ ^% `' _
       extern MCT_Handle_t* GetMCT(uint8_t bMotor);
8 Y( Z3 P' y7 L" q9 q* }* v       extern MCI_Handle_t * GetMCI(uint8_t bMotor);$ A: y% p% Z. R9 v/ c
       extern STM_Handle_t STM[1];
) {3 V2 \& c7 m5 Z# x2 y
0 n. G( c6 f! J0 _/ @/ @$ _3,在main.c中调用task3(),编译运行。7 \$ _9 c8 j. M; x5 Q( l; V" E
4,监测。
- P7 a7 N- R( d, y/ j# S7 O' P    可以看到电机正转到3000了停下来,然后反转。
8 h* {; I4 ^$ o" T7 R% H    如果没有MC_AcknowledgeFaultMotor1();加入,反转不了。
3 D9 `" O: z9 T# K" {" N% R5 U; `7 X1 V9 ]/ \1 u

% G% F/ D/ W% K% ?3 w4 j, \& i9 d 捕获27.PNG 捕获26.PNG 4 D8 a' e$ Z9 t
具体再实验加入细节。, C# p. i8 h4 C+ s& u
0 g  M( B; s, T4 f
4 N, n4 Y- Y2 y6 ~" p
( h! }4 a6 ~! K" R$ F- h
收藏 评论2 发布时间:2018-8-31 16:56

举报

2个回答
子曰好人 回答时间:2018-8-31 17:56:40
楼主代码风格比较凌乱呀,好多注释了的代码,虽然对于经常见到代码的我们来说不是大问题,但还是希望楼主贴出比较简洁的代码,另外发帖的时候用上专门放代码的控件,这样看起来美观一点
& ]# S" ^2 s8 ^1 |# m经验分享不错,点个赞
damiaa 回答时间:2018-9-1 17:33:06
子曰好人 发表于 2018-8-31 17:56" |8 y( S/ Z, ~  |
楼主代码风格比较凌乱呀,好多注释了的代码,虽然对于经常见到代码的我们来说不是大问题,但还是希望楼主贴 ...

3 W% Z8 C' @' [- g% _6 y- k好的,谢谢 提醒

所属标签

相似分享

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