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

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

[复制链接]
七哥 发布时间:2018-9-9 15:30
本帖最后由 toofree 于 2018-9-9 15:32 编辑 : g" Z2 v9 C- Z& d
- ]- S1 m! I4 E. z# m( v' ^# A
生成电机样例程序stmcx、ioc、IAR工程
( H. B5 n6 P+ A% c, a5 F7 v1 u
7 t) T# \! Y) D/ b8 y+ U7 j
3 w- @, G  [* t: {本贴目的是,对于电机控制还处于两眼一抹黑的情况下,先跑个套路,从直观上对MotorControl Workbench 5.0.3软件及开发过程有个了解。
8 Y; b2 o$ d' Z1 w  j5 P' E
- T# S+ j: s' b8 ^: K打开软件MotorControl Workbench 5.0.3+ h- I* @1 V) _( n7 N
01.jpg - N$ E4 V* s, h; F# Y

/ [9 S3 v6 T: z在样例工程列表中,找到P-NUCLEO-IHM001-BullRunning样例,并双击打开
: O# r: W: J: e- u 02.jpg
2 F7 r* w& K# n. \4 i, x, F; K
% i4 L8 O5 \# @8 l8 e, k提示关闭前保存,先选是,往下走着看看8 k: ?2 `9 C7 k3 |0 ?8 e
03.jpg * g' f' W* m  l+ q7 _& E) r& z8 W

$ c+ d7 d: H! `9 W4 R) G* T保存工程中,按默认名称“SDK50x-P-NUCLEO-IHM001-BullRunning.stmcx”,先不做修改/ W( o4 t- q1 v9 o
04.jpg ' _6 v( a2 p6 V- s
- `0 M- L$ g' @+ v, u2 q3 @9 S
可以看到标题栏上stmcx工程名称为“SDK50x-P-NUCLEO-IHM001-BullRunning”。左边有4项,电机参数、电源阶段(硬件驱动)、驱动管理、控制阶段(MCU控制相关)。7 P) a  A& F5 @( }: C6 v
双击中间的大M,进度电机参数设置
5 p) ?  f1 D* O5 Q% ~7 \ 05.jpg
2 ~! T" g+ t  d
. L4 k* b! ^( s% z/ e8 @+ J/ L5 x- U可以看到,样例默认设置为下图,对参数暂不做改动。
) b1 D! Z$ }. H) S  [ 06.jpg
/ M) e* J; C7 f% @. ^1 t6 l. [. C( Z1 G. k
+ S3 ?6 h7 y# K0 p: r; J对比之前电机参数识别时得到的结果,有一定的差别,暂不使用获得的结果代替上图中电机参数,供之后进阶阶段参考。1 K! W. X$ {6 [: k" u
07.jpg 9 r% a5 E3 O9 B) [
+ F! V9 k6 s, T+ M
传感器设置,由于本实验套件没有相应外设,因此都不勾选! J# L; \, }3 t( ^8 P7 \$ D6 e
08.jpg
. Z9 u9 ^& d, Q  b0 D
9 N1 ~* j# G5 ~3 g* c+ |. C8 z; d电源硬件驱动设置,暂不做任何修改。如要修改,需要对照硬件电机驱动电路参数。* S3 t! l! x" P7 g# ~, T8 s- W6 F
09.jpg   }$ G+ y* u1 Q& k5 w2 x- \

4 {- h* d# l( f; N& |' G驱动管理,有6个蓝色框,可以设置各种参数。暂不做任何修改  e1 P7 F& F3 I  c2 R9 Y
10.jpg
% h9 |6 p2 f. b, {" V! _2 X  G+ M; G1 w3 G* G
如要修改,那么鼠标双击蓝色框内,将弹出相应设置选项,如下图3 W0 v' D7 W8 [+ b# n
11.jpg
! g9 Y. t' C# q% l
; p2 ?8 T+ u4 P) W* O" Q+ f3 P对于第4项比较重要,是电机控制时MCU相关资源参数的设置,不妨打开来看看。当然这些参数如果需要调理的话,将来的STM32CubeMX下也可以说完成。- i& D+ ~) ?4 b( P1 m) G  H& C
12.jpg 8 J) o1 T4 r$ g; c6 _4 W0 p7 g$ p

: s$ e2 k  ^: n: c双击MCU和时钟频率选项图标,弹出MCU型号,时钟类型,主时钟频率,电压等参数
; M% j* I6 d, V& R4 u$ A 13.jpg 0 V" V6 O+ d7 j1 e& y" c
& j' |' @; ]! Y6 R& w7 {" t- g  f
设置输出工程类型,IDE及工具链。2 A! D) s8 A/ J9 W) W
14.jpg 7 r7 ~' q' P' m0 Q/ w( f
) }% H8 D; }8 V. b8 s
可以有IAR、Keil4、Keil5、TrueSTUDIO、SW4STM32等,我们这里选择IAR,即EWARM。
! W, L% V* B5 O& o3 W8 d 15.jpg
* x) Q3 o& E" r3 J- o) Z5 O5 l/ e1 q* u5 s: [; T& i4 ^
生成工程文件。6 z1 M. @. l% h; ]- K
16.jpg
# B0 C6 Z0 s0 p& }7 a! F) `+ p( Q1 T; r6 V3 C9 v
当然也可以通过主菜单的Tools下拉菜单中,选择相应设置。
- z! s) q$ E! t/ s7 C- D: s4 d  a 17.jpg : q: q! H2 T/ Z
1 A! y9 \0 L) T3 O
生成工程文件中……。生成工程文件成功后,过程窗口自动关闭。如没有任何错误提示,那么进行下一步,IAR下编译目标固件。2 l, s( w8 R1 B  c: e4 a
18.jpg
- T. N% A8 [. f- Y$ q6 n. `; [! {( b: c! X% C1 z2 w% p' C
使用IAR for ARM 8.0以上,我这里安装了三个版本(8.20、8.22.2、7.80)的IAR for ARM,选择8.20,因为5.0的电机开发环境要求必须是IAR 8.0以上版本。2 ]- K& R. ~# i8 M
19.jpg " H; K) m2 L: `; m) q/ I

% T$ B, l! ^9 ?2 j% r如果选择 7.80,那么在编译时会多一条警告,关键是生成的目标固件无法下载执行。我当了回小白鼠,其他小伙伴就没必须再去尝试了,给大家省点时间。2 @4 t% ~6 h9 S$ t  J: N8 `3 d" J
20.jpg 6 B  N# T4 S; k8 T

9 J" K4 B% H+ N7 P9 m& u5 T打开IAR 8.20后,找到并打开工程“Project.eww”6 w% I- D3 }# a7 n
21.jpg 3 r! A4 q4 j$ L8 N8 R& g! a
- f& v. F) [3 M4 @. H$ y: C6 B; _
把用户文件夹前的加号点开,可以看到文件后都有一个红色有点,这也表示相应文件未编译,当编译后红点将自行消失。打开main.c文件,可以看到主函数比较简洁明了,while中没有任何代码,这是因为样例工程中的程序在运行时通过USART与上位机通信来设置参数,都在中断中执行。3 x1 d% R  j7 _( T4 b3 l2 E) w
22.jpg
3 O4 u+ F- d  V) L! T
: a. ]  J. L0 ?: ?% O鼠标右键点工程,弹出菜单,选择“make”,编译工程。
- X2 r  D) H2 s2 s7 k- _ 23.jpg
! ?2 n2 F- M! [! M' ?1 {" _& k; O; a* O) W0 A; i9 S) i
编译完成,0错误、0警告5 R3 \3 y2 r0 s  Y5 T0 w
24.jpg # K% D& |" ?) c2 M8 b1 r- b& v) \
2 d, `; E- M6 t0 E, r. q9 g, o$ F
下载并调试,或用快捷键ctrl+d
/ J2 U! l9 f7 h0 C  S* r- J' s 25.jpg : f$ h+ C8 ^, }3 `9 K

* D: ?' D) q) n下载成功,进入调试模式,程序运行指针指向main函数开头5 Y* Y: @  G& u7 Q& ^
26.jpg
1 H, ?8 R. L' ~+ j6 b# @/ z4 w: v' L: T! Y; w' A  j/ D
点击全速运行程序图标,或者用快捷键F5
9 T9 W- v. i" v/ L 27.jpg
+ M3 x; \# N; C# [# d" L
% {8 G2 M. J7 n打开监控窗口8 W% ~& Q. I- v
28.jpg
. ^: c* {) Q2 c8 W! ?; e0 n' v& D" F, J4 b) `3 f
设置相应串口参数,并连接串口
* S% i0 V; E) t 29.jpg
* Y* H6 x6 E# P7 @. {
, T7 \! p: \9 X+ Q; d3 T上位机与电机目标板固件已连接
$ A- Q2 _9 h0 ]; g* T" Z 30.jpg 1 R! E/ u$ T) d
3 l2 j8 z- {6 |  n$ H
点“Start motor”按钮,电机开始运行
/ U, A! B/ E7 M5 K; C& ~! N6 k 31.jpg
6 s! h, S4 s& q0 j3 O& N( _* [; W* n' U, b! {  I: g3 ]' @
电机开始运行效果& a1 @' L+ \- \! o: s" a" P
77.jpg # i+ X& K3 V, j6 h3 L% f

4 X4 T' E0 s- d% a可以看到设置转速与测量转速,测量转速是通过电机实时运行测量得到的结果。' b( K; A' n/ L. B) l$ R3 g1 N7 M+ S/ }
32.jpg - W8 i# L3 g' \, _" J

) W' {( m/ p- b6 G! M9 w6 [# _8 D高速电机设置转速,电机速度发生变化,测量转速反馈到的转速也相应变化。
9 M: ^: i3 K3 s  `5 m+ z: K 33.jpg
. Z- h* ~2 V* g' j) B1 v- z8 u8 @0 w2 h) [+ H3 j, ]+ @
在调整速转速、方向、或启动时,可能会发生错误。错误主要是电机速度反馈错误和电机超流错误。: `# U2 u& n( v  v6 X1 k4 d
电机速度反馈错误& Y! ]5 w5 m. i/ F
34.jpg
/ j% e4 Q$ k+ \7 Y% M# V5 C6 G
: D  F$ u6 e9 p! \电机超流错误& r+ o; n4 [* Y+ ^+ d
35.jpg
) A+ O0 t+ X' X
9 e! {, B) U& M  F: @右侧按钮的操作,将会在下面的“操作改变日志”中有显示
) ^1 R0 T) p, }' }+ p  M! o 36.jpg ! B* |; \: Q+ Z1 E$ S2 z7 o
8 M' i! f7 n' e5 f" i/ A
打开plotter绘图窗口,可以看到设置转速与测量转速的变化波形。. d. o3 J# E$ ^8 p
放大波形,可以看到实测波形在设置转速附近做上下往复,这是因为一直在做pid调节转速。
- a: ?+ U: k/ M( Z( k 37.jpg 2 c$ h7 d5 J3 m
6 l' l' I0 a& U9 B) J: K" q
反馈的测量转速是通过USART串口发送到上位机的,并且相对发送采样速率不同,在低速时,反馈点多一些,高速时每个周期的反馈点要少一些。) ~. R  @7 \6 ]. w2 ]
38.jpg
, W$ G, v1 v; m; S  x  r% f5 J  N% [, f: i, Q% F6 w0 S! y
电机速度有突变时,反馈速度会有过高的过冲,这也是PID的一个特征。
# V# d$ b4 N/ L  o' I) z 39.jpg
2 N& ~: K! t3 Z6 v* v* z/ X  N/ A. I$ r
速度变大、变小,都会有反馈速度过冲
0 _1 H2 p  [/ M* _ 40.jpg / |) {8 Z2 M: m$ K- {* g

1 Q! ^+ a2 }/ j+ k! ]$ N7 N' D至此,一个基本的样例程序跑起来了,接下来需要完成其它的实验。将在此工程基础上,适当增减代码来实现。
+ B# ^4 C9 P( x! H2 N$ S: @$ w0 ~* [
赞 收藏 评论13 发布时间:2018-9-9 15:30

举报

13个回答
七哥 回答时间:2018-9-9 15:35:46
本帖最后由 toofree 于 2018-9-9 15:38 编辑
& \1 R" _! \9 F' I+ r: b/ T2 {) z6 E! Y# j5 ?
按照本人惯例,本实验样例程序工程附上:( h/ d) A- I7 s* Q0 c. q5 x. ?
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
* `1 l$ S9 S( D4 S! ?% g9 j8 R) j/ O1 {我用的是IAR7.7,生成的工程编译没有问题
9 m: P9 O1 K* |. {8 x5 p
谢谢回复!7 M2 v& M7 I+ d& @& E& \
我可能人品爆棚了,用7.8编译没问题的,下载时死活不行,唉!% C: x1 M0 o1 M  e
环境的问题伤不起,直接换高版本,跳过
聪聪 回答时间: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
) c9 l* O% S) e2 m% @: E1 S2 k这是直流电机吧,还有反馈的
) F+ y2 @: t# ]9 }0 w( V2 v/ ~+ a9 L8 Z
是的,三相直流无刷电机。
6 H8 P# B3 }; e! ]5 k
; R0 G/ E- i# e' A/ Z  m可能不太适合步进电机吧,步进电机不能失步。无刷电机则会有失步的情况。
gatsby32 回答时间:2019-3-6 10:57:43
老哥 为啥我的程序下载时会出现这个问题啊
  d% m# m& n4 B6 e7 S6 c
图片7.png
七哥 回答时间:2019-3-6 11:11:56
本帖最后由 toofree 于 2019-3-6 11:22 编辑
4 H) L0 N2 G! o, C' C1 b5 w# s
gatsby32 发表于 2019-3-6 10:57
  X0 f" t  r1 x* q1 z5 Y3 Y老哥 为啥我的程序下载时会出现这个问题啊

8 c, P, M/ F% ]$ Z9 i, l4 K不知道,没有工程。6 y% M4 t/ e: X) g
工程名和工程路径不要以数字开头,不要有标点符号、特殊字符和中文,最好是全字母。
: i  h. d, L4 d* L用STM32CubeProgrammer或STM32 ST-LINK Utility,先连了下,看看能不能识别器件STM32F302。, k' }6 E% u! |6 M. ]) f0 x3 E
lmyyjx 回答时间:2019-4-16 14:56:29
签到

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版