近客户须要把延时时间长到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);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>