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.

关于CCS5.5.0中调试测试SFO()执行时间的问题

Other Parts Discussed in Thread: TMS320F28035

在CCS5.5.0+TMS320F28035+XDS100V1环境下,调试SFO()函数的执行时间。测试函数:update_MepScaleFactor();

函数结构:

void update_MepScaleFactor( void )
{
  /* MEP_ScaleFactor initialized using function SFO ()*/
  while (SFO() == 0) {
  }                                    /* MEP_ScaleFactor calculated by MEP Cal Module            */
}

测试方法:使用CCS5中的clock功能

结果:在step into调试下,update_MepScaleFactor()测得clock结果为2723。

        在step over调试下,update_MepScaleFactor()测得clock结果为138599。

为何step into和step over两个方式下clock结果差距这么大?求解。。。。。。

 

  • 先顶一下!!!!!!!!!!!!!!

  • step into是跳入函数内部单步,step over是直接执行完整个函数。

  • 但是对于update_MepScaleFactor();函数,step into和step over的clock结果应该是一样的。为什么clock结果不一样呢?

  • Hank Zhao 说:

    step into是跳入函数内部单步,step over是直接执行完整个函数。

    对于update_MepScaleFactor();函数,step into和step over运行完程序后clock执行时间应该相等。为什么差那么大?

  • while (SFO() == 0) {}是一条循环指令,step into只会执行一遍,但setp over会循环执行这条指令,直到SFO() 不等于0才结束。

  • Hank Zhao 说:

    while (SFO() == 0) {}是一条循环指令,step into只会执行一遍,但setp over会循环执行这条指令,直到SFO() 不等于0才结束。

    你好,我又调试了下,step into跳入while (SFO() == 0) {}后,按了4次step into才跳出这个while,并非只执行一次啊?

  • 你可以在while (SFO() == 0) {}里边加一个i++;语句,再分别step into和step over,从而比较两者的执行次数,看能发现有什么不同。

  • Hank Zhao 说:

    你可以在while (SFO() == 0) {}里边加一个i++;语句,再分别step into和step over,从而比较两者的执行次数,看能发现有什么不同。

    i的值是不一样的。我想问的问题就是,对于同一个SFO()==0判断,为什么step into和step over对这个判断的执行次数有影响?烦请详细说明