c语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 -电子工程世界-论坛 -手机版...
2017-11-10 17:09
鑒于有些人對我以上兩個函數不了解的,我將他們詳細寫出來,不然又要被某些人噴
對于以上的用法,當你有要延時后才去執行的內容時,如果使用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;
}
總結
以上是生活随笔為你收集整理的c语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 -电子工程世界-论坛 -手机版...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 随机森林c语言编程,一种基于随机森林的C
- 下一篇: c语言map函数k v都是int,Go语