文件名称:任务内建消息队列-倒数粗糙熵图像阈值化分割算法
文件大小:6.12MB
文件格式:PDF
更新时间:2024-06-29 05:03:02
UCOSIII 教程
11.4 任务内建消息队列 和任务信号量一样,UCOSIII 中每个任务也都有其内建消息队列,这样的话用户就不需要 使用外部的消息队列就可直接向任务发布消息,这个特性不仅简化了代码,而且比使用外部消 息队列更加有效,任务内建消息队列相关函数在文件 os_task.c 中。消息任务内建消息队列是可 选项,如果要使用任务内建消息队列的话宏 OS_CFG_TASK_Q_EN 必须置 1。任务内嵌消息队 列相关函数如表 11.4.1 所示: 函数名 描述 OSTaskQPend() 等待消息 OSTaskQPendAbort() 取消等待消息 OSTaskQPost() 向任务发送一条消息 OSTaskQFlush() 清空任务的消息队列 表 11.4.1 任务内建消息队列相关函数 11.4.1 等待任务内建消息 函数 OSTaskQPend()用来请求消息,该函数让任务直接接收从其他任务或者 ISR 中发送来 的消息,不需要经过中间的消息队列,函数原型如下: void *OSTaskQPend (OS_TICK timeout, OS_OPT opt, OS_MSG_SIZE *p_msg_size, CPU_TS *p_ts, OS_ERR *p_err) timeout: 等待消息的超时时间,如果在指定的时间没有接收到消息的话,任务就会被唤醒, 接着运行。这个参数也可以设置为 0,表示任务将一直等待下去,直到接收到消息。 opt: 用来选择是否使用阻塞模式,有两个选项可以选择。 OS_OPT_PEND_BLOCKING 如果没有任何消息存在的话就阻塞任务,一直等 待,直到接收到消息。 OS_OPT_PEND_NON_BLOCKING 如果消息队列没有任何消息的话任务就直接 返回。 p_msg_size: 指向存放消息大小的变量。 p_ts: 指向一个时间戳,表明什么时候接收到消息。如果这个指针被赋值为NULL的话, 说明用户没有要求时间戳。 p_err: 用来保存调用此函数后返回的错误码。 11.4.2 发送任务内建消息 函数 OSTaskQPost()可以通过一个任务的内建消息队列向这个任务发送一条消息,同外置的 消息队列一样,一条消息就是一个指针,函数原型如下: void OSTaskQPost (OS_TCB *p_tcb, void *p_void,