是任务中断服务子-emc datadomain 2500 存储设 备维护手册

时间:2024-06-29 01:39:14
【文件属性】:

文件名称:是任务中断服务子-emc datadomain 2500 存储设 备维护手册

文件大小:4.33MB

文件格式:PDF

更新时间:2024-06-29 01:39:14

uCOS-II

6.7 消息队列 消息队列是µC/OS-II中另一种通讯机制,它可以使一个任务或者中断服务子程序向另一个 任务发送以指针方式定义的变量。因具体的应用有所不同,每个指针指向的数据结构变量也有 所不同。为了使用µC/OS-II 的消息队列功能,需要在 OS_CFG.H 文件中,将 OS_Q_EN 常数设置 为 1,并且通过常数 OS_MAX_QS来决定µC/OS-II支持的最多消息队列数。 在使用一个消息队列之前,必须先建立该消息队列。这可以通过调用 OSQCreate()函数(见 6.07.01节),并定义消息队列中的单元数(消息数)来完成。 µC/OS-II提供了 7个对消息队列进行操作的函数:OSQCreate(),OSQPend(),OSQPost(), OSQPostFront(),OSQAccept(),OSQFlush()和 OSQQuery()函数。图 F6.7是任务、中断服务子 程序和消息队列之间的关系。其中,消息队列的符号很像多个邮箱。实际上,我们可以将消息 队列看作时多个邮箱组成的数组,只是它们共用一个等待任务列表。每个指针所指向的数据结 构是由具体的应用程序决定的。N 代表了消息队列中的总单元数。当调用 OSQPend()或者 OSQAccept()之前,调用 N 次 OSQPost()或者 OSQPostFront()就会把消息队列填满。从图 F6.7 中可以看出,一个任务或者中断服务子程序可以调用 OSQPost(),OSQPostFront(),OSQFlush() 或者 OSQAccept()函数。但是,只有任务可以调用 OSQPend()和 OSQQuery()函数。


网友评论