2 imeum imeum 于 2016.02.26 17:20 提问

UCOS中的OSTimeDly能被OSSemPOST唤醒吗

比如task1中有两条语句
OSTimeDly(65535);
OSSemPend(Sem_abc,0,&err);
dosomething();
此时延时未到,但task2调用了OSSemPOST(Sem_abc);
此时task1会马上执行dosomething吗?

1个回答

devmiao
devmiao   Ds   Rxr 2016.03.08 13:03
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
浅谈OSSemPost()和OSSemPend()
 在ucos-II中,为了实现任务之间的同步,用到的同步机制有:信号量,邮箱和消息队列。其中这里我主要说下对信号量的使用经验。信号量在创建时,      调用OSSemCreate(INT16U cnt)函数。cnt为信号量的初始值。对cnt赋予不同的值,所起到的作用不同。如果Semp = OSSemCreate(0), 该信号量表示等待一个事件或者多个事件的发生。       如
ucosiii时间管理
1.OSTimeDly()函数 当我们需要对一个任务进行延时操作的时候就可以使用这个函数,函数原型如下。 void OSTimeDly (OS_TICK dly,OS_OPT opt,OS_ERR *p_err) dly: 指定延时的时间长度,这里单位为时间节拍数。 opt: 指定延迟使用的选项,有四种选项。 OS_OPT_TIME_DLY 相对模式
任务延时函数,OSTimeDly()
µC/OS-Ⅱ提供了这样一个系统服务:申请该服务的任务可以延时一段时间,这段时间的长短是用时钟节拍的数目来确定的。实现这个系统服务的函数叫做OSTimeDly()。调用该函数会使µC/OS-Ⅱ进行一次任务调度,并且执行下一个优先级最高的就绪态任务。任务调用OSTimeDly()后,一旦规定的时间期满或者有其它的任务通过调用OSTimeDlyResume()取消了延时,它就会马上进入就绪状态。注意,
UCOS 的延时函数OSTimeDlyHMSM()实现精确延时
介绍UCOS的资料汗牛,但详细解说OSTimeDlyHMSM()函数的不多,经过本人仔细研究该函数代码并通过调试发现:要想实现精确延时的对代码进行相应的修正。    本人实现的是UCOS在2812上的移植,在其它DSP型号上移植情况是一样的,相差不大。    以下是OSTimeDlyHMSM()函数的代码片段:           ticks = ((INT32U)hours * 360
ucosII 调度器上锁后执行OSTimeDly(n)的后果
源码分析 给调度器上锁: void OSSchedLock (void) { if (OSRunning == TRUE) { OS_ENTER_CRITICAL(); OSLockNesting++; OS_EXIT_CRITICAL(); } } 上面的函
ucos系统使用delay函数死机原因
delay函数,占用了stm32的时钟 ucos需要靠stm32的时钟来调度任务 用裸机得delay就剥夺了ucos的时钟,所以死机 ucos ii 系统应该使用OSTimeDlyHMSM(0,0,0,10,OS_OPT_TIME_HMSM_STRICT,&err)函数做延时
uCOS-II中的任务切换机制(转)
初接触UCOS-II,对其任务转换机制的实现总是有点混乱,读了一篇博文,觉得清晰了许多,在这里就转过来mark一下~ 【@.1 函数周期与死循环】   一般函数的生命周期很简单,从开始调用函数起,直到函数返回,即结束。这样一来就完成了这个函数的使命,它也就不再需要了。对于一般的函数就是这样,但是回过头想想,对于一个系统、OS、或者工业控制中的一个控制器
UCOS-III学习笔记(个人总结)
一、UCOSIII简介 二、USOSIII源代码分析 1、EvalBoards文件夹      STM32F4的工程文件。 2、UC-CPU文件夹      与CPU相关的代码。 3、UC-LIB文件夹      由可移植并且与编译器无关的函数组成。
ucosIII 信号量
本文内容简介: 信号量信号量简介 信号量像是一种上锁机制,代码必须获得对应的钥匙才能继续执行,一旦获得了钥匙,也就意味着该任务具有进入被锁部分代码的权限。一旦执行至被锁代码段,则任务一直等待,直到对应被锁部分代码的钥匙被再次释放才能继续执行。 信号量用于控制对共享资源的保护,但是现在基本用来做任务同步用。 要想获取资源的任务必须执行“等待”操作, 如果该资源对应的信号量有效值大于1,则任务可以获得
UCOS的OSTimeDly()
问:比如 while (1) {   IO1SET|=0x00FF0000;//       OSTimeDly(500);////执行到这的时候,执行别的任务,这个延时也在执行? } //=============================================================== 即 OSTimeDly();在执行。 其他任务;也在执行?  答:OS