nofreeze 发表于 2019-2-20 20:19:36

os_itv_set绝对延时函数的疑问

eric大神:
我写的程序中RTX任务中使用os_itv_set设置延时1s,使用os_itv_wait绝对延时函数,通过keil的线程调试窗口,个别时候会出现在调用os_itv_set的这个函数等待很久(大概30s),相当于这段时间这个任务一直被阻塞了,非常奇怪,换成os_dly_wait就好了,不会出现这个问题,但是os_dly_wait不能实现准确的周期延时,我想问,假设在别的高优先级的RTX任务占用CPU时间过长(调度锁 互斥量等原因 ),超过了os_itv_set设定的延时时间,是不是就会出现这种情况

eric2013 发表于 2019-2-21 00:43:17

别用调试组件,直接在此任务里面加个IO翻转,示波器看。

myxiaonia 发表于 2019-2-21 15:23:24

这很正常啊,就算os_itv_wait等待结束了,其他任务优先级高还是会出现这种问题的。不过你的问题很奇怪,os_dly_wait就没有问题了,os_itv_set性能再不济他也只是一个dly,它的实现很简单,和os_dly_wait意义基本一样
页: [1]
查看完整版本: os_itv_set绝对延时函数的疑问