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

【STM32电机培训】——2、生成电机样例程序stmcx、ioc、IAR工程

[复制链接]
七哥 发布时间:2018-9-9 15:30
本帖最后由 toofree 于 2018-9-9 15:32 编辑 ' x4 i! j1 J4 B2 i3 D+ w

* _# [0 a* t! ^7 a, y9 X生成电机样例程序stmcx、ioc、IAR工程2 S* P3 r0 L7 {$ a: f

  F  X5 `) U+ J, S, o- ^, s- I/ r  L4 f  a  W
本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。
3 |' J' s6 s4 Y4 T( o5 X! u3 \/ X; t/ y0 r
打开软件MotorControl Workbench 5.0.35 Q9 {, K( M2 |  T3 ~) o. _5 v. X
01.jpg
3 D2 ^# N; S9 \
& q: H  f9 |, v在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开5 ~, E3 `0 r5 [$ ?
02.jpg
) s; o0 o8 L6 f6 B
6 ^( _  F0 i. C0 _$ f6 i+ T# c+ ?) X* ^提示关闭前保存,先选是,往下走着看看
+ r; w  {" O- M) \# y8 P5 r 03.jpg
1 w  B' n$ @& }6 X. s! Q9 J% t+ g. d7 f. F  Q7 m7 O
保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改/ M, _8 N4 ^/ j( S+ _& W
04.jpg   q, y! j& {; v1 N2 r) Y
4 L5 n$ l* Q3 L2 d+ h2 d+ f+ m4 e
可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。. ?, [; p6 W9 F. ^
双击中间的大M,进度电机参数设置
+ q- c2 l! u3 S! ]9 M 05.jpg
8 W4 K, M6 V# X: }1 }  ^
. o2 k9 `7 y+ ?9 l可以看到,样例默认设置为下图,对参数暂不做改动。
! C5 S3 z- ~: s- m/ R2 q0 y 06.jpg
+ p6 n/ z! T' n7 U) O. t- O7 ^( x
4 I& i" u/ ?* e' A- K对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。
2 v' H' ~: _6 r$ @) u  Y 07.jpg / P% U+ T8 n/ O$ A

* w7 ~* V4 B7 h9 x0 c传感器设置,由于本实验套件没有相应外设,因此都不勾选# d+ J/ H" H. j
08.jpg 8 S0 x# v7 @0 w  m1 r* S) q5 S

4 D9 q" v; l# [& d8 c: O电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。
3 c5 D& m, A: h* b' Z5 b/ g/ n 09.jpg ( z) l( H+ K# G1 D5 o" j; _
  I& q- |  @0 l2 w8 [, w
驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改
7 ?7 B7 v: _0 C* q$ S7 }" _" @, Z- W 10.jpg 7 s1 E5 Z# E# v; x) ?4 g* L4 u

+ [+ _4 f( @* e7 c: O& K如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图
7 x3 S* d+ h! ]( W4 |! g0 W 11.jpg
7 J# F) D) L  |4 ^. P$ A7 {, G: K+ k6 c9 ~( N/ ^) D- C
对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。
4 e/ j' ?% s6 q0 { 12.jpg 2 ~7 S7 I9 i2 X4 F: G

3 j8 |% {( @% D* j9 R双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数- o4 ?+ G6 B' A  c. i+ |
13.jpg * L5 ^* M& E+ i7 `6 Z' \

9 @+ A, @9 P: [设置输出工程类型,IDE及工具链。; X$ g+ k5 A. d' A
14.jpg : }* [, [( h: X

6 {4 z8 T* m. j* O5 R' N可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。6 j; }) W, E5 J, n# @
15.jpg
9 d2 `/ V& M' K2 k2 p4 i1 q2 J: L7 ~, x' Z% o- T
生成工程文件。- O+ G7 W7 X' ?1 g8 a! N7 U% X
16.jpg * |3 C+ O5 G) Q6 S& U: M% q4 m" l

8 i8 ?2 E* }3 l2 S; I$ X- t+ A' _当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。8 V0 V4 ?! V+ p2 ^. v) f$ U2 L7 g
17.jpg
4 n- e& z( c2 E& c% x! J% g! @
5 u* Q0 q/ I) D0 b" Z% F生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。
- C' Y8 b9 v0 B$ x 18.jpg
, t6 a; S% @, |7 }
; E5 ?  n- m+ O3 Q使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。
( {8 j8 p: s4 k+ A- Q: V 19.jpg
! n/ N, f3 L4 s
8 p1 [3 {& {" u- l如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。
" h0 l9 T3 i' j: ` 20.jpg   O" _/ }  }. v* q

+ f0 Y3 n" y% n3 E# ?& _$ p$ q打开IAR 8.20后,找到并打开工程“Project.eww”
* z& ~, l1 C" c" X# P 21.jpg
( U: q- u5 Q9 W
7 B. q$ ]9 A8 W; e; K把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。
! }1 `& W. X) F' i: \  h 22.jpg * L" q2 K2 U; o. L/ g+ w2 y0 Y( e
9 p  g$ O7 U4 A( a5 v+ U
鼠标右键点工程,弹出菜单,选择“make”,编译工程。$ v; p$ O5 _0 l1 Z. }
23.jpg ) V, y% O. @9 ]) F* h

9 z+ m7 h/ I1 k  {7 I1 r6 d编译完成,0错误、0警告
/ G. _+ ~& a; a, ~8 l6 R2 I 24.jpg
0 D( r  I- n* j' B& _( u; |3 S" \( [. ^7 u; X5 q
下载并调试,或用快捷键ctrl+d
2 H% o9 \. I' p. d 25.jpg 5 v, u7 j& E+ M4 I6 \1 A

8 x  }1 l# p, n6 M. w下载成功,进入调试模式,程序运行指针指向main函数开头
9 D+ ]# \* ]5 l% \+ O! i, k) D5 X 26.jpg 5 \5 A4 |5 c0 `! |* ?4 b2 Q( Y
( ?7 |0 Q1 [: W- w2 H7 ?
点击全速运行程序图标,或者用快捷键F51 H8 y% {" {  d0 k
27.jpg 8 C- k! b9 U. Q+ V% V) H

8 L! [8 t1 ^+ x. V打开监控窗口
  Q. W; L" @5 Z& S4 }/ x 28.jpg
8 w/ z3 p8 j: O: i
8 W) Y# ]. c9 o& v+ E( M设置相应串口参数,并连接串口
" l2 [+ X/ f6 J 29.jpg - p* y/ f! x# G' A) e0 i3 S

# S/ g5 e( r* `: o/ b& \上位机与电机目标板固件已连接" }1 U5 S3 E. ?3 H0 B
30.jpg
! O% w  `! @9 E/ ~. j4 N5 y5 }
2 o9 [; C  R4 x/ V+ t, h* e% a点“Start motor”按钮,电机开始运行
- C1 j) ~$ W5 U 31.jpg
, `6 T. K! f: D7 E5 D# U1 l7 a+ u: {5 t# l
电机开始运行效果4 u7 [- o; z/ N4 n: @- A3 V
77.jpg
& A+ |3 [/ R8 e/ l: R3 y" {$ r; F& S3 I7 m7 \; V2 T, \
可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。
9 h6 {- G2 G* x  Q# z6 m& m 32.jpg
3 |0 z8 o, ~1 C8 {
& f6 u- `6 j0 |- D高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。
6 r& I4 w  M: q! E  L2 X 33.jpg
" h4 C# S9 L4 K
- E  }* T: J# ]2 c3 W* r在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。3 I+ l" f# i. K' a4 V$ ]
电机速度反馈错误
! {& P* ~3 s  h3 B. C 34.jpg 9 G! p/ l( n5 C3 b$ x- a

# d* z+ B; }9 W  x% [! Q  d电机超流错误) G# b/ N: Z6 Y- \: [0 w# z) k
35.jpg ( ~, ~0 f. e" @
+ x: Y6 Q/ |$ S8 _
右侧按钮的操作,将会在下面的“操作改变日志”中有显示- Q9 Y" b9 ~/ L) x5 p
36.jpg
+ j/ _. u8 I5 q" b& ~( \. X+ }: B5 z0 C. L
打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。
8 W0 `# ^( A  @* l# L9 E8 I  r1 O放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
3 S; g6 u8 h% I: R8 \/ G 37.jpg + t; l- \6 @' O& i9 z* a; n) f

% s2 Y+ v+ P; m+ |0 k; v反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。7 H3 j+ j; E+ I: v
38.jpg 0 C0 X6 p- ~: i: j

* H/ n9 g% c  `5 Y$ q3 U0 F" A0 _电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
; o7 G( o" i# }0 o7 J1 X4 R4 V 39.jpg , O' L: y4 ?  |( }( r
% u2 |/ x! H+ ?, u: ?, Y+ ?. Q* u4 v2 g
速度变大、变小,都会有反馈速度过冲8 U% ?+ @6 j2 O. O
40.jpg
/ A% z- W5 R: {3 p
- A) |7 Y  j* C- K; X至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。
) V) W& ?4 \, c" A5 O% L4 u
- U5 U+ W  M- T; F3 E+ y; U
收藏 评论13 发布时间:2018-9-9 15:30

举报

13个回答
七哥 回答时间:2018-9-9 15:35:46
本帖最后由 toofree 于 2018-9-9 15:38 编辑
5 b$ \4 c2 G2 _% g- _$ t
9 V+ C% S2 x7 z4 j  y; O按照本人惯例,本实验样例程序工程附上:
' K9 d7 k# _0 X( P) i P-NUCLEO-IHM001.rar (8.98 MB, 下载次数: 1603)
vnicehuai 回答时间:2018-9-9 20:06:02
签到
vnicehuai 回答时间:2018-9-9 20:06:29
签到
vnicehuai 回答时间:2018-9-9 20:07:01
签到
vnicehuai 回答时间:2018-9-9 20:07:17
签到
子曰好人 回答时间:2018-9-9 22:08:16
我用的是IAR7.7,生成的工程编译没有问题
七哥 回答时间:2018-9-9 22:32:51
子曰好人 发表于 2018-9-9 22:08( w0 ?# b9 e: r
我用的是IAR7.7,生成的工程编译没有问题
" @9 z' I% P7 x2 @8 A
谢谢回复!
; d( ]$ P' f" i# B: @! W7 d$ i- t我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!
& _2 G' k3 N! h$ s# N/ }环境的问题伤不起,直接换高版本,跳过
聪聪 回答时间:2018-9-13 11:01:14
这是直流电机吧,还有反馈的
聪聪 回答时间:2018-9-13 11:02:20
MotorControl Workbench 5.0.3适合调步进电机吗,特别是加减速的问题
七哥 回答时间:2018-9-13 12:41:04
聪神聪 发表于 2018-9-13 11:018 Y3 X2 ]0 s: R+ V7 c7 e1 [# u
这是直流电机吧,还有反馈的
* G5 C. ]! r1 i& _* D% g' ]
是的,三相直流无刷电机。
. W, U- Q, m3 z- k
" f" W, P- t+ Q7 e可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
gatsby32 回答时间:2019-3-6 10:57:43
老哥 为啥我的程序下载时会出现这个问题啊
! W+ ]+ ?% l+ t" W" u8 j  K; K
图片7.png
七哥 回答时间:2019-3-6 11:11:56
本帖最后由 toofree 于 2019-3-6 11:22 编辑
( |2 O2 M5 B- w% L+ U: k+ a
gatsby32 发表于 2019-3-6 10:57
  X2 c5 z, S+ t: N$ |老哥 为啥我的程序下载时会出现这个问题啊

- G/ W5 O- q( [  i9 Z8 q9 T, ?, @' {5 e不知道,没有工程。
( @3 L- \+ M3 k8 [% I; j# \工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。! O7 _2 n8 c) X( G0 S0 v
用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。
' ~3 Y" D- }* j2 k! b. M& c
lmyyjx 回答时间:2019-4-16 14:56:29
签到

所属标签

相似分享

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