430精確延時(shí)問(wèn)題
發(fā)現(xiàn)一種MSP430的精確延時(shí)方法,經(jīng)測(cè)試,確實(shí)狠精確。最低可以精確到1/OSC,例如:如果采用8MHz的晶體,那么最小延時(shí)就是125ns,已經(jīng)利用示波器通過(guò)驗(yàn)證。
具體做法如下:
先做如下預(yù)定義:
#define CPU_F ((double)8000000)
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
其中第一行中的8000000為時(shí)鐘,可以根據(jù)自己時(shí)鐘設(shè)置。
然后在程序中直接條用delay_us和delay_ms即可。非常好用,入:
delay_ms (1); //延時(shí)1ms
delay_us(1); //延時(shí)1us
delay_us(0.125); //延時(shí)0.125us
注意:最低延時(shí)只能是1/OSC,否則就沒(méi)有延時(shí)了。
該方法缺點(diǎn):不能傳遞變量,只能將常數(shù)作為參數(shù)