本帖最后由 toofree 于 2018-9-17 00:24 编辑 * e: a' J& I3 J# [ 【STM32电机培训】——8、任务4开放性实验之:加个转速 6 u; {% ]- J4 e0 m7 B3 R6 u本实验背景请参考之前的两篇帖子:9 r2 e* \, s+ _( o0 ^ 【STM32电机培训】——6、任务4开放性实验转矩控制电机 https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617511&fromuid=3072976 ?& c6 ]; P- {/ Y (出处: 意法半导体STM32/STM8技术社区)* A9 N! v" T8 t, y' E, C m" F 5 s- N+ j+ ], I! y9 ? 【STM32电机培训】——7、STMStudio使用之:我的看图学习% j I1 B( C" g: F! E https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=617512&fromuid=3072971 y# p$ g' K3 m* [ (出处: 意法半导体STM32/STM8技术社区)5 k) L( R3 w; e( g 由于在之前帖子中,在STMStudio中观察变量只有两个“Tuning_ACD ”和“Tuning_Iqref ”,转速却只是在“Workbench”-->“Monitor”-->“Plotter”下显示,观察起来多有不便。/ i. J! k* w4 r% Y 本帖将增加当前转速在STMStudio中显示观察,用到了一条读取当前平均转速函数“MC_GetMecSpeedAverageMotor1(void)”。 函数返回值的单位是0.1Hz,即每0.1秒,电机转的圈数 A圈/0.1秒。那么每秒转的圈数就是A/10,每分钟转速就是(A/10)*60,即A*6。 T0 \! I# S7 I' G8 f* l0 v p) D5 S 因此实际转速就是 MC_GetMecSpeedAverageMotor1() * 6 rpm。0 V. E% u3 m1 N3 |% ^7 ] 增加平均转速变量定义,记得一定要加“volatile”修饰,否则代码可能会被优化掉。& S, u! c3 t' @8 W * u* q! U7 P0 w# _" c & D$ [4 e! I! h' J7 Y _7 v 在while主循环中,读取转速。6 F+ d: ^$ y0 k& B" p 0 g. y) m% ?1 ^" M8 E" E0 e4 b* W 编译IAR工程。下载固件到开发套件中。 0 r' D" j8 w0 ?& C0 v! }3 r 打开软件“STMStudio”,并从最近使用的工程中直接打开工程“P-NUCLEO-IHM001_task4.tsp”。 - `/ R% W2 K% W& p( r$ _ 增加观察变量“avr_speed”,增加一个“VarViewer3”,并将“avr_speed”发送到“VarViewer3”。 M7 s& S) Y9 L * g' x! P* ?. e U; T+ S' E0 J& j - z3 f4 }5 ?. y6 h8 k 开始记录波形,并不断调节电位器改变转矩,在三个“VarViewer”窗口中分别得到相应波形。 实验结束,程序附上: |