新闻  |   论坛  |   博客  |   在线研讨会
软件延时函数的问题
电子禅石 | 2017-12-12 17:39:09    阅读:9740   发布文章

使用STM8L101F3P6 实现一个50分钟的充电循环,充一分钟,停止1s,进行检测;使用下面的延时函数,发现,到最后的十几分钟,这个循环会被打乱。原因暂时还没找到。


//延时毫秒

 void Delayms(__IO uint16_t  time)

{

 // static unsigned int i;

  while(time--){

   // for(i=900;i>0;i--)

    for(uint8_t i=180;i>0;i--)//100

    {

     // Delayus();

       asm("nop"); 

       asm("nop");

       asm("nop");

       asm("nop");

       asm("nop");

       asm("nop");

       asm("nop");

       asm("nop");

       asm("nop");

       asm("nop");

    }

  }

}

//秒延时

void DelayS( __IO uint8_t stime)

{

  while(stime--)

  {

    Delayms(800);//1000

  }

}

主程序就是:DelayS(60)   DelayS(1);

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
电子禅石  2017-12-13 12:00:50 

其实没有问题,主要原因是充电芯片的问题,开关一次充电芯片,它本身会做检测,如果电压大于4.1V,就不输出电流。其实用示波器抓波形,完美的符合 充电一分钟,停止1s. 遇到问题,自己去想真的是软件问题吗?有没有别的原因。

属于自己的技术积累分享,成为嵌入式系统研发高手。
推荐文章
最近访客