TI中文支持网
TI专业的中文技术问题搜集分享网站

请问 for(i=50000; i>0; i–); 的运行时间?

Peter_Zheng:

看一下汇编出来是几条汇编指令,大概的运行时间是3*50000个clock

Yun Zhang:

回复 Peter_Zheng:

曾经在TI_CC_spi.c内看到过如下的代码:

// Delay function. # of CPU cycles delayed is similar to "cycles". Specifically,

// it's ((cycles-15) % 6) + 15.  Not exact, but gives a sense of the real-time

// delay.  Also, if MCLK ~1MHz, "cycles" is similar to # of useconds delayed.

void TI_CC_Wait(unsigned int cycles)

{

 while(cycles>15)                          // 15 cycles consumed by overhead

   cycles = cycles – 6;                    // 6 cycles consumed each iteration

}

是否能说明MSP430的一个循环大约为6个时间周期?再除以频率就能得到大致的时间呢?

Charles Wu:

回复 Yun Zhang:

楼主是要做延时吧,430的编译器提供了一个本征函数__delay_cycle()来做延时,只需要把需要延时的cycle数量填入,编译器会自动行程一个准确的delay。这样比自己计算方便多了

Charles Wu:

回复 Charles Wu:

另外补充一点,要做准确的延时,最好的方式还是用GPIO口来输出电平变化,通过示波器来量测。这样做出来最准,也不用计算。

Young Hu:

回复 Charles Wu:

"看一下汇编出来是几条汇编指令,大概的运行时间是3*50000个clock"

MCLK不准的嘛。

Charles的办法比较靠谱。

赞(0)
未经允许不得转载:TI中文支持网 » 请问 for(i=50000; i>0; i–); 的运行时间?
分享到: 更多 (0)