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.
工具与软件:
我们发现、在软件运行时、一个联合体变量可能发生了意外更改。
有关的现象
tPFC_ctrl.bit.OnOff 是在 CpuToCla1MsgRAM 中定义的、并且会 发生意外更改。 代码不会 将0分配给 tPFC_ctrl.bit.OnOff、但会将高速更改为0、然后恢复为1。
我们使用 GPIO 观察 tpFC_ctrl.bit.OnOff、它将不定期地更改、每次在20us 内恢复。
问题
对于这个问题,我们找到了两种解决方法。
关闭 编译器优化(从3 ->关闭)。
2.use volatile 关键字、用于定义 tPFC_ctrl。
问题来了
为什么编译器优化会让此问题发生?
2.如何使用编译器优化级别来避免此类问题。
另一次尝试
尝试 在 Cla1ToCpuMsgRAM 中重新定义 tPFC_ctrl、问题就会消失。 这意味着只有 CPU 允许问题发生、而不是 CLA。
我们使用 const 关键字 定义 tPFC_ctrl、只能使用指针访问 tPFC_ctrl 、但问题仍然存在。
您好!
您能否检查是否已执行此处详述的步骤:
确保正确共享数据。
此致、
Ozino
您好!
可以在《编译器用户指南》中找到有关 C 2000数据类型的更多信息。 请看表和第6.4节。
https://www.ti.com/lit/ug/spru514r/spru514r.pdf#page105
此致、
OZINO