登录 注册
当前位置:主页 > 资源下载 > 50 > 任务中断服务子系统——EMC DataDomain 2500存储设备维护手册

任务中断服务子系统——EMC DataDomain 2500存储设备维护手册

  • 更新:2024-11-04 13:34:26
  • 大小:4.33MB
  • 推荐:★★★★★
  • 来源:网友上传分享
  • 类别:OS - 操作系统
  • 格式:PDF

资源介绍

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()函数。