昨晚和今早花了一晚上+一上午的时间进行FOC官方SDK的归纳和移植,无论开发什么板子,将官方繁杂累赘的多demo例程移植到自己的工程都是首先要做的事情。我们首先看看官方的FOC SDK的工程文件位置(MDK Keil5工程),藏得可真够深的,要不是看到坛友发的帖子,我都不知道工程放在哪: 然后再看看外设库的位置:5 g7 [# h5 b7 s9 U* q2 z 从外设库的库名可以看到,FOC官方SDK例程用的是标准库而不是HAL库,后面有个梯形六步法的Cube的驱动是一个HAL库的工程,这还真是有趣,FOC算法用标准库,梯形六步法用HAL库,这是官方故意的么?还是官方建议大家用梯形六步法?(因为HAL库显然比标准库更新更齐全,难度更低); |; ~/ s2 A5 `* z! G 使用FOC标准库之前要下载STM32F3系列的器件支持包,这个我就不再重复了,神秘链接:【keil.com/dd2】。然后就是要编译.lib链库文件,这个是使用FOC官方SDK例程所必须要做的步骤,不知道为什么在我前面发帖的坛友都没有提及,还是说这是常识不需要提及?链库文件的位置在此(其实就是用户例程的上层):1 M w0 V g( E* _- F9 R6 D 打开链库文件之后我们可以看到链库工程生成的并不是.hex这种可供单片机执行的16进制文件,而是.lib链库文件,注意别选错了,选错的话会有恐怖的报错数量。其实生成.lib文件供例程使用这种方式,早年是出现在飞思卡尔K64的开发板上面,不知道为什么STM32也会参考飞思卡尔这种做法。2 r2 M# d7 G) k2 y : ?; ]/ V0 F z' g 生成了.lib库文件之后,我们就可以在某个隐秘的目录找到它了,将它添加到用户例程中,就可以通过编译了。 将程序烧录到Nucleo-F302开发板中,设置好FOC的跳线,就可以看到效果了,按一下蓝色按键,电机按照FOC方式缓缓转动。注意,烧录前,Nucleo底板的JP5跳线要选择U5V端,烧录完成上12V电源,又要把跳线设置到E5V端,好麻烦。6 X9 O, O: m5 p+ F) K9 m 官方例程调通没问题,接下来的自然就是移植为自己的例程了。我看官方例程的文件树,哎那数量叫一个庞大,真的是吓得我坐地上了,移植那叫一个体力活啊,花了我一晚上+一上午的时间,个中滋味省略1024字...% s& {; T3 i5 H# {% p 移植好之后在core_cm4.h里面还有一个奇怪的FPU报错,这个报错我从来没见过,将它注释之后就没问题了。我上网查了下,这报错貌似是在include "core_cm4.h"之前没有include "stm32f30x.h",但是事实上我的include "stm32f30x.h"是放在main.c的最前面的?这就不知道为什么了,不管它,玩板子要紧。 移植好的工程类似于正点原子的风格,下载到板子上也是没有任何问题的,为了方便大家,我上传上来吧! |
MCTasks.c: Error: #5: cannot open source input file "..\..\..\MCApplication\src\MCTasks.c": No such file or directory
但是在path里面的确说已经把MCTasKS.C加进来了的7 m$ f9 Z# y) B1 z1 c: k1 z
不知道如何调整
MCTasks.c: Error: #5: cannot open source input file "..\..\..\MCApplication\src\MCTasks.c": No such file or directory4 F2 m/ b% ?8 [0 _- p( v! O- `; U0 S
但是在path里面的确说已经把MCTasKS.C加进来了的* V9 v4 P7 U) j& I1 h
不知道如何调整
多谢楼主的工程
感谢感谢!!!