你好
我尝试通过运行下面的代码来测量 CPU 速度、并测量它在断点(末尾的 while (1)命令)中停止的时间
void main (void)
{
volatile unsigned int dlyCount、counter=0;
无符号超长整型 ullTimeStart、ullTimeDiff、ullTimeEnd;
TSCL = 0;
ullTimeStart = TSCL;
ullTimeStart +=(无符号超长整型) TSCH <<32;
while (1)
{
COUNTER++;
for (dlyCount=0;dlyCount<100000;dlyCount++);
IF (计数器>10000)
中断;
ullTimeEnd = TSCL;
ullTimeEnd +=(无符号超长整型) TSCH <<32;
ullTimeDiff = ullTimeEnd - ullTimeStart;
};
while (1);//断点
}
到达断点所需的时间为64秒、 ullTimeDiff =19、000、620、000。
我在 C6748 LCDK 板上运行此代码、并使用 LCDK GEL 文件将 CPU 时钟配置为300MHz。
当我查看汇编代码时、for 命令是在单个指令上执行的、这意味着对于100000 * 10000循环、它将花费1000000000 * 3.3nsec= 3.3sec、如果花费64sec - 20倍的时间、它将花费1000000000 * 3.3nsec= 3.3sec。
ullTimeDiff 看起来是正确的。
造成这种延迟的原因可能是什么?
