|
鉴于有些人对我以上两个函数不了解的,我将他们详细写出来,不然又要被某些人喷
对于以上的用法,当你有要延时后才去执行的内容时,如果使用delay()函数,会造成系统阻塞
造成bug,对于误差要求不高的,精度不高的代码可能看不出这种最带来的后果
如果看过一些好的源码的人都能理解我所说的这种用法的好处
新手可以试着去感受和学习
一个过来人的经验
不喜勿喷
//-----------------------------------------------
//Fun : void WaitInitial(u32* pBaseTime)
//In : *pBaseTime - 要初始化的时间
//Out : NULL
//Des : 等待时间初始化
//-----------------------------------------------
void WaitInitial(u32* pBaseTime)
{
#ifdef SYS_PLAT_8BIT
SYS_EMI_DIS();
#endif
*pBaseTime = wSysTick; //mTMRBase;
#ifdef SYS_PLAT_8BIT
SYS_EMI_EN();
#endif
}
//-----------------------------------------------
//Fun : u8 WaitChk(u32* pBaseTime, u32 WaitSet)
//In : *pBaseTime - 要比较的时间
// WaitSet - 延时时间
//Out : NULL
//Des : 0- 延时时间到
//-----------------------------------------------
u8 WaitChk(u32* pBaseTime, u32 WaitSet)
{
u32 i32, j32;
#ifdef SYS_PLAT_8BIT
SYS_EMI_DIS();
#endif
j32 = wSysTick;
#ifdef SYS_PLAT_8BIT
SYS_EMI_EN();
#endif
//求值
i32 = j32 - (*pBaseTime);
//判断
if(i32 >= WaitSet)
{
//时间到
(*pBaseTime) = j32;
return 0;
}
return 1;
}
|
|