|
发表于 2011-11-25 16:03:19
|
显示全部楼层
嗯,这个可以有:
方法一:
使用IAR自带的延时函数,宏定义如下:
#define CPU_F ((double)1000000) //MCLK主频
#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))
方法二:
另外一种是弄几个延时函数,在延时函数处设置两个断点,进入仿真,打开view->register->CPU registers,就可以查看cyclecounter了,根据两个断点间经历的周期就可以算出延时函数用了多长时间了。这样就可以根据需要添加或减少循环周期了。
方法三:
利用定时器延时,这个可靠性最高
方法四:
利用示波器测定,连续地对某一位输出取反观测输出的波形的频率就可以算出间隔了
对于430的粗略延时常用
void delay(unsigned int ms)
{
unsigned int i,j;
for( i=0;i<ms;i++)
for(j=0;j<1141;j++); //8MHz晶振时
} |
|