高级会员

- 积分
- 981
- 金钱
- 981
- 注册时间
- 2015-9-20
- 在线时间
- 148 小时
|
发表于 2015-10-4 16:01:14
|
显示全部楼层
回复【3楼】正点原子:
---------------------------------
请教一下原子哥,void delay_ms(u16 nms)
{
if(OSRunning==TRUE)//如果 os 已经在跑了
{
if(nms>=fac_ms)//延时的时间大于 ucos 的最少时间周期
{
OSTimeDly(nms/fac_ms);//ucos 延时
}
nms%=fac_ms;//ucos 已经无法提供这么小的延时了,采用普通方式延时
}
delay_us((u32)(nms*1000)); //普通方式延时
}
这段代码里面nms%=fac_ms;//ucos 这个语句是不是不能被执行啊,也就是说我怎么觉得
if(nms>=fac_ms)//延时的时间大于 ucos 的最少时间周期
{
OSTimeDly(nms/fac_ms);//ucos 延时
}这段代码会进入死循环,因为nms没有被赋值所以if语句应该一一直为真或者一直为假...................................... |
|