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:#137 struct "<unnamed>"没有字段"xxx"

Guru**** 2874030 points

Other Parts Discussed in Thread: C2000WARE, TIDM-1000, SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1638390/tms320f280039c-137-struct-unnamed-has-no-field-xxx

器件型号: TMS320F280039C
主题中讨论的其他器件: C2000WARETIDM-1000SFRA

您好 Champ、

我要找我的客户。

它们将 DCL 库用于控制器。

他们想在 DCLF32.h 文件中的 DCL_PI 控制器结构中添加一个新成员 (float32_t xxx)。

typedef 结构 DCL_PI{
  float32_t;   //!<比例增益
  ......
  float32_t integral;   //!<用户添加的成员
} DCL_PI;

但是、它编译时出现错误#137 STRUCT “ 如果启动.h 文件中的值、则“没有字段“xxx"。“。

在.h 文件中、它按如下方式进行定义和声明。

#define VIENNA_GV DCL_PI

extern vienna_Gv vienna_gv;

在.c 文件中、没关系。

如何使它在.h 文件中工作? 编译器专家是否会在.h 文件中善意地解释为什么它不能以这种方式工作、并 请提供权变措施?

感谢您的支持。

此致、

Johnny

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

    您好 Champ、

    请您提供帮助吗?

    此致、

    Johnny

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

    您好 Champ、

    是否有机会进行任何更新?

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

    您好 Champ、

    有人能帮我解决这个问题吗?

    谢谢你。

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

    Johnny

    我在这里没有遇到任何问题。 我采用了 C2000Ware 26.00.00 中的 28E12x_PI 示例、导航到 DCLF32.h、通过添加 float32_t test_var 进行了更新、还更新了用于初始化它的 pi_defaults、并顺利构建工程。

    //! \brief      定义了 DCL_PI 控制器结构
    //!
    typedef 结构 DCL_PI
      float32_t   //!<比例增益
      float32_t KI;   //!<积分增益
      float32_t I10;   //!< I storage
      float32_t Umax;  //!<控制饱和上限
      float32_t Umin;  //!<控制饱和下限
      float32_t i6;   //!<饱和存储
      float32_t i11;   //!< I storage
      float32_t Imax;  //!<积分器饱和上限
      float32_t Imin;  //!<积分器饱和下限
      float32_t test_var;//!< Test variable
      DCL_PI_SPS *SPS;  //!指向影子参数集的指针
      DCL_CSS *css;   //!<指向通用支持结构的指针
    } DCL_PI;

    //! \brief 定义用于初始化 PI 结构的默认值
    //!
    #define PI_DEFAULTS{1.0f、0.0f、0.0f、1.0f–1.0f1.0f0.0f1.0f、–1.0f\
               0.0f 、NULL_ADDR、NULL_ADDR }
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sira:

    感谢您的答复。

    我们知道在  DCLF32.h 中初始化新变量可以顺利进行。 但是、这不是客户提出的问题。

    正如帖子提到的、他们正在 vienna.h (TIDM-1000) 中初始化该变量、您可能会尝试进行此操作。

    在 DCLF32.h 和 Vienna.c 中进行初始化不会出现问题、仅 在 Vienna.h 中对其进行初始化时才会发生错误

    请在 TIDM-1000 中将其复制吗? 并建议如何修复错误?

    此致、

    Johnny

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

    Johnny

    已理解 — 为解决方案分配 TIDM-1000 SME。

    此致、

    Sira

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

    您好 Johnny、

    请注意、在构建 vienna_clatask.cla 期间发生错误、如下所示

    C2000 编译器 — 构建文件:“../vienna_clatask.cla"</s>“
    “c:-v28 -ml -mt ---cla_support=cla2 --float_support=fpu32 --tmu_support=tmu0 --vcu_support=vcu2 -O2 -opt_for_speed=5 --fp_mode=relax- float_support=fp_reassoc=fpu32 --tmu_support=tmu_support=tmu0 /Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x - vcu_support=vcu2 -O2 -O2 -O2 -O2 -O2 - opt_for_speed=speed=5 /Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/libraries/power_measurement:mode_mode=relax=“c_path=relaxc_cd=relax="c_path=relax_:“:/Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/device /Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/libraries/utilities /Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/libraries/DCL /ti/c2000/C2000- Ware_Digital /ti/c2000/ti-cgt-c2000_22.6.2.LTS/include — :c_path=“c_path=c=c_spe="c_path="c_sd.html -“ -/Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/libraries/sfra“/Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/libraries/sfra -/ti/c2000/C2000-:c_path=“c_devinclude_b="c_path=c=c_spe="c_path=c=c_sd.html -“ -/ti/c2000/ti-cgt-c2000_22.6.2.LTS/bin/cl2000“/ti/c2000/ti-cgt-c2000_22.6.2.LTS/bin/cl2000 — :::Ware_Digital ---- fp=“c_path="c_default="c_path=c_dise_b"/Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/FLASH/syscfg“/Users/a0132451/workspace_ccstheia/pfc3phvienna_nonpowerSUITE_F28004x/FLASH/syscfg</s>“ “
    [0]“..\vienna.h",“,第、第 333 行:错误#137:结构“ “没有“积分“字段
    1 在编译“../vienna_clatask.cla"时“时检测到错误。

    VIENNA_GVVienna.h 中有条件地定义

    • C28x  (#ifndef __TMS320C28XX_CLA__): VIENNA_GV = DCL_PI 来自  DCLF32.h
    • CLA  (#else): VIENNA_GV = DCL_PI_CLA 来自  DCLCLA.h

    integralDCL_PIDCLF32.h(第 472 行)中已将添加到、但 CLA 任务__TMS320C28XX_CLA__使用已定义进行编译、因此它使用DCL_PI_CLA FROMDCLCLA.h—该结构体确实如此 不会 您可以integral现场观看。

    修复

    integralDCL_PI_CLA DCLCLA.h 中的结构添加

    typedef struct {
        float32_t Kp;
        float32_t Ki;
        float32_t i10;
        float32_t Umax;
        float32_t Umin;
        float32_t i6;
        float32_t i11;
        float32_t Imax;
        float32_t Imin;
        float32_t integral;      //!< Member added by user   // <-- ADD THIS
    } DCL_PI_CLA;
    

    场景 :必须在中添加该字段 相同位置 在中、DCL_PI_CLA就像在中一样DCL_PI。 由于VIENNA_gv是 C28x 和 CLA 之间的共享变量(声明)extern,因此这两个结构都必须有 相同的存储器布局 避免数据损坏。 检查您integral在中的位置DCL_PI(相对于其它射野)、并在中镜像该精确位置DCL_PI_CLA