备份-网线热拔插问题

This commit is contained in:
王绪洁 2025-06-25 17:24:35 +08:00
parent a09c6a41de
commit 6dbc62e1fc
4 changed files with 2772 additions and 2737 deletions

View File

@ -8,6 +8,12 @@
"ch438q.h": "c",
"ht1200m.h": "c",
"main.h": "c",
"etharp.h": "c"
"etharp.h": "c",
"tcpserverc.h": "c",
"stdio.h": "c",
"freertos.h": "c",
"lan8742.h": "c",
"lwip.h": "c",
"dhcp.h": "c"
}
}

View File

@ -28,6 +28,9 @@
#include "dac161s997.h"
#include "ch438q.h"
#include "tcpserverc.h"
#include "lan8742.h"
#include "lwip.h"
#include "lwip/tcp.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@ -55,7 +58,9 @@ osThreadId ch438_taskHandle;
/* Private function prototypes -----------------------------------------------*/
/* USER CODE BEGIN FunctionPrototypes */
extern struct netif gnetif;
extern ETH_HandleTypeDef heth;
extern struct tcp_pcb *server_pcb_hart[TCP_MAX];
/* USER CODE END FunctionPrototypes */
void start_lwip_task(void const *argument);
@ -143,6 +148,24 @@ void start_lwip_task(void const *argument)
for (;;)
{
// osThreadTerminate(NULL);
uint32_t phyreg = 0;
uint8_t tcp_hart_num = 0;
HAL_ETH_ReadPHYRegister(&heth, 0x00, PHY_BSR, &phyreg);
if (((phyreg >> 2) & 0x1) != 0x1)
{
/* When the netif link is down this function must be called */
netif_set_link_down(&gnetif);
netif_set_down(&gnetif); // 热插拔下线时调用
for (tcp_hart_num = 0; tcp_hart_num < TCP_MAX; tcp_hart_num++)
{
if (tcp_echo_flags[tcp_hart_num] == 1)
{
tcp_abort(server_pcb_hart[tcp_hart_num]); // 热插拔下线时调用
tcp_echo_flags[tcp_hart_num] = 0;
}
}
}
ch438_interrupt_handler_data_ch438_chip_1();
ch438_interrupt_handler_data_ch438_chip_2();

View File

@ -373,7 +373,7 @@
<GroupNumber>2</GroupNumber>
<FileNumber>4</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExp>1</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>../Core/Src/freertos.c</PathWithFileName>

File diff suppressed because it is too large Load Diff