while(1)
{
num++;
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
if(num > 5143000) //1
break;
}
count = TIMER_GetCounter(TIMER1) / 1000;
printf("NOP :%d\n",count);
// //先用这个测出一个num值,因为time get count也会占用时间,所以势必不准确,然后放在上面去测
num=0;
TIMER_SET_CMP_VALUE(TIMER1, 0xFFFFFF);
while(1)
{
num++;
__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();
count = TIMER_GetCounter(TIMER1) / 1000;
if(count == 1000)
break;
}
printf("NOP :%d\n",num);
while(1);
/*
下面测数:1ms ---3438 1s 3018417
上面按理说让num加到对应的数值,延迟应该差不多(稍微少一点),但事实情况是:586(1s,实际只有586ms)另一个自然为零,因为测试最小是ms
通过反复测试,不断去所有数值范围,
最后精确的测出,在此情况下,5143000为精确的1s。
另外:通过删除__NOP()的个数发现,单个延时在71ms.
问题:不清楚差别为什么这么大,下面测出的数不大反而小
*/
|