(RT_ALIGN(msg_size, RT_ALIGN_SIZE) + sizeof(struct rt_mq_message*)) * max_msgs 其中,msg_size是消息体大小,max_msgs是消息队列中最多消息容量。 Q7. 使用消息队列注意 虽然rt_mq_sendrt_mq_send_waitrt_mq_urgentrt_mq_recv几个 api 有 size 参数,但是请严格按照rt_mq_initrt_mq_create中的 ...
消息队列发送消息队列发送有两个API,一个是基于FIFO模型的rt_mq_send,一个是基于LIFO模型的rt_mq_urgent。先来看rt_mq_send: /** *This function will send a message to message queue object, if there are *threads suspended on message queue object, it will be waked up. * *@param mq the messa...
rt_event_send(&evt,EVT_6);state_run = RT_FALSE;break;default:LOG_D("State - Unknown , ...
发送消息 // size <= msg_size.将消息放在尾部rt_err_trt_mq_send(rt_mq_tmq,void*buffer,rt_size_tsize)// 紧急消息,消息放在列表头部rt_err_trt_mq_urgent(rt_mq_tmq,void*buffer,rt_size_tsize) 接收消息 // timeout不等于0,则收不到消息就会挂起rt_err_trt_mq_recv(rt_mq_tmq,void*buffer,...
发送的消息长度大于消息队列中消息块的最大长度,则返回-RT_ERROR。 等待方式发送消息的函数接口如下,这个函数有等待超时参数: rt_err_t rt_mq_send_wait(rt_mq_t mq, const void *buffer, rt_size_t size, rt_int32_t timeout) 此函数的参数timeout为发送等待超时时间,单位为系统时钟节拍。其他参数与rt...
意思就是使用rt_mq_send函数的时候,size参数必须和rt_mq_create中的msg_size相同吗?如果不相同会怎么样? 2.多个不同优先级的线程和中断向一个线程发送消息的时候,同样使用此消息队列的线程互相打断时会发生什么? 0 2022-7-29 10:11:20 评论 淘帖 邀请回答 juju宇哥 相关推荐 • RT-Thread系统消息...
1rt_err_t rt_mq_send (rt_mq_t mq, void* buffer, rt_size_t size); 1. (1)入口参数: mq:消息队列对象的句柄。 buffer:消息内容。 size:消息大小。 (2)返回值: RT_EOK:成功。 RT_EFULL:消息队列已满。 RT_ERROR:失败,表示发送的消息长度大于消息队列中消息的最大长度。
-RT_ERROR 失败,表示发送的消息长度大于消息队列中消息的最大长度 */ rt_err_t rt_mq_send(rt_mq_t mq, const void *buffer, rt_size_t size) { return rt_mq_send_wait(mq, buffer, size, 0); } 等待方式发送邮件: /** 除了最后多一个时间,其他参数,和上面无等待方式一样 ...
函数接口如下: 1rt_err_t rt_mq_send (rt_mq_t mq, void* buffer, rt_size_t size); (1)入口参数: mq:消息队列对象的句柄。buffer:消息内容。size:消息大小。 (2)返回值: RT_EOK:成功。RT_EFULL:消息队列已满。RT_ERROR:失败,表示发送的消息长度大于消息队列中消息的最大长度。