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

263c3cda5b9d5f4945131de7a92d6da3.png

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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值