msp430的延时函数是怎么计算的

//当时钟为1MHZ时定时k*0.14ms/*voiddelay(uintk){uintj=140;while(k--)while(j--);}*/这到底是不是1MHZ时... //当时钟为1MHZ时定时k*0.14ms
/*void delay(uint k)
{
uint j=140;
while(k--)
while(j--);
}*/
这到底是不是1MHZ时定时k*0.14ms
这个是我写的用时老觉得有点问题
在写驱动程序时老有这种delay()函数,但到底怎么看出来的呢,51可以通过编译软件来看出,但430怎么来看呢?IAR软件我怎么也找不到计算时间的方式
delayus();
delayms();
怎么写呢?
展开
 我来答
20082259
2012-03-27 · 超过10用户采纳过TA的回答
知道答主
回答量:17
采纳率:0%
帮助的人:22.1万
展开全部
程序延时delay函数只能是估算大概的时间,实际的要比0.14*kms长。
因为指令的执行有以下阶段:取址,取操作数,执行指令。
此程序中仅执行指令就需要0.14*kms。
因此若需要精确延时,计时器是必须使用的
小熊电子书
2012-03-21
知道答主
回答量:7
采纳率:0%
帮助的人:9.1万
展开全部
以下是MSP430的延迟
#define CPU_F ((double)32000000)//CPU主频 MCLK=32MHz
#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)) //毫秒
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
499707174
2012-03-22
知道答主
回答量:70
采纳率:0%
帮助的人:18.1万
展开全部
应该是0.14+k*0.001ms
追问
你可能还没看清楚吧
while(k--)
后面没分号
追答
嗯 不好意思,你说的对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式