IAR 軟件430的編譯器里面我們可以利用它內部的延時子程序來實現我們想要的高精度軟件延時,方法如下:
(1):將以下這段代碼復制到你的.C源文件中。
#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))
(2):修改
在 #define CPU_F ((double)8000000) 語句里 8000000 修改成你當前MSP430 CPU的主頻頻率,即CPU的MCLK。
單位為HZ。本例中的8000000為MCLK=8MHZ 的意思。
(3):使用范例
delay_us(1); //1 微秒的延時
delay_ms(1); //1 毫秒的延時
delay_us(3.5); //延時3.5微秒
delay_ms(3.5); //延時3.5毫秒
delay_ms(1000); //延時1秒
直接調用,如:__delay_cycles(100),就延時100個時鍾周期.
只能是常數,因為編譯器會重新編譯為匯編代碼