[STM32F4] 关于STM32F429消息队列与网卡问题。

[复制链接]
1628|1
 楼主| hangbing0203 发表于 2017-3-31 17:00 | 显示全部楼层 |阅读模式
问题描述:
       消息队列传输字节太大,网卡就不能用。 目前,设置消息队列传输8字节,网卡工作ok,但消息队列设置传输buf=32字节,网卡就不能用了。网卡不能用的意思,就是ping局域网不通。
osPoolDef(mpool, 32, Messg);  
osMessageQDef(MsgBox, 32, sizeof(struct Messg *));
typedef struct
{
    int  pip;                                                               
    int  cmd;
    int  data[8];   //如果修改成32字节就,ETH就不能用。
}Messg;

void Message_Send(uint8_t pip,uint8_t cmd,uint8_t *msg)
{
  Messg    *mptr;
  mptr = osPoolAlloc(mpool);                     // Allocate memory for the message
  mptr->cmd=cmd;
  mptr->pip=pip;
  osMessagePut(MsgBox, (uint32_t)mptr, osWaitForever);  // Send Message
}

mpool = osPoolCreate(osPool(mpool));                 // create memory pool
MsgBox = osMessageCreate(osMessageQ(MsgBox), NULL);  // create msg queue

最初步的分析是:发送消息队列线程和接收消息队列线程堆栈太小,和LWIP内存相关部分设置太小,然后分别设置他们的值,结果,还是一样 网卡一样的不能用。 郁闷中,请大虾们指点一下。
 楼主| hangbing0203 发表于 2017-4-1 09:14 | 显示全部楼层
这个问题已经解决: 解决办法是:
typedef struct
{
    int  pip;                                                               
    int  cmd;
    int  data[16];  。
}Messg;
sizeof (messg)=72字节
修改
osPoolDef(mpool, 32, 72);  
osMessageQDef(MsgBox, 32, 72);
就ok。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部