软件为CCS3.3,芯片采用tms320f2802,仿真器为SEED XDS 510PLUS。
状况描述:在使用在线调试的时候,从ADC的结果寄存器中读取采样数值,然后赋值给全局变量VoltSample,在memory窗口和watch窗口中分别观察ADC的RESULT寄存器的数值和全局变量VoltSample的数值。程序运行到赋值语句处,可以从Memory窗口和watch窗口中看到Result寄存器内的数值变化,但是全局变量VoltSample的值始终是0,没有改变。增加代码 VoltSample = 1;if( VoltSaple == 1) VoltSample =2;进行测试,在仿真调试的时候确实进入到了if的条件判断中,并且执行了语句VoltSample = 2;但是该全局变量数值的变化在watch窗口和Memory窗口中始终是0,没有任何变化。而抛开仿真器,控制板直接上电运行的效果则可以看出,VoltSample实际上是被成功赋值的,只是在线仿真的Memory窗口和watch窗口中没有显示出变化。但是,局部变量的变化和寄存器的变化都是可以在观察窗口中体现出来的。
问题:出现这种情况是什么原因,如何解决?调试看不到变量值很多地方无法进行下去,寻求帮助。
Eric Ma:
仿真暂停的时候这些全局变量有没有变化啊?
或是你单步跑试试。
另外建议升级到CCS6.
ERIC
软件为CCS3.3,芯片采用tms320f2802,仿真器为SEED XDS 510PLUS。
状况描述:在使用在线调试的时候,从ADC的结果寄存器中读取采样数值,然后赋值给全局变量VoltSample,在memory窗口和watch窗口中分别观察ADC的RESULT寄存器的数值和全局变量VoltSample的数值。程序运行到赋值语句处,可以从Memory窗口和watch窗口中看到Result寄存器内的数值变化,但是全局变量VoltSample的值始终是0,没有改变。增加代码 VoltSample = 1;if( VoltSaple == 1) VoltSample =2;进行测试,在仿真调试的时候确实进入到了if的条件判断中,并且执行了语句VoltSample = 2;但是该全局变量数值的变化在watch窗口和Memory窗口中始终是0,没有任何变化。而抛开仿真器,控制板直接上电运行的效果则可以看出,VoltSample实际上是被成功赋值的,只是在线仿真的Memory窗口和watch窗口中没有显示出变化。但是,局部变量的变化和寄存器的变化都是可以在观察窗口中体现出来的。
问题:出现这种情况是什么原因,如何解决?调试看不到变量值很多地方无法进行下去,寻求帮助。
Jason Wu4:
在全局变量执行语句前后分别设定断点运行查看即可。