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

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

[复制链接]
七哥 发布时间:2018-9-9 15:30
本帖最后由 toofree 于 2018-9-9 15:32 编辑
- l) }& \4 P  F
8 y2 |- C& [0 u* w生成电机样例程序stmcx、ioc、IAR工程. }7 Z: A; J$ S' j- O5 A

7 ?6 n0 m/ u' i1 m5 I: b7 u3 _
$ m) G- C  Q/ b" E- _8 ~本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。# B9 }/ {  O( s2 ~

9 [2 w0 e: D1 Q/ b8 n0 \打开软件MotorControl Workbench 5.0.3
0 }* x4 x) C5 f! c0 b: l* w 01.jpg
: {' U0 `/ O5 j0 K1 u4 v. D, n3 [0 Y7 c/ w# d1 z( O+ H2 Z
在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开8 H% Q7 H- r/ y
02.jpg
) _/ G5 J" S) f8 f3 P* E0 J! F; k% j" h' a/ n7 e- Y
提示关闭前保存,先选是,往下走着看看, l; M3 a- b& b% J! b1 B( _
03.jpg / s5 Y& u* X1 C) A8 [) ^
9 D1 C: X% t: Z6 U" H
保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改
# b5 w3 r7 [* E+ L 04.jpg + Q  T0 o6 L/ ?9 h' I# r& X

" y" b: ^# @) g可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。  b; _- [1 b, E
双击中间的大M,进度电机参数设置
' V6 s, i5 @7 ?/ R* g% |( c 05.jpg   @" Q  _' m* N2 C4 C4 E$ k

