智能车制作

标题: 精确延时的书写 [打印本页]

作者: a086711    时间: 2011-3-19 14:36
标题: 精确延时的书写
想用for控制精确延时,到ms级即可,是怎么算的,是根据总线频率算的吗?
void delay()   /*延时1s*/

{
  unsigned int i,j;
  for(i=16000;i>0;i--)
    for(j=2000;j>0;j--);
}
当总线频率为32M的时候延时时间是多长?
作者: chrisforbt    时间: 2012-6-30 17:44
总共是32000000次脉冲,跟总线周期一致。故1S。

作者: 心静0189    时间: 2012-12-7 13:34
chrisforbt 发表于 2012-6-30 17:44
总共是32000000次脉冲,跟总线周期一致。故1S。

可以这么算?
作者: chiusir    时间: 2012-12-7 23:28
这样貌似不妥,PE本身可以产生一个100us的延时,用汇编实现的,算是很精确了。
作者: 自明了然    时间: 2013-3-5 11:22
本帖最后由 自明了然 于 2013-3-5 11:32 编辑
chiusir 发表于 2012-12-7 23:28
这样貌似不妥,PE本身可以产生一个100us的延时,用汇编实现的,算是很精确了。

void Dly_ms(int ms)
{
   int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii<ms;ii++)
     for(jj=0;jj<2670;jj++);    //busclk:32MHz--1ms
     //for(jj=0;jj<5340;jj++);    //busclk:64MHz--1ms         
}
请问你们龙丘给的延时函数,Dly_ms(1);的话是粗略的1ms吗?(分别总线32m,64m)怎么算的?(1/32M)*2670*12=1ms?如何通过true time simulator的debug窗口看仿真时间的?



作者: chiusir    时间: 2013-3-7 23:34
自明了然 发表于 2013-3-5 11:22
void Dly_ms(int ms)
{
   int ii,jj;

用示波器和DG128单片机实测的!

作者: 小辉    时间: 2013-7-25 08:32
用定时器中断,更精准




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2