你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32h743 lan8720 FreeRTOS cube配置lwip socket接口ping异常,tcp-c收发异常

[复制链接]
飞飞shannon 提问时间:2024-6-20 17:09 / 已解决

不带系统时候以太接口已调通。

按照例程 STM32H7-LwIP-Examples-main\STM32H743_Nucleo_ETH 配置完系统后仅默认任务时ping只返回一两包数据,之后程序永远无法ping通。

image.png

image.png

重新创建任务,tcp-c连接多次才能成功,成功后只能发送一包数据到s端,之后程序卡死。

image.png






int sock = -1;
  struct sockaddr_in client_addr;
  uint8_t DEST_ADDRESS[4]={192,168,1,99};
  ip4_addr_t ipaddr;
  while((pdTRUE == xSemaphoreTake(xLWIP_Init, 0)));//网口初始化完成后再执行tcp任务

  IP4_ADDR(&ipaddr, DEST_ADDRESS[0],DEST_ADDRESS[1],DEST_ADDRESS[2],DEST_ADDRESS[3]);
  char sendbuf[]="test";
  while (1){
    sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock < 0){
      vTaskDelay(100);
      continue;
    }
    #define DEST_PORT 5555
    client_addr.sin_family = AF_INET;
    client_addr.sin_port = htons(DEST_PORT);
    client_addr.sin_addr.s_addr = ipaddr.addr;
    memset(&(client_addr.sin_zero), 0, sizeof(client_addr.sin_zero));
    if(connect(sock, (struct sockaddr*)&client_addr, sizeof(struct sockaddr)) == -1){
      vTaskDelay(100);
      closesocket(sock);
      vTaskDelay(100);
      continue;
    }
    while (1){
      if(write(sock,sendbuf,sizeof(sendbuf))<0){
        vTaskDelay(100);
        break;
      }
      m=0;
      vTaskDelay(100);
    }
    closesocket(sock);
image.png
收藏 评论8 发布时间:2024-6-20 17:09

举报

8个回答
飞飞shannon 最优答案 回答时间:2024-6-26 10:13:44

问题解决了,是系统的堆栈开太小了

飞飞shannon 回答时间:2024-6-20 17:33:54

出现这个问题会是什么原因呢

xmshao 回答时间:2024-6-21 11:11:04
注意使用FREERTOS时,以太网中断的优先级设置不要比 configMAX_SYSCALL_INTERRUPT_PRIORITY 高。假设它设置为5,以太网中断优先级配置为不小于5的数字。
飞飞shannon 回答时间:2024-6-21 14:00:12

xmshao 发表于 2024-6-21 11:11
注意使用FREERTOS时,以太网中断的优先级设置不要比 configMAX_SYSCALL_INTERRUPT_PRIORITY 高。假设它设置 ...

image.png

image.png

优先级改了之后也和之前效果一样,每次ping只有前两包有回复,后面再也ping不通了

image.png
xmshao 回答时间:2024-6-21 16:11:03
如果不是中断优先级方面问题的话,再检查下任务栈设置,接收任务处理代码有无问题。
飞飞shannon 回答时间:2024-6-23 21:41:18

xmshao 发表于 2024-6-21 16:11
如果不是中断优先级方面问题的话,再检查下任务栈设置,接收任务处理代码有无问题。 ...

可以给一个任务栈设置的例子吗,stm32h743IIT6,freertos、lwip、arp&TCP-S

飞飞shannon 回答时间:2024-6-26 10:55:36

飞飞shannon 发表于 2024-6-26 10:13
问题解决了,是系统的堆栈开太小了

image.png

image.png
xmshao 回答时间:2024-7-1 12:08:48

飞飞shannon 发表于 2024-6-26 10:55
![image.png](data/attachment/forum/202406/26/105534qjk4et9p344zbrkt.png?imageMogr2/auto-orient ...

[md]OK.

看来小遗漏了。谢谢反馈~!

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版