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

请教 iar 430 精确延时的方法

#define CPU_F ((double)20000000) //1000000为MCLK=1MHZ 的意思

//#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))

 

#define delay_us(A)  __delay_cycles( (unsigned long) ( (double)(CPU_F) *((A)/1000000.0) + 0.5))

 

#define delay_ms(A)  __delay_cycles( (unsigned long) ( (double)(CPU_F)*((A)/1000.0) + 0.5))

 

#define delay_s(A)  __delay_cycles( (unsigned long) ( (double)(CPU_F)*((A)/1.0) + 0.5))

 

以前用的是这种,后来发现并不准确,请大家帮帮忙啊~~

Young Hu:

您好。

__delay_cycles是相对来说比较准确的方式了。

问您两个问题:

1、能不能描述一下不准确的现象?

2、MCLK频率是多少?用IO口输出来看看;

3、您用的MSP是哪个型号?如果4、5系列使用FLL,要准确得多的

Guo Yan:

回复 Young Hu:

我用的是5438A 锁频到20MHZ 从端口看主频是没有问题的。用频率计测的。

一个端口低电平切换到高电平在到低电平 中间用了延时

程序下载后 拔掉了编程器 用逻辑分析仪 和示波器都观察了 每次复位后的延时是不确定的

我延时了5ms 正常时是差不多的 而错误时不到5us 只是复位了一下。。

电池是新的。。

赞(0)
未经允许不得转载:TI中文支持网 » 请教 iar 430 精确延时的方法
分享到: 更多 (0)