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.

[参考译文] TMS320F28377S:CPU 和 CLA 上的枚举大小

Guru**** 2473270 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/845400/tms320f28377s-size-of-enum-on-cpu-and-cla

器件型号:TMS320F28377S

你(们)好!

我在 C2000 28377S 上的 CPU 和 CLA 上的枚举大小不同时遇到问题。 它与以下文章类似: https://e2e.ti.com/support/tools/ccs/f/81/t/514189

我有一个枚举、我在共享文件中声明它。 然后、我在 CPU 上运行一个状态机、它会更改此枚举的值。 然后、我在 CLA 上的控制代码中使用一些 If-语句、根据枚举变量的值执行正确的代码。

有人能给我一个示例、说明如何在 CPU 和 CLA 上均衡枚举大小?

<///共享文件
enum enum_test{
STATE1 = 0、
state2 = 1、
};
extern volatile enum_test 状态;

/// main.c
state = STATE1;

// CLA
if (state = STATE1)
{}
否则(state = 2)
{}
> 

此致

MK

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

    由于 CPU 和 CLA 具有不同大小的 int 类型、我认为您应该使用 短整型或超长型以及具有枚举值且具有某些唯一前缀的匿名枚举的宽度相同的类型、以便与其他 vars 或常量区分开来:

    enum{

        stState1 = 0,
        stState2 = 1,
    };
    externvolatile短整型 state;
    //// main.c
    state = stState1;
    /// CLA
    if(state == stState1)
    {}
    elseif(state == stState2)
    {}
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 EK:

    谢谢你。 在"公主"中、您的建议有效并产生我想要的行为。  

    但我希望将变量状态作为枚举。

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

    我使用 typedef union{}找到了解决方案、这与指针方法类似!

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

    我还 会尝试添加一些 不适合16位的未使用的枚举值:

    enumenum_test{
        state1 = 0,
        state2 = 1,
          __dummybig = 30000,
    };