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.

[参考译文] TMS320F280025C:无法复制变量

Guru**** 2408100 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1113788/tms320f280025c-unable-to-copy-variable

器件型号:TMS320F280025C

您好!

使用电机控制器 SDK (universal_motorcontrol_lab_f28002x)。

可能有些愚蠢、但当我尝试复制变量 motorVars_M1.flagRunIdentAndOnLine (在文件 communication .c 中)时、复制的值始终为0。 当我停止调试器时、它将显示'0x0001'或 true、但它永远不会复制此值。 但复制的值是通过 CANbus 发送的、并且还有"0"。

(黄色屏幕是调试器停止时的变量窗口、您将鼠标悬停在  motorVars_M1.flagRunIdentAndOnLine 变量上)

在 sys_main 中运行代码段时、value motorVars_M1.flagRunIdentAndOnLine 也为"1"、下一条代码"test = true";

        bool test = false;
        if (motorVars_M1.flagRunIdentAndOnLine == 0x0001)
        {
            test = true;
        }
        else
        {
            test = false;
        }

有什么想法吗?

最棒的酒店

吕德

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

    默认情况下、"motorVars_M1.flagRunIdentAndOnLine"应为"0"、因为您不会在示例实验中更改任何内容、并且可以将"motorVars_M1.flagRunIdentAndOnLine"设置为"1"以开始运行电机。

    您可以在 CCS 调试表达式窗口中监视变量、然后单击"Continuous Refresh"以查看监视变量的实时值。

    请详细说明项目 IKE 的设置, 如果您有任何疑问,请选择哪些控制算法和功能。

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

    是的、我理解但我的意思是、调试器显示正确的值(motorVars_M1.RunflagIdentAndOnLine = 0x0001、因为我通过 CANbus 将其设置为0x0001)、但我无法复制值[在文件 communications.c]中。 复制后、该值为0。 我想通过 CANbus 发送该值、例如 CANbus 故障等  

    我可以从 sys_main.c 正确复制此值。

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

    问题可能来自编译和优化。 您可以尝试使用全局变量来复制该值、并尝试在.cmd 文件的同一 RAM 段中分配该变量。 也可以将此代码移至其他文件。