嵌入式学习小组
直播中

王秀梅

8年用户 183经验值
私信 关注

UCOSIll条件判断中嵌套延时效果不佳怎么办?

近来才学uCOs,手上一个感应无线上水小项目,在编写感应器感应程序时,因为要感应器感应器到有水低电平延时几分钟后再次判断是否为低电平,类似于按键防抖功能,试用了系统的OStimeDly函数和另一个延时函数一直没达到想要的效果,因为延时函数会进行任务切换,所以运行时感觉没延时一样,现不知该处理这问题,上锁和临界保护都不理想,难道要用定时器才行吗?求高手指点

回帖(8)

李宁

2020-5-20 08:37:40
OStimeDly()延时N个时钟节拍,OSTimeDlyHMSM()延时具体的时、分、秒、毫秒,延时期间该任务挂在延时链表OSTickListDly,每个systick中断来时都会检测OSTickListDly中最快要到时的任务是否已经延时完,如果是就进入就绪队列。你所说感觉没延时是个啥情况,你没弄明白的话仿真下看下调用OStimeDly()前后,延时的时间是否准确
举报

李泽坚

2020-5-20 08:48:34
就是判断条件为真时没进入延时函数再判断就直接执行里面的语句了
来自: 微社区
举报

黄玫玫

2020-5-20 09:08:19
你把代码贴出来吧,你光说我也不清楚啥情况
举报

彭望琼

2020-5-20 09:18:19
语句是先是-带返回值的了函数,if读取感应器的状态返回不同值,然后在数据发送函数里Case:,在if里先判断只能Return返回一个值,不能在中间加延时再判断感应器状态然后返回另一值,这样会报错!如果根据返回值在Case里加延时再判断或启用定时器再判断同样报错!郁闷!今天忘了附代码,明天再贴上
来自: 微社区
举报

更多回帖

发帖
×
20
完善资料,
赚取积分