TI中文支持网
TI专业的中文技术问题咨询交流网站

CC7.2 怎么防止代码被优化掉

TI工程师,我的项目使用的是CCS7.2,MCU为TMS320F28069,设置的优化级别为2,现在发现有些代码被CCS优化掉了,不会被运行。如我在串口接收中断中接收到数据后让指示灯闪烁,程序运行时接收到数据但灯没有闪烁,仿真进去发现指示灯闪烁的代码没有执行。而同样的代码在定时中断又可以执行。请问怎么防止代码被优化掉?如设置代码优化级别为0,运行速度就会变慢。

peng huifeng:

把对应的代码贴出来,才好帮你找问题,不同的优化级别会对代码运行产生影响,所以一般我们选择不进行优化,性能也差不了太多的

TI工程师,我的项目使用的是CCS7.2,MCU为TMS320F28069,设置的优化级别为2,现在发现有些代码被CCS优化掉了,不会被运行。如我在串口接收中断中接收到数据后让指示灯闪烁,程序运行时接收到数据但灯没有闪烁,仿真进去发现指示灯闪烁的代码没有执行。而同样的代码在定时中断又可以执行。请问怎么防止代码被优化掉?如设置代码优化级别为0,运行速度就会变慢。

Seven Han:

您右键工程打开properties>optimizition,把优化关掉是否可以正常运行呢?

TI工程师,我的项目使用的是CCS7.2,MCU为TMS320F28069,设置的优化级别为2,现在发现有些代码被CCS优化掉了,不会被运行。如我在串口接收中断中接收到数据后让指示灯闪烁,程序运行时接收到数据但灯没有闪烁,仿真进去发现指示灯闪烁的代码没有执行。而同样的代码在定时中断又可以执行。请问怎么防止代码被优化掉?如设置代码优化级别为0,运行速度就会变慢。

hu vison:

代码被优化了,说明你写的代码不规范,语法不合理导致的。可参考华为的C语言编程规范(网上有相关资料),重新优化你的代码。

TI工程师,我的项目使用的是CCS7.2,MCU为TMS320F28069,设置的优化级别为2,现在发现有些代码被CCS优化掉了,不会被运行。如我在串口接收中断中接收到数据后让指示灯闪烁,程序运行时接收到数据但灯没有闪烁,仿真进去发现指示灯闪烁的代码没有执行。而同样的代码在定时中断又可以执行。请问怎么防止代码被优化掉?如设置代码优化级别为0,运行速度就会变慢。

user524568:Seven Han,你好,谢谢你的回复

1.我把优化关闭后,问题就更奇怪了,定时器中断和串口中断都无法进入,只能进入mainISR,也就是ADC中断;

2.设置优化为2,在仿真状态下,所有的中断正常,电机可以通过串口的指令正常运行,但是断电后,重新上电感觉串口中断好像不起作用了,PC端可以接收开发板发过来数据,但PC端发过去的指令MCU不执行了,不知道是什么原因,我串口中断加指示灯目的就是确定串口中断是否还在起作用,现在证明不起作用了,好像MCU接收到数据了(MCU板上的蓝灯在闪),但没有进入中断,所以串口处理程序也就没有执行;

3.把优化级别设为0,和设为2的问题一样。

我用的是DRV8301-F28069M官方的开发板,串口用的是编程的USB口自带的串口1,程序用的官方的电机套件Motorware中tab10e的例程,不知道什么原因。

TI工程师,我的项目使用的是CCS7.2,MCU为TMS320F28069,设置的优化级别为2,现在发现有些代码被CCS优化掉了,不会被运行。如我在串口接收中断中接收到数据后让指示灯闪烁,程序运行时接收到数据但灯没有闪烁,仿真进去发现指示灯闪烁的代码没有执行。而同样的代码在定时中断又可以执行。请问怎么防止代码被优化掉?如设置代码优化级别为0,运行速度就会变慢。

user524568:

回复 user524568:

TI工程师能帮忙解答吗?

赞(0)
未经允许不得转载:TI中文支持网 » CC7.2 怎么防止代码被优化掉
分享到: 更多 (0)