return 1是当前的延时还没有结束, return 0 是延时完成
延时的最小间隔是TIME1_UP_IRQHandler的间隔时间 ,如果是100ms, 每调用一次就会将Delaycount减去1,就是1个Delaycount就会产生一个100ms的延时,所以
uint8_t Delay_100ms( uint32_t interval )
{
if( Delaycount != 0 )
return 1 ; // 当前的延时没有结束, 这个判断可能是使用的硬件中断
Delaycount = interval ; // 间隔就是100ms , interval的值就是多少个100ms, 赋初值
while(Delaycount > 0 ) ; // 等待延时结束
return 0 ; // 延时结束
}
return 0和return 1都是返回到调用处,1是告诉调用的地方当前的延时还没有结束,也就是这次的调用是失败的。Delaycount是个全局变量,那么Delay_100ms这个函数在同一个时刻,只能被一个地方调用,并且直到Delaycount归0,当前的调用结束返回0后,才可以再次被调用。这可以看做是一种保护措施吧,否则的话,这次的调用会破坏当前正在进行的延时,相当于加长了延时的时间。
标签:延时,delay,100ms