tanchao的笔记 https://bbs.21ic.com/?230646 [收藏] [复制] [RSS]

日志

430精确延时问题

已有 1129 次阅读2008-9-8 12:51 |系统分类:单片机

今天在晚上发现一种MSP430的精确延时方法,经测试,确实狠精确。最低可以精确到1/OSC,例如:如果采用8MHz的晶体,那么最小延时就是125ns,已经利用示波器通过验证。


具体做法如下:


先做如下预定义:


#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为时钟,可以根据自己时钟设置。


然后在程序中直接条用delay_us和delay_ms即可。非常好用,入:


delay_ms (1);              //延时1ms


delay_us(1);               //延时1us


delay_us(0.125);               //延时0.125us


注意:最低延时只能是1/OSC,否则就没有延时了。


该方法缺点:不能传递变量,只能将常数作为参数


 


本方法转至:微控论坛


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)