97 lines
2.1 KiB
C
97 lines
2.1 KiB
C
#include "Include.h"
|
|
|
|
#include "delay.h"
|
|
#include "IoControl.h"
|
|
#include "Timer.h"
|
|
#include "Usart.h"
|
|
#include "spi1.h"
|
|
#include "w5500.h"
|
|
#include "socket.h"
|
|
#include "WatchDog.h"
|
|
|
|
#include "user_queue.h"
|
|
|
|
uint16_t usRec_Length; //接收数据长度
|
|
uint8_t ucRec_Buffer[1024*10]={0}; //接收数据缓存
|
|
|
|
extern uint16_t Usart1_ucRx_length;//串口1接收长度
|
|
extern uint8_t usart1_rx_done;//串口1接收完成标志
|
|
extern uint8_t Usart1_Rx_Buf[USART1_RX_BUFFER_SIZE];//串口1接收数据
|
|
|
|
|
|
|
|
|
|
|
|
int main(void)
|
|
{
|
|
parameters_init();
|
|
led_init();
|
|
Tim2Init();
|
|
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
|
|
ble_usart_init(BLE_USART_BAUDRATE);
|
|
|
|
spi1.initialize();
|
|
w5500.initialize();
|
|
|
|
InitQueue(&queue);
|
|
|
|
WatchDogGpioInit();
|
|
WatchDogEnable();
|
|
while(1)
|
|
{
|
|
switch(getSn_SR(0)) //获取socket0的状态
|
|
{
|
|
case (SOCK_INIT): //TCP工作模式
|
|
{
|
|
listen(0); //在TCP模式下监听客户端
|
|
}break;
|
|
|
|
case (SOCK_ESTABLISHED): //建立链接
|
|
{
|
|
if(getSn_IR(0) & Sn_IR_CON)
|
|
{
|
|
setSn_IR(0, Sn_IR_CON);
|
|
}
|
|
usRec_Length = getSn_RX_RSR(0); /*已接收数据长度*/
|
|
if(usRec_Length>0)
|
|
{
|
|
recv(0, ucRec_Buffer, usRec_Length);
|
|
|
|
net_received_data_analysis();
|
|
// send(0, ucRec_Buffer, usRec_Length); //自收发
|
|
}
|
|
}break;
|
|
|
|
case (SOCK_CLOSE_WAIT):
|
|
{
|
|
disconnect(0); /*断开连接*/
|
|
}break;
|
|
|
|
case (SOCK_CLOSED):
|
|
{
|
|
socket(0,Sn_MR_TCP,60000,Sn_MR_ND); /*打开socket0的60000端口*/
|
|
}break;
|
|
default:
|
|
break;
|
|
}
|
|
if((IINCHIP_READ(PHYCFGR)& LINK)==0)
|
|
{
|
|
disconnect(0);
|
|
socket(0,Sn_MR_TCP,60000,Sn_MR_ND); /*打开socket0的60000端口*/
|
|
listen(0); /*在TCP模式下监听客户端*/
|
|
}
|
|
|
|
if(1 == usart1_rx_done) //串口接收到数据,网口发送至客户端
|
|
{
|
|
usart1_rx_done = 0;
|
|
send(0, Usart1_Rx_Buf, Usart1_ucRx_length);
|
|
Usart1_ucRx_length = 0;
|
|
}
|
|
|
|
FeedDog();
|
|
}
|
|
}
|
|
|
|
|
|
|