2025-01-15 16:02:53 +08:00

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();
}
}