单片机/MCU论坛
直播中

李丽

7年用户 1388经验值
私信 关注
[问答]

使用ADS并使用ILLD和367DP MCU,赋值运算符没有按预期运行的原因?

我正在使用 ADS 并使用 ILLD 和 367DP MCU。
从字面上看,赋值运算符没有按预期运行。
例如,考虑以下代码(这是一个极其简化的示例,实际上,它涉及将SPI结果分配给一个变量以通过CAN通信输出):
int a = 3;
int b = 0;
b = a;
执行此代码时,b 应为 3。 但是,b 仍为 0。
有人遇到过类似的问题吗? 在这种情况下,应考虑哪些解决方案或检查?
我只使用 ILLD 和 ADS(AURIX™ Development Studio)。

我正在使用调试器(MINI_CONTROL2GO 摆动器),当我使用 ADS 在调试状态下运行代码时,分配完成得很好,
但是如果没有调试器,当我运行程序时,分配不起作用。
(我的意思不是整个任务都行不通。 只有一些代码行不起作用)

我不确定这是硬件问题(缓存... 之类的)还是编译器(任务)的问题。


回帖(1)

王燕

2024-1-18 16:42:19
原因可能是编译器优化或代码执行顺序导致的问题。以下是一些可能的解决方案或检查事项:

1. 确保代码已正确编译和链接。执行 Clean Project 和 Rebuild Project 操作以确保在编译器中重新生成所有文件。

2. 检查代码的执行顺序。在某些情况下,如果代码存在分支或循环,可能会导致值未正确分配。确保代码流程正确,并在所需位置使用条件断点进行调试。

3. 禁用优化选项。尝试在编译器选项中禁用优化,以确保代码按照预期执行。这可以通过更改编译器设置或修改编译器选项来实现。

4. 检查变量类型和大小。确保变量的数据类型正确,并且足够大以容纳所需的值。例如,如果变量是一个字符或字节类型,它可能无法容纳整数值。

5. 检查目标设备的兼容性。确保所选的ADS版本和ILLD库与367DP MCU兼容。如果不兼容,可能会导致代码出现问题。

6. 考虑使用其他IDE或工具进行调试。如果问题仍然存在,尝试使用其他IDE或调试工具来验证是否是ADS的问题。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分