开门见山,直接上图。
先定义类型Data_t,u8和枚举,32位机器内存对齐之后,该类型大小为两个整型,8个字节。
先创建一个队列,长度5,类型大小Data_t
待发送消息结构内容为
Demo中向队列发送三个消息
先执行发送前两条可以看到队列句柄的内容如下
从结构内容可以分析到
1. uxMessagesWaiting 为2,对应之前发送的两次队列消息
2.uxLength为5,对应创建队列时设定的队列长度
3.uxItemSize为8,则是创建队列时的类型Data_t大小
4.pcHead:0x007112c4,pcTail:0x007112ec 相差0x28,
解析:队列容量为5,类型大小为8,而5*8=40 =0x28;
5.pcWrite:0x007112d4, 与pcHead:0x007112c4 相差0x10,
解析:已发送了2次消息,每次大小为8,所以偏移为 2*8 =16 =0x10
其余xTasksWaitingToSend,xTasksWaitingToReceive为因队列阻塞而等待的任务列表,这个先不演示。
用内存窗口打开pcHead:0x007112c4,可以看到
正好对应待发送的数据
{0x1A, 3},
{0x1B, 4}.