取消任务挂起后,uC/OS-III会自动执行调度。若应用中不需其在取消任务后实现调度,可在上述两种方式后或操作宏OS_OPT_POST_NO_SCHED。 OSQPost():提交消息到对应的消息队列,消息的提交方式有三种,OS_OPT_POST_FIFO:先进先出方式,OS_OPT_POST_LIFO:后进先出方式,OS_OPT_POST_ALL:该消息将传递给所有在消息队列...
}else{/* No, Post to HPT waiting on mbox */(void)OS_EventTaskRdy(pevent, pmsg, OS_STAT_MBOX, OS_STAT_PEND_OK); }OS_EXIT_CRITICAL();if((opt & OS_POST_OPT_NO_SCHED) ==0u) {/* See if scheduler needs to be invoked */OS_Sched();/* Find HPT ready to run */}return(OS_...
OS_OPT_POST_ALL消息提交给所有在队列中等待的任务。 OS_OPT_POST_FIFO消息提交到消息队列的队尾。 OS_OPT_POST_LIFO消息提交到消息队列的队首。 OS_OPT_POST_NO_SCHED 消息被提交到消息队列,但不马上调用调度器。 消息挂起函数为: 其参数分别为:消息所被存放的消息队列地址、任务等待期满时间、消息队列失效模...
OS_OPT_POST_FIFOPost at the end of the queue. OS_OPT_POST_LIFOPost at the front of the queue. OS_OPT_POST_NO_SCHEDDo not run the scheduler after the post. Note(s): OS_OPT_POST_NO_SCHEDcan be added with one of the other options. p_err Pointer to the variable that will receive...
在进入临界段代码的时候使用宏OS_CRITICAL_ENTER(),退出临界区的时使用宏OS_CRITICAL_EXIT(),OS_CRITICAL_EXIT_NO_SCHED()。 2.时钟管理 (1)OSTimeTick()函数 UCOSIII需要一个系统时钟节拍,作为系统心跳 UCOSIII通过时钟节拍来对任务进行整个节拍的延迟,并为等待事件的任务提供超时判断。时钟节拍中断必须调用OSTimeTi...
(opt) { //根据选项情况分类处理 case OS_OPT_POST_1: //如果选项在预期内,不处理 case OS_OPT_POST_ALL: case OS_OPT_POST_1 | OS_OPT_POST_NO_SCHED: case OS_OPT_POST_ALL | OS_OPT_POST_NO_SCHED: break; default: //如果选项超出预期 *p_err = OS_ERR_OPT_INVALID; //返回错误类型为...
OnPostDraw (const Rect &invalidatedArea) virtual void Called after a view is drawn. ReMeasure () virtual void Remeasures the view size. Invalidate () void Refreshes the invalidated area of the view. InvalidateRect (const Rect &invalidatedArea) void Refreshes a view in a specified ...
16Uopt);//存放与任务相关的操作信息,有以下几种选择#defineOS_POST_OPT_NONE0x00u/* NO option selected */#defineOS_POST_OPT_BROADCAST0x01u/* Broadcast message to ALL tasks waiting */#defineOS_POST_OPT_FRONT0x02u/* Post to highest priority task waiting */#defineOS_POST_OPT_NO_SCHED0x04...
363 * OS_POST_OPT_NONE 定义消息只发送给等待邮箱消息得任务中优先级最高得任务; 364 * OS_POST_OPT_BROADCAST 让所有等待邮箱消息得任务都得到消息。 365 * 366 * 返回: OS_NO_ERR 消息成功的放到消息邮箱中; 367 * OS_MBOX_FULL 消息邮箱已经包含了其他消息,已满; ...
,要使用OS_CRITICAL_EXIT_NO_SCHED(),在函数的最后应根据选项情况是否进行。 1.7.4 没有使能中断延迟的锁住和开启调度器 没有使用中断延迟的时候,进入和退出临界段的操作如代码1-6所示。对比使用中断延迟,以下代码中的4种锁住和开启调度的方式非常“简单暴力”,直接调用中断的宏。这样做的坏处是导致关中断...