前几天用threadx queue,仔细看一下,函数原型是
UINT tx_queue_create(
TX_QUEUE *queue_ptr,
CHAR *name_ptr,
UINT message_size,
VOID *queue_start,
ULONG queue_size);
message_size:指定队列中每条消息的大小。 消息大小从 1 个 32 位字到 16 个 32 位字不等。 有效的消息大小选项是介于 1 到 16(含)之间的数值。
这边的消息大小以4字节为单位!最小4字节,最大64字节。
我用的时候简单看了下手册,以经验直接设message_size这个参数,按常理以字节为单位,结果在某些地方固定要crash。。。
今天查了一下硬汉教程,结果他写的也有bug:
tx_queue_create(&MessageQueues1,
"MessageQueues1",
1, /* 每次消息队列发送的数据大小,单位32bit,范围1-16 */
(VOID *)MessageQueuesBuf1,
sizeof(MessageQueues1)); /* 消息队列大小,单位字节 */
硬汉的教程代码里面,最后一个参数 queue_size 设置也是错用的。。。
有时候教程也会有问题,主要可能对系统API理解有误。
有用到threadx 但沒特別注意這地方,謝謝分享