# |* e" K  E; `- D可以看到,样例默认设置为下图,对参数暂不做改动。3 Q* p9 J7 q3 u7 c
06.jpg
4 l2 X6 m+ b2 [5 `1 a- Y1 u+ X: b. L6 P( J. c
对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。
! K9 N0 \1 I: }# `6 y: D6 n2 H 07.jpg 9 l1 L& A. D# b) T6 J  g8 c
& k. t9 E7 I0 W! V( z; @* \1 N5 H
传感器设置,由于本实验套件没有相应外设,因此都不勾选
( r; A* Y( S7 i  Q2 V 08.jpg
. P) T8 Q- f* \! ~5 y( n/ e: V9 Q, u* ]
电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。) z; I2 c6 E6 p! r! N% G6 z
09.jpg 3 r! X0 }5 }( U; \2 {* U- B
; y0 {& O& D0 e6 d; `) q5 Q
驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改$ b5 U6 _8 }6 E
10.jpg
, ~, ]1 E- y( _; Q; M" L, E) a0 U9 A1 @2 Y% `, _' P8 K
如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图  {% {3 u  `; Y% B- Z
11.jpg
" h7 ^. |/ R+ |  r+ h; S3 o9 ^4 n; |" f5 ]9 q0 Z
对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。
+ R' |& k/ _: D& @, T4 W; \; G 12.jpg   m/ ^; n% M, ^; J: l

$ i$ T* `6 R0 X$ K# E( P双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数% d; J7 d4 ]. P, I  P- u( h' B
13.jpg " M+ s, p7 _) A: y

7 }6 Q/ i8 ~% k8 Q+ g8 Q设置输出工程类型,IDE及工具链。( n+ f. n$ c) G* z0 {% Q8 f5 a
14.jpg : A* T+ E7 }4 r& Y# ^% d

0 c7 v6 m8 q! j1 b- v- R% [可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。
4 V: M( `5 z% o/ h 15.jpg 4 h- i& z8 h+ L6 z
' \' A: {" N. U; |* J
生成工程文件。6 G1 D  e, O: Y& n$ Q( b  J$ e
16.jpg ( i2 F! b7 P0 t9 c$ C* W5 t

$ \! j+ v( M; K# @( C& m当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。9 X: x" O' ?" x
17.jpg ' o+ G: _" Z2 |

7 _+ {: C. _& [' _& I' y% L% d生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。
" A9 Y; r  e( b* g7 Y! `# h 18.jpg 4 M1 \( U2 b  m( |5 Y; b! Y

$ z9 {+ U, T, w( v; |, R! J, P0 E/ j' _% F使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。
- C# _2 R/ b6 ?: z& h( m0 z6 |  o 19.jpg
/ }1 O1 X: \- v- g4 s
% G7 U" G$ [$ Y% ]5 t如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。  s/ g5 c) U( ^) q: `9 j' B
20.jpg & N5 u- H: f- [8 ]

2 q$ z8 A9 V2 w9 l打开IAR 8.20后,找到并打开工程“Project.eww”$ y' B% M/ \1 {$ }4 L2 f+ ^
21.jpg
8 _( N" t2 B7 l; a+ o
8 c) I7 Y$ t2 H7 O! n. C把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。
1 w2 H! H# F+ c. W 22.jpg
; }0 N# P/ e3 M2 l5 d1 Z: P5 @; ]9 S3 E1 Z1 g# F' E
鼠标右键点工程,弹出菜单,选择“make”,编译工程。
  v5 P, I" u5 ]% X$ \ 23.jpg 5 z5 f# T$ x0 q( i! ]" A

% U7 K  t( X: v' A, u4 c编译完成,0错误、0警告/ n# m4 E- t6 l/ h" x: E) \& w* X
24.jpg 5 t# x1 v/ q) L0 O! m) r4 `
1 B# i% x; k1 b5 \3 \- P% u
下载并调试,或用快捷键ctrl+d/ n- I1 Y7 t: v* p8 X0 e
25.jpg
8 |* l: Z* s  H" [0 H% `8 n9 F+ {! P9 B: p9 ^, ^; F- d2 F% V
下载成功,进入调试模式,程序运行指针指向main函数开头/ I- _3 |% ]; ~; ~( w
26.jpg
. T9 k9 Y$ ?2 H1 S- M2 n8 W% a/ M# c& z
点击全速运行程序图标,或者用快捷键F5
! f/ m# J+ J$ v 27.jpg
$ A$ R: f4 m' p/ p- X2 e8 W! u( s& N5 e: D1 p1 F
打开监控窗口
/ Y3 P/ |$ q6 f  O 28.jpg 2 @0 L" K$ h/ F
0 e& }; h  c7 V- X9 n
设置相应串口参数,并连接串口. C! ~/ b# K2 P7 D: [6 l4 d
29.jpg
& U8 A$ u: g, K' E& q' X
% E% t, y6 I* Q上位机与电机目标板固件已连接! P$ {/ Q: S* O
30.jpg 1 g/ |( F" v3 A( ]9 }

9 c) v0 d7 ?. i& U9 L6 X- L8 |: K+ {点“Start motor”按钮,电机开始运行/ \. u7 {: d% j! i$ j
31.jpg
  c8 a+ U3 ~& t) M/ x( f
7 E2 T: }5 }& G* F; Z% `( V电机开始运行效果; A2 Z/ w' W* ~0 G- g' v
77.jpg
* ?. S+ d- h0 `, H; r% L
  f5 o1 a! C2 @& Y- V# ~. O; a可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。4 t& W; ^  y8 K7 @4 c! p# H- f
32.jpg / v  L( }, I0 N( V) Y
$ n) g5 y' y' `9 N$ Z: S  w- `& R) z9 G
高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。4 O+ r/ }) v$ O
33.jpg 2 P+ K: }4 I0 g: J4 w7 `: Z$ P# H

/ z, z6 _, i  y& W( s在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。5 S) A7 A! k: @' u3 B2 r
电机速度反馈错误  O8 G- p6 {) i8 o! @* e
34.jpg
% r3 b5 V8 `* ]! G  r. e/ T7 q/ u6 O8 A* T/ ?* C
电机超流错误
  s% Y2 e1 {9 n' \, ] 35.jpg
) m/ l0 J% x) F, X6 w, f" c6 J1 z
3 f( z" V4 f$ S* Z" P4 U4 G右侧按钮的操作,将会在下面的“操作改变日志”中有显示
/ C( Y. e% f0 r" r 36.jpg
: f1 W& O9 y6 i# \2 u' H1 d! z. Y1 V  T
打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。- r/ T0 \. D4 M% B( F+ Z
放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
' |+ @$ O: o# q; O 37.jpg
  y& z; W. @( @" ~+ H  [7 i8 _0 f& t0 V$ p# N* j
反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。% Q( q# j9 O2 ^8 n( V5 j! N
38.jpg 2 X1 X/ B2 S( n3 l' _! `

0 Z, p1 C& p% v& K, \, |' ^电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
2 q2 k6 s5 E- D 39.jpg
9 N/ ^& u4 e. W9 F5 k% H
9 i7 K1 l. k  y8 S- j$ |2 ]速度变大、变小,都会有反馈速度过冲
) }) e) ^, @' c9 F, W 40.jpg
. ^' C9 b) m: p, w
2 r- N- B' ]% ~5 F8 \至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。
: [+ O& p5 Q4 T  S( P
6 u: g. n$ X8 C: k
收藏 评论13 发布时间:2018-9-9 15:30

举报

13个回答
七哥 回答时间:2018-9-9 15:35:46
本帖最后由 toofree 于 2018-9-9 15:38 编辑 % V: [: P* ^2 x- i
6 I) x% V) H# P& T
按照本人惯例,本实验样例程序工程附上:
9 [, t8 U, \9 c 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
; B+ g- y9 x2 z( w4 C7 V我用的是IAR7.7,生成的工程编译没有问题
. Z, @% Q' l/ L1 }2 G. R8 K3 F; r
谢谢回复!* |6 y" l- s# N1 A7 J
我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!
3 q6 L9 A; q: c6 h环境的问题伤不起,直接换高版本,跳过
聪聪 回答时间: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:01
5 Y. P1 Q5 M4 }; X$ T这是直流电机吧,还有反馈的

- g; }; V" |$ q4 S1 v, F* {是的,三相直流无刷电机。7 O( H2 t' N* F* u/ o7 f1 ~
& i7 E. h6 d% d* j& Q
可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
gatsby32 回答时间:2019-3-6 10:57:43
老哥 为啥我的程序下载时会出现这个问题啊
7 {% n* ?7 Y( }. ?
图片7.png
七哥 回答时间:2019-3-6 11:11:56
本帖最后由 toofree 于 2019-3-6 11:22 编辑 * m# D1 T) b3 l# v
gatsby32 发表于 2019-3-6 10:57! i+ h" ]$ z2 [4 R. k  s' [# [$ w6 P
老哥 为啥我的程序下载时会出现这个问题啊

: Z5 K7 n& s  N! W. k7 j5 g" F不知道,没有工程。
  b* N2 r' X5 V$ \# _" [: V工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。2 y7 ^# b# K; }9 @
用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。! ~5 F6 x! F) @/ V3 b
lmyyjx 回答时间:2019-4-16 14:56:29
签到

所属标签

相似分享

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