昵称7324690 IP属地:北京

文章 关注 粉丝 访问 贡献
 
共 9 篇文章
显示摘要每页显示  条
ucos II 任务间 通信之五:消息队列2.3、 调用OSQcreate()函数创建消息队列,如下:OS_EVENT *pevent;接着,OSQCreate()函数从空闲队列控制块列表中取出一个队列控制块[ (3)]。然后该函数将事件控制块的类型设置为OS_EVENT_TYPE_Q [ (5)],并使其.OSEventPtr指针指向队列控制块[ (6)]。如果没有队列控制块可以使用,为了不浪费事件控制块资源,...
ucos II 任务间 通信之一:全局变量。1. 共享全局变量,这是最快捷有效的方式,实现这种通信可以采用以下两种方式:一是利用宏OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()来关闭中断和打开中断,二是利用函数OSSchedLock()和OSSchedUnlock()对μC/OS-II中的任务调度函数上锁和开锁.调用一次OSSchedLock(),就会对全局变量OSLockNesti...
ucos II 任务间 通信之二:事件控制块。可以这样理解,前面学习我们已经知道,创建一个任务需要给这个任务分配一个任务控制块,这个任务控制块存储着关于这个任务的重要信息。它存储着这个事件的重要信息,我们说创建一个事件(信号,邮箱,消息队列),其本质的过程就是初始化这个事件控制块。在这种情况下,当该事件发生后,所有等待该事件的...
ucos II 任务间 通信之三:信号量1.如果这时有任务控制块可用[ (3)],就将该任务控制块的事件类型设置成信号量OS_EVENT_TYPE_SEM[ (4)]。接着,用信号量的初始值对任务控制块进行初始化[(5)](如果信号量是用来表示一个或者多个事件的发生,那么该信号量的初始值应设为0, 如果信号量是用于对共享资源的访问,那么该信号量的初始值应设为1.),并调...
ucos II 任务间 通信之三:信号量2.OSSemPend()函数通过将任务控制块中的状态标志.OSTCBStat置1,把任务置于睡眠状态[ (5)],等待时间也同时置入任务控制块中[ (6)],该值在OSTimeTick()函数中被逐次递减。如果任务的任务控制块中的OS_STAT_SEM标志位没有置位,就认为调用OSSemPend()的任务已经得到了该信号量,将指向信号量ECB的指针从该任务...
ucos II 任务间 通信之四:邮箱。不同之处在于事件控制块的类型被设置成OS_EVENT_TYPE_MBOX[ (1)],以及使用.OSEventPtr域来容纳消息指针。void *OSMboxPend (OS_EVENT *pevent, INT16U timeout, INT8U *err)如果此时邮箱中没有消息是可用的(OSEventPtr域是NULL指针),OSMboxPend()函数检查它的调用者是否是中断服务子程序[ (4)]。INT8U OSMb...
ucos II 任务间 通信之五:消息队列1.邮箱可以实现从一个任务向另外一个任务发送一个指针变量,消息队列则可以实现从一个任务向另外一个任务发送很多个指针变量。消息队列也不例外,一个消息队列对应着一个队列控制块。当.OSQIn和.OSQEnd相等时,.OSQIn被调整指向消息队列的起始单元。指针.OSQStart和.OSQEnd定义了消息指针数组的头尾,以便在....
第八篇:uCOS第八篇:uCOS-II 消息队列及其操作。1.消息队列。消息队列和消息邮箱的不同就于消息邮箱可以认为是消息邮箱多次的发送,消息按FIFO或LIFO的方式存储而邮箱的话就这一次的发送会将上一次的发送覆盖掉,不具备FIFO的特性。2.消息邮箱的创建。3:请求消息队列。3:向消息队列发消息。4.下面举一个例子进行说明。
ucos对信号量的支持由os_sem.c, os_core.c支持。简单地说: 当信号量=0时,表示信号量代表的资源不可用,操作系统就调用OSSemPend()函数的任务加入该信号量的等待任务列表中;加1操作:当某任务调用OSSemPost()从FIFO中取出一个值时,该FIFO单元就空出一个可写单元,也就是资源多了一个,为表示这个变化,信号量要加1,一旦信号量由0->...
帮助 | 留言交流 | 联系我们 | 服务条款 | 下载网文摘手 | 下载手机客户端
北京六智信息技术股份有限公司 Copyright© 2005-2024 360doc.com , All Rights Reserved
京ICP证090625号 京ICP备05038915号 京网文[2016]6433-853号 京公网安备11010502030377号
返回
顶部