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

【P-NUCLEO-IHM002】FOC官方SDK例程归纳整理&移植

[复制链接]
donatello1996 发布时间:2017-8-24 13:11
       昨晚和今早花了一晚上+一上午的时间进行FOC官方SDK的归纳和移植,无论开发什么板子,将官方繁杂累赘的多demo例程移植到自己的工程都是首先要做的事情。我们首先看看官方的FOC SDK的工程文件位置(MDK Keil5工程),藏得可真够深的,要不是看到坛友发的帖子,我都不知道工程放在哪:. Q& V) y6 p5 h* [. y
官方例程位置.jpg
/ F3 x/ ], u# i# l% m7 H然后再看看外设库的位置:
" N7 C  Y% d( \9 a5 C 外设库.jpg . [7 d  a' u' Z
从外设库的库名可以看到,FOC官方SDK例程用的是标准库而不是HAL库,后面有个梯形六步法的Cube的驱动是一个HAL库的工程,这还真是有趣,FOC算法用标准库,梯形六步法用HAL库,这是官方故意的么?还是官方建议大家用梯形六步法?(因为HAL库显然比标准库更新更齐全,难度更低)
7 U  q7 F6 G2 K0 L- {, C6 \    使用FOC标准库之前要下载STM32F3系列的器件支持包,这个我就不再重复了,神秘链接:【keil.com/dd2】。然后就是要编译.lib链库文件,这个是使用FOC官方SDK例程所必须要做的步骤,不知道为什么在我前面发帖的坛友都没有提及,还是说这是常识不需要提及?链库文件的位置在此(其实就是用户例程的上层):
; I7 \$ M( u5 q4 h* R- Y" a 链库文件.jpg
: U( [1 o, Y. Y, z% i; E+ l    打开链库文件之后我们可以看到链库工程生成的并不是.hex这种可供单片机执行的16进制文件,而是.lib链库文件,注意别选错了,选错的话会有恐怖的报错数量。其实生成.lib文件供例程使用这种方式,早年是出现在飞思卡尔K64的开发板上面,不知道为什么STM32也会参考飞思卡尔这种做法。
' ]: s8 s( z% M2 U/ @% e0 q 打开链库文件.jpg 2 x6 G: J2 S( h7 ~

# S5 B0 R, d. D- ^  K6 K$ Q& K    生成了.lib库文件之后,我们就可以在某个隐秘的目录找到它了,将它添加到用户例程中,就可以通过编译了。
: e: I3 H) i+ D) ]) x 链库文件位置.jpg 添加链库文件.jpg
3 X. I) h- i+ q+ \, C将程序烧录到Nucleo-F302开发板中,设置好FOC的跳线,就可以看到效果了,按一下蓝色按键,电机按照FOC方式缓缓转动。注意,烧录前,Nucleo底板的JP5跳线要选择U5V端,烧录完成上12V电源,又要把跳线设置到E5V端,好麻烦。9 V( Y+ c( m3 d- c) X# M, M5 q

; F; s5 W% Z0 t; U

$ Q) N8 O, G" L( n4 |$ r6 S8 ^    官方例程调通没问题,接下来的自然就是移植为自己的例程了。我看官方例程的文件树,哎那数量叫一个庞大,真的是吓得我坐地上了,移植那叫一个体力活啊,花了我一晚上+一上午的时间,个中滋味省略1024字.../ i* J& {4 F, j0 ~" Y; R
文件树1.jpg 文件树2.jpg 文件树3.jpg " `: ?' Y! [' Y$ i0 a' t8 R( r
       移植好之后在core_cm4.h里面还有一个奇怪的FPU报错,这个报错我从来没见过,将它注释之后就没问题了。我上网查了下,这报错貌似是在include "core_cm4.h"之前没有include "stm32f30x.h",但是事实上我的include "stm32f30x.h"是放在main.c的最前面的?这就不知道为什么了,不管它,玩板子要紧。
0 l% [; J& h  r6 c  c 奇怪的报错.jpg 有include.jpg
3 j2 z1 f& Z/ Y' l* _( V    移植好的工程类似于正点原子的风格,下载到板子上也是没有任何问题的,为了方便大家,我上传上来吧! 电机套件工程.zip (3.87 MB, 下载次数: 1612)
赞 收藏 3 评论12 发布时间:2017-8-24 13:11

举报

12个回答
Beckalien 回答时间:2017-8-25 15:35:01
楼主厉害
sunnjh 回答时间:2017-9-14 12:54:21
楼主,【P-NUCLEO-IHM002】FOC官方SDK例程在哪有下载?能给个链接吗?
0 e3 b# z% ?* m" V3 p# ?. \
sunnjh 回答时间:2017-9-14 14:28:50
找到了,论坛就有
lg-405938 回答时间:2018-3-31 22:04:17
牛牛牛牛牛牛牛牛
lss1985 回答时间:2018-6-2 16:27:10
楼主,直接下你的工程出现以下错误9 V6 l, j! s5 ~/ _* y+ k! F0 W
MCTasks.c: Error:  #5: cannot open source input file "..\..\..\MCApplication\src\MCTasks.c": No such file or directory5 n, l9 l  g; @2 b+ K1 A/ k
但是在path里面的确说已经把MCTasKS.C加进来了的( h3 m# c) I, G# {
不知道如何调整
lss1985 回答时间:2018-6-2 16:28:00
楼主,直接下你的工程出现以下错误9 n0 z. H. g# e" v/ Q( P
MCTasks.c: Error:  #5: cannot open source input file "..\..\..\MCApplication\src\MCTasks.c": No such file or directory  ?! \/ b: O9 h+ a0 P# E
但是在path里面的确说已经把MCTasKS.C加进来了的$ C* a' R1 i5 b- }" h% O8 j: P
不知道如何调整
lss1985 回答时间:2018-6-2 20:29:11
问题解决,楼主都startup文件夹下面有302.s和303.s两个启动文件,应该去掉302.s文件,则编译可以顺利完成
8 Q1 s" V" U# P; Y. A多谢楼主的工程
wangxuewei 回答时间:2018-6-14 08:43:59
共同学习,共同进步
romenchen 回答时间:2018-7-27 20:29:11
楼主厉害
liangchengbao 回答时间:2019-3-2 21:50:32
楼主太无私了!) U0 w+ y! h# {4 k: F
感谢感谢!!!
ddbx2017 回答时间:2019-4-23 08:09:02
谢谢分享
lg-405938 回答时间:2019-5-8 10:24:53
nnnnnn
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版