C語(yǔ)言中,想使用精確的延時(shí)程序并不容易。IAR 中有這樣的一個(gè)函數(shù) __delay_cycles(),該函數(shù)在頭文件intrinsics.h中定義,函數(shù)的作用就是延時(shí)N個(gè)指令周期。根據(jù)這個(gè)函數(shù)就可以實(shí)現(xiàn)精確的延時(shí)函數(shù)了(但不能做到100%精確度)。實(shí)現(xiàn)的方法:
本文引用地址:http://www.ex-cimer.com/article/201612/325109.htm建立一個(gè)delay.h的頭文件:
#ifndef __IAR_DELAY_H
#define __IAR_DELAY_H
#include
#defineXTAL8//可定義為你所用的晶振頻率(單位Mhz)
#definedelay_us(x)__delay_cycles ( (unsigned long)(x * XTAL))
#definedelay_ms(x)__delay_cycles ( (unsigned long)(x * XTAL*1000) )
#definedelay_s(x)__delay_cycles ( (unsigned long)(x * XTAL*1000000) )
#endif
注意: __delay_cycles(x),x必須是常量或則是常量表達(dá)式,如果是變量則編譯報(bào)錯(cuò)!
評(píng)論