消息队列
设计一个嵌入式系统,未使用操作系统,在主循环中依次调用各个任务,使用消息来实现不同任务之间的数据交互,定义任务消息结构体的格式如下
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是写操作头,