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

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
收藏 评论7 发布时间:2024-6-20 17:09

举报

7个回答
飞飞shannon 最优答案 回答时间:昨天 10:13

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

飞飞shannon 回答时间:7 天前

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

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

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

image.png

image.png

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

image.png
xmshao 回答时间:6 天前
如果不是中断优先级方面问题的话,再检查下任务栈设置,接收任务处理代码有无问题。
飞飞shannon 回答时间:4 天前

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

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

飞飞shannon 回答时间:昨天 10:55

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

image.png

image.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版