-
xinjitmzy 发表于 2017-11-10 17:14
这类写法更像任务调度,比叫延时更合适。
:loveliness:
对,就是任务调度,嘻嘻,我还是新手,请多多指教
-
鉴于有些人对我以上两个函数不了解的,我将他们详细写出来,不然又要被某些人喷
对于以上的用法,当你有要延时后才去执行的内容时,如果使用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;
}
-
lcofjp 发表于 2017-11-9 16:38
发这帖子就是找喷的,来论坛里打广告来了是不是?
可能我写得有点简单了,如有不同看法,请您见谅
-
lcofjp 发表于 2017-11-9 16:38
发这帖子就是找喷的,来论坛里打广告来了是不是?
请注意您的言辞好吧,这个本来就是一个很好的防阻塞的延时啊
-
:victory::victory:
-
服气:@:
-
{:1_105:}这样也要。。。。。5个。。。。好吧
-
:):):)楼主棒棒哒,好厉害,好无私,嘿嘿,借鉴看看,了解了解内容。谢谢楼主咯
-
楼主棒棒哒
-
:):victory:
-
:time:
-
{:1_104:}{:1_101:}楼主好厉害,收钱好容易
-
这么多,而且个个要钱,好多呀,好多鱼呀:):):):):):):):):)希望凑够了来下,嘿嘿嘿
-
{:1_101:}
-
最近开始接触到射频这块,学习学习,下下来看看哦,嘿嘿嘿谢谢楼主喽:):):):):):):):):):):)
-
谢谢楼主分享。。。下下来看看,学习学习,嘿嘿嘿,支持楼主,虽然没看,不过应该是好东西
-
谢谢楼主分享。。。下下来看看,学习学习:):):):):):)
-
楼主棒棒哒,多谢楼主分享的好东西
嘿嘿嘿,有东西看了,正好在学中
-
高频率的显示不出,出现错误频率,求大神做出高精度的频率计啊
-
精度不高,没有达到万分之一的精度,谁能降低误差啊,求大神帮忙啊