李嘉辉

  • 2020-07-02
  • 回复了主题帖: STM32F207以太网+LAN8742传输服务器会卡死

      抓包出现这种情况就会卡死

  • 2020-07-01
  • 回复了主题帖: STM32F207以太网+LAN8742传输服务器会卡死

    有没有人用过LAN8740网口芯片出现过这样的问题,晚上都说可能是底层内存占用释放不及时,卡死的,有么有人给咱提供一下具体的思路呢,卡着都好几天了!!

  • 2020-06-30
  • 发表了主题帖: STM32F207以太网+LAN8742传输服务器会卡死

    单片机作为服务器把数据传输到电脑客户端,客户端与服务器是一问一答的通讯方式,传输一段时间后服务器就会卡死,调试后发现卡死后服务器不会进入tcp_echoserver_recv函数 在网上搜了相关问题大多都说是这个接收函数的问题,自己就修改了几行数据接受和发送代码,大神看看问题出现在了那里  static err_t tcp_echoserver_recv(void *arg, struct tcp_pcb *tpcb, struct pbuf *p, err_t err) {   struct tcp_echoserver_struct *es;   err_t ret_err;         u16 i;   LWIP_ASSERT("arg != NULL",arg != NULL);      es = (struct tcp_echoserver_struct *)arg;      /* if we receive an empty tcp frame from client => close connection */   if (p == NULL)//空帧释放链接   {     /* remote host closed connection */     es->state = ES_CLOSING;     if(es->p == NULL)     {       /* we're done sending, close connection */       tcp_echoserver_connection_close(tpcb, es);                         transFlag = 0;                         nextFlag = 0;     }     else     {       /* we're not done yet */       /* acknowledge received packet */       tcp_sent(tpcb, tcp_echoserver_sent);              /* send remaining data*/       tcp_echoserver_send(tpcb, es);     }     ret_err = ERR_OK;   }      /* else : a non empty frame was received from client but for some reason err != ERR_OK */   else if(err != ERR_OK)//非空,但是出错,释放缓存   {     /* free received pbuf*/     if (p != NULL)     {       es->p = NULL;       pbuf_free(p);     }     ret_err = err;   }   else if(es->state == ES_ACCEPTED)//连接成功,sent回调   {     /* first data chunk in p->payload */     es->state = ES_RECEIVED;          /* store reference to incoming pbuf (chain) */     es->p = p;          /* initialize LwIP tcp_sent callback function */                   tcp_sent(tpcb, tcp_echoserver_sent);                 /* send back the received data (echo) */                                  //20180322                 tcp_recved(tpcb, p->tot_len);                //yry20180322第一次连接时的数据                 memset(&serverRxBuf[serverRxCMDRecePos],0,serverRxCMDCount);                 memcpy(&serverRxBuf[serverRxCMDRecePos][0], p->payload, p->len);                 serverRxCMDRecePos++;                 serverRxCMDRecePos %= serverRxBufSize;                                                   //20190808                                         tcp_echoserver_pcb = tpcb;                 pbuf_free(p);     ret_err = ERR_OK;   }   else if (es->state == ES_RECEIVED)//收到数据   {     /* more data received from client and previous data has been already sent*/                 if(es->p == NULL)     {       es->p = p;          /* send back received data */                                          tcp_recved(tpcb, p->tot_len);                         memset(&serverRxBuf[serverRxCMDRecePos],0,serverRxCMDCount);                 memcpy(&serverRxBuf[serverRxCMDRecePos][0], p->payload, p->len);                 serverRxCMDRecePos++;                 serverRxCMDRecePos %= serverRxBufSize;                    pbuf_free(p);                                                 //////////////////////     }     else//连接关闭,收到数据     {       struct pbuf *ptr;       /* chain pbufs to the end of what we recv'ed previously  */       ptr = es->p;       pbuf_chain(ptr,p);     }     ret_err = ERR_OK;   }      /* data received when connection already closed */   else   {     /* Acknowledge data reception */     tcp_recved(tpcb, p->tot_len);          /* free pbuf and do nothing */     es->p = NULL;     pbuf_free(p);     ret_err = ERR_OK;   }   return ret_err; }  

  • 2020-04-08
  • 回复了主题帖: SPI 从机返回给主机数据错位

    littleshrimp 发表于 2020-4-5 10:18 用逻辑分析仪看一下
    木有啊  

  • 2020-04-07
  • 回复了主题帖: SPI 从机返回给主机数据错位

    huo_hu 发表于 2020-4-5 03:24  "发送一包数据  如果返回正确的话从机返回的数据都是0x5555,  如果返回错误的话从机返回 ...
    是的主机发送下一个字节从机才能收到上一个字节的状态

  • 2020-04-04
  • 回复了主题帖: SPI 从机返回给主机数据错位

    描述有点问题  发送一包数据  如果返回正确的话从机返回的数据都是0x5555,  如果返回错误的话从机返回的都是0xAAAA。

  • 回复了主题帖: SPI 从机返回给主机数据错位

    okhxyyo 发表于 2020-4-4 17:03 干扰?这个数值也很特别啊。是不是有个什么数据变化被加进去了?
    应该不是的   测试没有发现别的数据, 没有什么东西干扰,我的发送数据量有点大 我把中断里面什么东西都没有操作 只是纯粹的再缓存里取数据发送的  

  • 发表了主题帖: SPI 从机返回给主机数据错位

    本帖最后由 李嘉辉 于 2020-4-4 17:28 编辑 两个32单片机主机发送给从机的数据从机能正确接收,从机每接收到一个字节,给主机返回0x5555,   发送一包数据  如果返回正确的话从机返回的数据都是0x5555,  如果返回错误的话从机返回的都是0xAAAA,我的配置从机和主机都是第一个上升沿读取数据,四线制模式  ,经过分析这是数据移位造成的,但是在正确接收和错误接收时钟没有发生任何变化,都是在时钟的第一个上升沿读取的数据。困惑了很长时间了不知道什么原因造成的?大神们给看看      

最近访客

< 1/1 >

统计信息

已有16人来访过

  • 芯币:254
  • 好友:5
  • 主题:21
  • 回复:67
  • 课时:--
  • 资源:2

留言

你需要登录后才可以留言 登录 | 注册


phang 2016-11-3
你好,关于串口查询方式收发的问题想请教你,因为这个问题困扰我一段时间了,都没找到合适的答案。
查看全部