日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 -电子工程世界-论坛 -手机版...

發布時間:2025/3/20 编程问答 43 豆豆

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语言如何给阻塞函数加超时,在代码中写一个延时而不阻塞的函数方法,给大家的参考 - 单片机 -电子工程世界-论坛 -手机版...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。