工具/软件:TI C/C++编译器
您好!
客户使用 F28034进行电机控制。 现在、他们面临一个有关编译器优化的问题。 由于优化、代码序列发生了更改、与*。c 文件中的序列不同。 我们想知道原因和避免方法。
详细信息:
1)编译器版本:4.1.3和6.2.x 有相同的问题;
2) 2)优化级别2和3具有相同的问题、因为代码位于一个函数中。
3) 3)下面是代码的拆分、gBeforeRunPhaseLose。CurComperCoff = Data1;序列通过优化2或3进行更改。 它在大约11个行代码之后执行。
4) 4)下面是未进行优化的拆分。 它会立即执行。 gBeforeRunPhaseLose.CurComperCoff 将设置正确的值而不会有任何延迟。
5) 5)在函数中、 gBeforeRunPhaseLose .CurComperCoff 将在其他两个位置设置其他值。 如果从编译中排除这两个 place'代码、则结果类似于第4点)。 CurComperCoff 将立即设置正确的值。 如果这两个位置的代码被建立、就会出现问题、如第3点)。 优化将这些代码"合并"并导致新值设置延迟。
非常感谢。
BR、Jordan