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.

[参考译文] 编译器/TMS320F28377D:各种类型的初始值不正确

Guru**** 2538955 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/609298/compiler-tms320f28377d-the-initial-of-various-is-incorrect

器件型号:TMS320F28377D

工具/软件:TI C/C++编译器

您好!

 我想在程序中初始化一些不同的程序该程序位于 for ()之前;

Axis1Rg_CLA.Freq=0;
Axis1Rg_CLA.StepAngleMax=AXIS1BASE-FREQ*T;
Axis1Rg_CLA.Angle = 0;
Axis1Rg_CLA.Gain=1;
Axis1Rg_CLA.out=0;
Axis1Rg_CLA.Offset=1;

Axis1Rc_cla.targetValue=0;
Axis1Rc_cla.RampDelayMax=5;
Axis1Rc_cla.RampLowLimit=1;
Axis1Rc_cla.RampHighLimit=1;
Axis1Rc_cla.RampDelayCount=0;
Axis1Rc_cla.EqualFlag=0;
Axis1Rc_cla.SetpointValue=0;
Axis1Rc_cla.tmp=0;

Axis1ParkOpen_CLA.Alpha=0;
Axis1ParkOpen_CLA.Angle=0;
Axis1ParkOpen_CLA.Beta = 0;
Axis1ParkOpen_CLA.Cosine=0;
Axis1ParkOpen_CLA.DS=0;
Axis1ParkOpen_CLA.Qs=0;
Axis1ParkOpen_CLA.Sine=0;

Axis2Rg_CLA.Freq=0;
Axis2Rg_CLA.StepAngleMax=AXIS2BASE-FREQ*T;

在我的程序中、初始化各种 Axis1Rg_CLA.StepAngleMax=AXIS1BASE-FREQ*T 和 Axis2Rg_CLA.StepAngleMax=AXIS2BASE-FREQ*T;但在我运行程序后、我发现 Axis1Rg_CLA.StepAngleMax 值  不正确。 正确的值为166.7、但值为0。 但各种 Axis2Rg_CLA.StepAngleMax 是正确的。

我 在 RAM LS1中将这两个变量分配为 CLA 变量。  

为什么一种类型的错误、另一种类型的错误是正确的?

此致

摇晃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Axis1Rg_CLA.StepAngleMax 的各种初始化是不正确的、因为它的值是由另一个不同的变量更改的。
    Axis1Rg_CLA.StepAnglMax 在 RAM LS1中,它的 adree 是0x8A00,另一个我定义的不同类型在 RAM 0x8A40中,我将这种不同的值在0X8A40中写入到0,但我从 CCS 中读取它的值是7FFFFFF,然后在0x8A00中将不同的 Axis1Rg_CLA.0更改为0X8A00。
    为什么?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这可能是因为您使用的是浮点变量。 是这样吗? float 是浮点数、而 ints 是整数。

    为了了解特定浮点值的位模式、您可以使用在线 IEEE 浮点转换计算器。

    SAL