硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5250|回复: 2
收起左侧

[ThreadX全家桶] 求教threadx发送消息队列问题

[复制链接]

6

主题

19

回帖

37

积分

新手上路

积分
37
发表于 2020-9-24 11:39:32 | 显示全部楼层 |阅读模式
定义一个结构体,结构体里面有个指针,指向一个数组。
然后线程1通过tx_queue_send发送这个结构体,线程2收到以后,发现结构体里面的指针内容完全不对。
我用ucosiii就是正常的。
下面是截取的代码:

  1. typedef struct
  2. {
  3.     uint8_t Dev;
  4.     uint8_t Type;
  5.     uint8_t *pMsg;
  6.     uint16_t Size;
  7. }SYSMSG, *PSYSMSG;

  8. uint8_t DataBuf[64] = {0};
  9. SYSMSG Sys_Msg = {0,0,DataBuf,0};

  10. TX_QUEUE Q_2Sys;

  11. uint8_t System_Buf[1024] = {0};
  12. tx_queue_create(&Q_2Sys,"Q_2Sys",1,System_Buf,1024);


  13. void QPost2Sys(void *pbuf)
  14. {
  15.         UINT status;
  16.        
  17.         status = tx_queue_send(&Q_2Sys,pbuf,TX_NO_WAIT);
  18.         if(status != TX_SUCCESS)
  19.     {

  20.     }
  21. }

  22. void QRecv2Sys(void)
  23. {
  24.         UINT status;
  25.         PSYSMSG pSysMsg;
  26.         status = tx_queue_receive(&Q_2Sys,pSysMsg,TX_WAIT_FOREVER);
  27.         if(status == TX_SUCCESS)
  28.     {
  29.         
  30.     }
  31. }
复制代码



回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-9-24 11:54:54 | 显示全部楼层
基本操作,多试试都可以解决。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117586
QQ
发表于 2020-9-24 12:08:39 | 显示全部楼层
帮你看了下ThreadX的消息队列实现,ThreadX的消息是数据的复制粘贴,并不是传递的数据地址。

所以你楼主位的代码可以在uCOS上使用,而不可以在ThreadX使用
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-17 03:50 , Processed in 0.049745 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表