|
今天想测试一下for延时和usleep的区别,结果大吃一惊,发现for延时不起作用。下面贴出测试过程
1.测试环境:nios11.1,优化级别为level3,系统时钟50MHZ
2.测试代码
#include <stdio.h>//printf
#include <unistd.h> //usleep
#include <sys/alt_timestamp.h>
#include "system.h"
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
int main(void)
{
alt_u32 cnt1 = 0;
/**/
alt_u32 t0,t1,t2;
alt_timestamp_start();//开始时间戳服务
t0 = alt_timestamp();//开始测量时间
usleep(1000*1000);//1ms
t1 = alt_timestamp();
//20ns*50000=1ms
for(cnt1=0;cnt1<500000;cnt1++);//for循环延时
t2 = alt_timestamp();
printf("(t1-t0)=%ld\n",(t1-t0));
printf("(t2-t1)=%ld\n",(t2-t1));
printf("\n");
printf("系统时钟频率是 %ld Hz\n", alt_timestamp_freq());
return 0;
}
3.测试结果
(t1-t0)=48000174
(t2-t1)=37
系统时钟频率是 50000000 Hz |
|