野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1389|回复: 2

W5500模块工作一段时间后与服务器的链接丢失

[复制链接]
发表于 2019-3-5 16:42:20 | 显示全部楼层 |阅读模式
测试环境:野火指南者开发板,http_client例程
应用场景描述:在http_client例程的基础上修改代码,设置了一个串口中断,当串口中断发生时,标志位置1。在主函数的while循环里,有do_http_client函数,函数内容如下所示(加粗红色部分为修改部分)
void do_http_client(void)
{       
        uint8 ch=SOCK_HUMTEM;
        uint16 anyport=3000;  
        uint8 buffer[119]={0};
        uint8_t j=0;
        switch(getSn_SR(ch))                                                                                                                                                                                       
        {
                case SOCK_INIT:                                                                                                                                                                                                       
                        connect(ch, yeelink_server_ip ,yeelink_port);                                                                       
                break;       
                case SOCK_ESTABLISHED:                                                                                                                                                                        
                        if(getSn_IR(ch) & Sn_IR_CON)  
                        {
                                setSn_IR(ch, Sn_IR_CON);                                                                                                                                       
                        }
                        if(flag==1)
                        {
                                flag=0;
                                i=0;
                                memcpy(buffer,head,strlen(head));
                                for(j=0;j<79;j++)
                                {
                                        buffer[36+j]=data[j];
                                }
                                if(data[0]==0x77&&data[4]==0x4C&&data[8]==0x61)
                                {
                                if(data[78]==0x30)
                                {
                                open1();    //继电器操作
                                }
                                        if(data[78]==0x31)
                                {
                                open2();    //继电器操作
                                }
                                send(ch,(const uint8 *)buffer,sizeof(buffer));
                                }
                        }
                break;
                case SOCK_CLOSE_WAIT:                                                                                                                                                                         
                        close(ch);  
                break;
                case SOCK_CLOSED:                                                                                                                                                                                        
                  socket(ch, Sn_MR_TCP,anyport++ , 0x00);   
                break;
                default:
                break;
        }  
}

问题描述:代码烧录后,每次串口中断后,以太网模块都可以将串口接收到的数据发送到服务器端,并且对继电器进行相应的操作。工作一段时间后,发生串口中断后,服务器没有收到数据并且继电器没有进行对应操作,按下RESET按钮进行复位后,又可以正常工作一段时间。
回复

使用道具 举报

发表于 2019-3-6 08:58:08 | 显示全部楼层
看这个W5500代码貌似没问题,是不是串口中断程序里面没处理好
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-6 09:39:56 | 显示全部楼层
八戒 发表于 2019-3-6 08:58
看这个W5500代码貌似没问题,是不是串口中断程序里面没处理好

void DEBUG_USART2_IRQHandler(void)
{

        if(USART_GetITStatus(DEBUG_USART2x,USART_IT_RXNE)!=RESET)
        {               
                data = USART_ReceiveData(DEBUG_USART2x);
                USART_SendData(DEBUG_USARTx,data);  
                i++;
        }         
        if ( USART_GetITStatus( DEBUG_USART2x, USART_IT_IDLE ) == SET )    /*êy&#190;Y&#214;&#161;&#189;óê&#213;íê±&#207;*/
        {   
                  flag=1;
                  data = USART_ReceiveData( DEBUG_USART2x );  /*由软件序列清楚中断标志位*/
                        data[78]=0x30;   /*0x30表示字符“0”,进*/
        }

}

这是我串口中断部分的代码,麻烦您给看下有什么问题。
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|站点地图|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号-2 ) 大学生ARM嵌入式2群

GMT+8, 2020-9-22 02:42 , Processed in 0.198834 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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