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.

[参考译文] TMS320F28P650DK:更新到 C2000Ware 26.00.00.00 和 TI 编译器 v22.6.3.LTS 后的 F28P65x f28p65x_device.h 编译问题

Guru**** 2837190 points

Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1625616/tms320f28p650dk-f28p65x-f28p65x_device-h-compile-issue-after-updating-to-c2000ware-26-00-00-00-and-ti-compiler-v22-6-3-lts

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

您好、

我正在使用处理一个项目 F28P65x 频率。 我将工具链更新为:

  • TI C28x 编译器: v22.6.3.LTS

  • C2000Ware: 26.00.00.00

更新后、我开始看到源自的编译问题 f28p65x_device.h

...

在该文件中、以下寄存器定义显示在顶部附近:

//
// Common CPU Definitions:
//
extern __cregister volatile uint16_t IFR;
extern __cregister volatile uint16_t IER;

但是、同一文件的后面部分包含标准标头:

//
// For Portability, User Is Recommended To Use the C99 Standard integer types
//
#if !defined(__TMS320C28XX_CLA__)
#include <assert.h>
#include <stdarg.h>
#endif //__TMS320C28XX_CLA__
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>

因为stdint.h已包含在内 之后 寄存器定义、类型uint16_t在定义之前使用。 作为测试、我移动了标准标头包括、使其显示出来 解决方案 寄存器定义。 完成此操作后、工程编译不会出现任何问题。

但是、修改 C2000Ware 的器件支持头文件 这不是我想依赖的。

我的问题是:

在不f28p65x_device.h通过 C2000Ware 进行修改的情况下解决此问题的正确方法是什么?
是否有建议的包含顺序或配置更改、应在使用时应用 带有 C2000Ware 26.00.00.00 的编译器 v22.6.3.LTS

附加上下文:

  • 在更新编译器和 C2000Ware 之前正确编译的工程。

  • 问题似乎与的定义有关uint16_t

  • 移动stdint.h之前的 include 可解决问题、但需要修改设备标头。

感谢任何指导。

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

    嗨、Sebastain、

    感谢您的提问。  编译问题源于uint16_tstdint.h包含在器件标头之前使用。 推荐的解决方案是stdint.h在包含之前包括在应用程序源文件中f28p65x_device.h、确保在设备头处理之前定义了标准 C99 整数类型。

    因此、您可以确保您的应用代码是类似的  

    #include
    #include “f28p65x_device.h"</s>“
    //其余的包含和代码

    此方法可确保在处理器件标头之前定义 C99 标准整数类型、而无需对 C2000Ware 文件进行任何修改。 由于 C 割台护罩可防止多次插入、包括stdint.h再次插入、因此f28p65x_device.h不会产生任何不利影响。

    您能尝试在您的应用程序代码中进行这项更改吗?

    谢谢、

    IRA

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、
    我的 f28p55 器件存在同样的问题。 我正在使用 C2000 编译器 v25.11.00 和 C2000WARE v26.00.00.00。 我测试了两种解决方案和所有工作。 Ira Thete 建议的解决方案 意味着在处理 bitfield 时、将 C2000Ware 交付的文件修改为 f28p55x_globalvariabledefs.c。 而且,这是有点奇怪的是,必须包括 stdint.h 之前包括 f28p55x_device.h 当最后一个标题也倾斜这个文件(如报告在第一篇文章。 那么、我的问题是  在即将发布的版本中实施 Sebastian Glas 提出的解决方案有多糟糕/复杂?
    谢谢。
    PD:可以使用 empty_bitfield 示例复制该问题。  
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Jose、

    正确、我们应该不必手动编辑器件支持头文件。 我来看看 C2000Ware 茶、然后继续给您解答。

    谢谢、

    IRA

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

    您好、Jose、

    团队确认这是 C2000Ware 中的一个错误:26.00.00.00 对于某些器件、我已经为它提交了 Jira 错误。 该问题将在下一版本 C2000Ware:26.01.00.00 中得到解决

    我正在关闭此主题、请随时针对任何后续问题打开一个新主题。

    谢谢、

    IRA

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

    您好、Ira、感谢您的快速操作。 我正在等待下一个版本。  

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

    尊敬的 Ira 和 Jose:

    感谢您对此问题的帮助和指导—非常感谢! 我将等待下一个版本的发布。