消息队列

设计一个嵌入式系统,未使用操作系统,在主循环中依次调用各个任务,使用消息来实现不同任务之间的数据交互,定义任务消息结构体的格式如下

 1 #define MESSAGE_NUM_MAX 20
 2 #define MESSAGE_DATA_LEN_MAX 1024
 3 
 4 #pragma pack(1)
 5 typedef struct{
 6 BYTE status;//消息是否有效,1=USING,0=FREE
 7 BYTE pre;//上一个消息的序号
 8 BYTE next;//下一个消息的序号
 9 BYTE src_modid;//源任务ID号
10 BYTE dest_modid;//目标任务ID号
11 WORD16 len;//数据长度
12 BYTE data[MESSAGE_DATA_LEN_MAX];//数据区域
13 }MESSAGE_UNIT;
14 
15 typedef struct{
16 BYTE message_count;//消息队列数量
17 BYTE message_head;//执行读操作的头
18 BYTE message_tail;//执行写操作的头
19 MESSAGE_UNIT message[MESSAGE_NUM_MAX];
20 }MESSAGE_QUEUE;
21 #pragma pack()

 最终定义了MESSAGE_QUEUE msg_que,其中元素message_head是读操作头,message_tail是写操作头,

原文地址:https://www.cnblogs.com/codecamel/p/5181409.html