This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F280039C:#include "F28x_project.h"导致 F28003x 项目工作失败

Guru**** 2350610 points
Other Parts Discussed in Thread: C2000WARE
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1214378/tms320f280039c-include-f28x_project-h-causes-working-f28003x-projects-to-fail

器件型号:TMS320F280039C
主题中讨论的其他器件:C2000WARE

我有一个工程使用  "F28x_project.h"中的定义、我使用 C2000ware_MotorControl_SDK_4_02_01_00中的最新 c2000Ware、但我收到了以下错误。  接下来、我尝试用一个可以正常工作的示例进行编译、然后将 #include "F28x_project.h"添加到文件中、并得到相同的错误。  定义有问题吗?

/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_nmiintrupt.h,第159行:错误#41:需要一个标识符
"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_nmiintrupt.h ",第170行:错误#41:需要一个标识符
"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_nmiintrupt.h ",第180行:错误#41:需要一个标识符
"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_lin.h ",第236行:错误#41:需要一个标识符
"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_lin.h "、第236行:错误#80:需要一个类型说明符
/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_lin.h,第236行:错误#170:此处不允许使用函数类型
"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/headers/include/f28003x_lin.h "、第236行:警告#109-D:长度为1的有符号位字段
/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/common/include/f28003x_globalprototypes.h,第92行:错误#41:需要一个标识符
"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/common/include/f28003x_globalprototypes.h ",第92行:错误#80:需要一个类型说明符
/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/c2000ware/device_support/f28003x/common/include/f28003x_globalprototypes.h,第92行:错误#91:不允许函数返回
9在编译"/Users/xxxx/ti/C2000Ware_MotorControl_SDK_4_02_01_00/solutions/servo_drive_with_can/common/source/servo_drive_with_can.c "中检测到的错误。
gmake:***[servo_drive_with_can.obj]错误1.

其中一个问题似乎是与 LIN 支持相冲突--有一个字段"idle"与驱动程序库"idle()函数相冲突。 作为结构中的一个变量、与"错误"也会发生冲突。

如何解决此问题?  我的项目将从'049处理器移植、它使用 F28x_project 中的定义。

此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我在 C2000Ware 中搜索了一个使用 F28x_project 文件的示例、该示例以相同的方式崩溃、因此该 h 文件似乎存在故障。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    主题专家今天不在办公室。 请等待回复延迟。

    谢谢

    斯里坎特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我相信我以前见过类似的问题、发现它似乎对#Includes 的顺序很敏感。 我正在检查我们的其他 SDK 解决方案、这些解决方案同时使用 driverlib 和设备支持头文件、在任何 driverlib 头文件获得#include 之前、似乎都需要#include f28x_project.h。 您能看一下这是否对您有所帮助吗?

    惠特尼

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Whitney、

    此修复适用于示例项目!  我将在我的实际代码上尝试它、看看这是否修复了一切。  感谢您的快速响应。

    此致

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Whitney、

    它对我的一些文件有用、但我的一个文件即使我将 "f28x_project.h"的 include 放在第一个被包含的文件中也会失败。  我还能做什么?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我发现了问题。  差异不在于页眉顺序。  您需要在 Properties->Build->C2000 Compiler->Predefined Symbols for _dual_headers 中添加一个定义。  

    我想出来是因为空闲的定义根据该定义发生了变化。  您知道 _dual_headers 的含义吗?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很高兴您找到了解决方案。 我忘记了_dual_headers 适用于该器件、但在一个项目中同时使用 driverlib 和 device_support 头文件时、应该使用_dual_headers。 它使用一些#ifdefs 重命名一些内容、以避免两组头文件之间发生冲突。

    惠特尼