update 解决相关bug

This commit is contained in:
2026-04-02 18:00:37 +08:00
parent 2f1319a378
commit 4c4cfa76b4
16 changed files with 423 additions and 186 deletions

View File

@@ -20,10 +20,13 @@
#define BSP_W5500_PORT_DATA_RECEIVE 0x01 /*<2A>˿ڽ<CBBF><DABD>յ<EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD>*/
#define BSP_W5500_PORT_DATA_TRANSMITOK 0x02 /*<2A>˿ڷ<CBBF><DAB7><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD>ݰ<EFBFBD><DDB0><EFBFBD><EFBFBD><EFBFBD>*/
static u8 last_link_status = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD>·״̬
static void bsp_W5500_Interrupt_Process(void);
static void bsp_W5500_Init(void);
static void bsp_W5500_Task(void);
static void Write_SOCK_Data_Buffer(bsp_W5500_Class_t *pW5500_Class, u8 *dat_ptr, u16 size);
static void network_monitor_task(void);
bsp_W5500_t W5500 =
{
@@ -36,6 +39,7 @@ bsp_W5500_t W5500 =
.Init = bsp_W5500_Init,
.Task = bsp_W5500_Task,
.Monitor_task = network_monitor_task,
.Socket_Send = Write_SOCK_Data_Buffer,
.W5500_Class[0] =
@@ -741,7 +745,7 @@ void bsp_W5500_Socket_Set(bsp_W5500_Class_t *pW5500_Class)
static void bsp_W5500_Init()
{
u8 i;
u8 i,ver;
W5500_Hardware_Reset(); /*Ӳ<><D3B2><EFBFBD><EFBFBD>λW5500*/
W5500_Init(); /*<2A><>ʼ<EFBFBD><CABC>W5500<30>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
Detect_Gateway(); /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>*/
@@ -751,7 +755,9 @@ static void bsp_W5500_Init()
bsp_W5500_Socket_Init(&pW5500->W5500_Class[i]);
pW5500->W5500_Class[i].Run_State = 0; /*<2A><>λ״̬*/
//bsp_W5500_Socket_Set(&pW5500->W5500_Class[i]); /*W5500<30>˿ڳ<CBBF>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
}
}
}
static void bsp_W5500_Task(void)
@@ -781,3 +787,25 @@ static void bsp_W5500_Task(void)
}
}
/**
* @brief <20><>ȡ W5500 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·״̬
* @return 1: <20><>·<EFBFBD><C2B7><EFBFBD><EFBFBD>, 0: <20><>·<EFBFBD>Ͽ<EFBFBD>
*/
static u8 w5500_get_link_status(void)
{
u8 phycfgr = Read_W5500_1Byte(PHYCFGR); // <20><>ȡ PHYCFGR <20>Ĵ<EFBFBD><C4B4><EFBFBD>
return (phycfgr & LINK) ? 1 : 0; // <20><><EFBFBD><EFBFBD> LINK λ
}
static void network_monitor_task(void)
{
u8 current_link = w5500_get_link_status();
if (last_link_status == 0 && current_link == 1) {
/*<2A><>·<EFBFBD>ӶϿ<D3B6><CFBF><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD>ӣ<EFBFBD>ִ<EFBFBD>лָ<D0BB><D6B8><EFBFBD><EFBFBD><EFBFBD>*/
W5500.Init();
}
last_link_status = current_link;
}