基于stm32的PMSM的FOC2的2.0的库编译发现如下错误

2019-07-14 18:03发布

最近将PMSM的FOC2的2.0的库移植到STM32f051xx上,移植过程中发现几个纠结的问题,看看有没有哪位前辈遇到过啊:
1在编译的时候发现如下错误(在基于051的外设库函数的工程中编译的):
                                                                                     ..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_Electrical_Angle (referred from stm32f0xx_it.o)
...Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_Electrical_Angle (referred from stm32f0xx_it.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_wBemf_alfa_est (referred from stm32f0xx_it.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_wBemf_beta_est (referred from stm32f0xx_it.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_wIalfa_est (referred from stm32f0xx_it.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_wIbeta_est (referred from stm32f0xx_it.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol FOC_FluxRegulator (referred from mc_foc_drive.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol FOC_FluxRegulator_Init (referred from mc_foc_drive.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol FOC_FluxRegulator_Update (referred from mc_foc_drive.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Calc_Rotor_Angle (referred from mc_foc_drive.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Gains_Init (referred from mc_state_observer_interface.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Gains_Update (referred from mc_state_observer_interface.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Get_Speed (referred from mc_state_observer_interface.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_IsSpeed_Reliable (referred from mc_state_observer_interface.o).
..Outputsvpwm.axf: Error: L6218E: Undefined symbol STO_Calc_Speed (referred from stm32f10x_timebase.o).

经查证,发现引起以上错误的原因是这些函数在相应的头文件里面只是声明了一下,但是在相应的 .C文件里面没有却没有定义,刚开始还以为自己在移植的过程中不小心把这几个函数给删了呢,后来查了查原文件,确实是没有这几个函数,不知道这是库的开发人员保留让客户根据自己的需要自己编写,还是忘了写这几个函数了啊?

2,在基于103的外设库函数上编译此工程时,编译器不报错,不知道是为什么?但是在基于051的外设的库函数上编译此工程却提示了如上错误。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
爱雪爱雪
1楼-- · 2019-07-15 14:56
F0和F1还是有些区别的
水木清华pretty
2楼-- · 2019-07-15 17:18
头文件没有包含进去吧
freesea123
3楼-- · 2019-07-15 20:31
 精彩回答 2  元偷偷看……
哈哈神神
4楼-- · 2019-07-15 23:37
回复第 4 楼 于2014-06-17 16:22:10发表:
回复第 2 楼 于2014-06-17 16:04:15发表:
用不着的话就注释掉
 
可是不明白,为什么在没有移植前,这些函数也没有定义,但是为什么就没有报错呢?
 
 
你确定不是警告是报错?

 
zzw0719
5楼-- · 2019-07-16 02:36
回复第 11 楼 于2014-06-19 13:22:34发表:
 明显的少了一个lib。
 
这几天没顾上上网,没能及时回复,今天看了看那个2.0的库,发现是缺少了那两个lib。这个工程的源代码是基于stm103的,现在我自己重建工程把他移植到051上,第一次见工程的时候忘了加载这两个lib文件导致了很多函数(上面提到的)没定义的错误,后来加载了这两个文件后函数没定义的错误解决了,但是又出现了如下错误http://www.stmcu.org/file:///C:UsersAdministratorAppDataRoamingTencentUsers1835116269QQWinTempRichOle87}NZA3}S)2ESH(C19%%DQM.jpg:..Outputsvpwm.axf: Error: L6366E: mc_state_observer.o attributes are not compatible with the provided cpu and fpu attributes .,好像是有汇编指令和当前cpu不兼容,但是在MC_State_Observer_Interface.c文件中也没有发现有嵌入的汇编语言,是不是那些不兼容的汇编指令在MC_FOC_Methods_lib.lib中啊 ,但是在keil是打不开这些文件的,哎哎拦路虎真太多了。。。。。。
 
qwer39
6楼-- · 2019-07-16 06:44
加我Q讨论一下吧。我最近也搞这个。

一周热门 更多>