cjystar 发表于 2014-6-24 20:46

在CCS5.2的编译器环境下编程的问题。

在CCS5.2的编译环境下,采用C语言编程,但是有的时候会出现某一条程序不执行而是直接的跳过了,有的时候在该语句前后加上几句asm(" nop");语句就可以了,但是有的时候加了asm(" nop");语句还是好像被跳过没有被执行,这是什么原因呢,是程序被编译器优化的原因吗?

zhangmangui 发表于 2014-6-24 21:42

编译器没这么菜吧    除非条件不满足
不然不会不执行啊   没有遇到过这样的问题
也没有看到过坛里有类似的问题
你在排查一下吧   你是怎么判断没有执行的呢?

zhangmangui 发表于 2014-6-24 21:43

还有一种可能就是一些特殊的寄存器配置时需要等待配置完成并且到达稳定状态
这样就需要加些延时等待你看看是不是这种

cjystar 发表于 2014-6-24 21:56

zhangmangui 发表于 2014-6-24 21:43 static/image/common/back.gif
还有一种可能就是一些特殊的寄存器配置时需要等待配置完成并且到达稳定状态
这样就需要加些延时等待你 ...

这貌似是一种可能,但是我是在一个自定义的函数中,其他的语句都是可以执行的,就是其中的一个简单的加法语句就是没有执行,我也在该语句的前后加了延时的,但是还是不行;还有就是我将与其有关的变量也换成volatile类型的,但是还是不行,不理解这是什么情况导致的。

zhangmangui 发表于 2014-6-24 21:57

cjystar 发表于 2014-6-24 21:56 static/image/common/back.gif
这貌似是一种可能,但是我是在一个自定义的函数中,其他的语句都是可以执行的,就是其中的一个简单的加法 ...

真心不懂怎么回事    你在排查一下吧

cjystar 发表于 2014-6-24 22:02

zhangmangui 发表于 2014-6-24 21:42 static/image/common/back.gif
编译器没这么菜吧    除非条件不满足
不然不会不执行啊   没有遇到过这样的问题
也没有看到过坛里有类似 ...

我是在一个自定义的函数中,下载在flash中运行,在这个函数中做算法,其中有一条语句是加法语句,我是在此处设置断点,但不运行,调试看结果,发现这条语句好像就是没有执行,似乎就是被跳过了一样。

一表羊才 发表于 2014-6-26 17:37

那你查看一下相关的寄存器或者变量,确认一下是否执行了

cjystar 发表于 2014-6-27 09:12

一表羊才 发表于 2014-6-26 17:37 static/image/common/back.gif
那你查看一下相关的寄存器或者变量,确认一下是否执行了

就是查看变量的值,感觉是没有执行这条语句

AD797 发表于 2014-6-27 09:26

ccs5或者28335确实有比较莫名其妙的问题,比如,GpioDataRegs.GPADAT.bit.GPIO11定义为rest,rest=0;连续运行后却为高电平,但单步调试是对的。或者写成GpioDataRegs.GPADAT.bit.GPIO11 = 0也是对的。 或者rest=0;写两遍也行。
前后没有配置寄存器,都是IO操作,而且前面已经加asm(" RPT #5 ||NOP");延时了。

cjystar 发表于 2014-6-29 15:01

AD797 发表于 2014-6-27 09:26 static/image/common/back.gif
ccs5或者28335确实有比较莫名其妙的问题,比如,GpioDataRegs.GPADAT.bit.GPIO11定义为rest,rest=0;连续 ...

出现这样的问题就比较的头疼,在TI的官网上问了也没有明确的回复

赤子旭升 发表于 2014-6-30 16:38

楼主你好,我也遇到了和你相似的问题,反汇编语句中大多是asm(00000000 nop)这样的语句,单步调试的时候也不像正常运行,不知道你的问题解决了没

cjystar 发表于 2014-6-30 19:05

赤子旭升 发表于 2014-6-30 16:38 static/image/common/back.gif
楼主你好,我也遇到了和你相似的问题,反汇编语句中大多是asm(00000000 nop)这样的语句,单步调试的时候也 ...

首先保证你的程序本身是没有问题的,然后在去确定是那条语句是被优化的,然后在该语句前后加上asm( "nop")
;试着用不同的方式去实现现在的程序
页: [1]
查看完整版本: 在CCS5.2的编译器环境下编程的问题。