文件名称:消息队列相关函数-倒数粗糙熵图像阈值化分割算法
文件大小:6.12MB
文件格式:PDF
更新时间:2024-06-29 05:03:02
UCOSIII 教程
11.2 消息队列相关函数 有关消息队列的 API 函数如下表 11.2.1 所示。 函数 描述 OSQCreate() 创建一个消息队列 OSQDel() 删除一个消息队列 OSQFlush() 清空一个消息队列 OSQPend() 等待消息队列 OSQPendAbort() 取消等待消息队列 OSQPost() 向消息队列发送一条消息 我们常用的关于消息队列的函数其实只有三个,创建消息队列函数 OSQCreate(),向消息队 列发送消息函数 OSQPost()和等待消息队列函数 OSQPend()。 11.2.1 创建消息队列 OSQCreate()函数用来创建一个消息队列,消息队列使得任务或者中断服务程序可以向一个 或者多个任务发送消息,函数原型如下。 void OSQCreate (OS_Q *p_q, CPU_CHAR *p_name, OS_MSG_QTY max_qty, OS_ERR *p_err) p_q: 指向一个消息队列,消息队列的存储空间必须由应用程序分配,我们采用如下的 语句定义一个消息队列。 OS_Q Msg_Que; p_name: 消息队列的名字。 max_qty: 指定消息队列的长度,必须大于 0。当然,如果 OS_MSGs 缓冲池中没有足够多 的 OS_MSGs 可用,那么发送消息将会失败,并且返回相应的错误码,指明当前没有 可用的 OS_MSGs p_err: 保存调用此函数后返回的错误码 11.2.2 等待消息队列 当一个任务想要从消息队列中接收一个消息的话就需要使用函数 OSQPend()。当任务调用 这个函数的时候,如果消息队列中有至少一个消息时,这些消息就会返回给函数调用者。函数 原型如下: void *OSQPend (OS_Q *p_q, OS_TICK timeout, OS_OPT opt, OS_MSG_SIZE *p_msg_size, CPU_TS *p_ts, OS_ERR *p_err) p_q: 指向一个消息队列。 timeout: 等待消息的超时时间,如果在指定的时间没有接收到消息的话,任务就会被唤醒, 接着运行。这个参数也可以设置为 0,表示任务将一直等待下去,直到接收到消息。 opt: 用来选择是否使用阻塞模式,有两个选项可以选择。