长时间延时

2019-07-21 07:21发布

近客户须要把延时时间长到120S,而delay_ms()只能延时1.86S。为了达到长延时效果,自己重新写了个函数分享给大家一起学习与改进,此延时函数精度不是很高。
void LongDelay_ms(u32 delay)
{
   u32 Remainder;
   if (delay > 1000)
  {
     Remainder = delay % 1000;//先延时余数
     if (Remainder)
       delay_ms(Remainder);
     delay -= Remainder; //减除余数
     for (; delay >= 1000; delay -= 1000)
     {  
       IWDG_ReloadCounter();//最大间隔时间为1.86S 所以1.86S内必须喂狗
       delay_ms(1000);
     }
     
   }
else
   {
     delay_ms(BackTime);
   }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。