背景
- RT-Thread 的消息队列,用于线程间的通信,命令、数据的传输,非常的方便
- 消息队列,比邮箱,更方便使用,传输较短的不定长的数据,无须动态申请内存
- 消息队列接收需要线程
- 消息队列的发送,可以在中断回调、线程、shell cmd中发送。
消息队列可以做什么
- 线程之间数据与命令的传输,状态机的实现,有了队列缓存,不会丢失操作
- 消息队列,内容可以不定长,可以不是全局变量,消息队列会备份传输的数据
- 消息队列可以传输命令与数据,复杂的数据,可以使用自定义的消息体。
操作实例
- 定义消息队列用户的消息体
#ifndef MAX_PHONE_MSG_MQ_SIZE
#define MAX_PHONE_MSG_MQ_SIZE 32
#endif
/* messagequeue struct */
struct mq_msg
{
rt_uint32_t cmd; /* command or event, msg id */
rt_uint32_t dat; /* mq load data */
rt_uint32_t len; /* mq load buffer length