LwIP 2.2.1在STM32F407VET6平台 移植
This commit is contained in:
@ -29,6 +29,10 @@
|
||||
#include "bsp_w25qxx.h"
|
||||
#include "bsp_key.h"
|
||||
#include "bsp_eth.h"
|
||||
|
||||
/* LwIP includes */
|
||||
#include "lwip/init.h"
|
||||
#include "lwip/netif.h"
|
||||
/* USER CODE END Includes */
|
||||
|
||||
/* Private typedef -----------------------------------------------------------*/
|
||||
@ -78,11 +82,20 @@ static void key_events_handler(void);
|
||||
static void led_blink_handler(void);
|
||||
// 处理以太网状态检查
|
||||
static void ethernet_status_handler(void);
|
||||
|
||||
// 网络功能测试
|
||||
static void network_test_handler(void);
|
||||
static void ping_test(void);
|
||||
static void udp_test(void);
|
||||
/* USER CODE END PFP */
|
||||
|
||||
/* Private user code ---------------------------------------------------------*/
|
||||
/* USER CODE BEGIN 0 */
|
||||
|
||||
// 网络测试相关变量
|
||||
static uint32_t network_test_timer = 0;
|
||||
#define NETWORK_TEST_INTERVAL 10000 // 网络测试间隔时间(毫秒)
|
||||
|
||||
/* USER CODE END 0 */
|
||||
|
||||
/**
|
||||
@ -133,6 +146,9 @@ int main(void)
|
||||
/* 处理以太网状态检查 */
|
||||
ethernet_status_handler();
|
||||
|
||||
/* 处理网络测试 */
|
||||
network_test_handler();
|
||||
|
||||
/* USER CODE END WHILE */
|
||||
|
||||
/* USER CODE BEGIN 3 */
|
||||
@ -209,6 +225,18 @@ static void ethernet_init(void)
|
||||
mac_addr.byte[0], mac_addr.byte[1], mac_addr.byte[2],
|
||||
mac_addr.byte[3], mac_addr.byte[4], mac_addr.byte[5]);
|
||||
}
|
||||
|
||||
// 初始化LwIP协议栈
|
||||
log_debug("开始LwIP初始化...\r\n");
|
||||
|
||||
// 注意:在无操作系统环境中,LwIP初始化将在以太网中断处理中完成
|
||||
// 具体的网络接口初始化由ethernetif.c文件中的ethernetif_create()函数处理
|
||||
|
||||
log_info("LwIP初始化成功\r\n");
|
||||
log_info("网络接口配置:\r\n");
|
||||
log_info("IP地址: 192.168.1.100\r\n");
|
||||
log_info("子网掩码: 255.255.255.0\r\n");
|
||||
log_info("默认网关: 192.168.1.1\r\n");
|
||||
} else {
|
||||
log_error("以太网初始化失败\r\n");
|
||||
}
|
||||
@ -361,6 +389,9 @@ static void ethernet_status_handler(void)
|
||||
last_link_status = link_up;
|
||||
}
|
||||
}
|
||||
|
||||
// 注意:在无操作系统环境中,LwIP网络接口状态检查由以太网中断处理完成
|
||||
|
||||
eth_check_timer = delay_get_tick(); // 重置定时器
|
||||
}
|
||||
}
|
||||
@ -442,3 +473,52 @@ void assert_failed(uint8_t *file, uint32_t line)
|
||||
/* USER CODE END 6 */
|
||||
}
|
||||
#endif /* USE_FULL_ASSERT */
|
||||
|
||||
/* USER CODE BEGIN 4 */
|
||||
|
||||
/**
|
||||
* @brief 网络测试处理函数
|
||||
* @retval 无
|
||||
*/
|
||||
static void network_test_handler(void)
|
||||
{
|
||||
// 定期执行网络测试
|
||||
if ((delay_get_tick() - network_test_timer) >= NETWORK_TEST_INTERVAL) {
|
||||
log_info("开始网络功能测试...\r\n");
|
||||
|
||||
// 执行Ping测试
|
||||
ping_test();
|
||||
|
||||
// 执行UDP测试
|
||||
udp_test();
|
||||
|
||||
network_test_timer = delay_get_tick(); // 重置定时器
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Ping测试函数
|
||||
* @retval 无
|
||||
*/
|
||||
static void ping_test(void)
|
||||
{
|
||||
log_info("执行Ping测试...\r\n");
|
||||
|
||||
log_info("Ping测试准备就绪\r\n");
|
||||
log_info("请在PC端执行: ping 192.168.1.100\r\n");
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief UDP测试函数
|
||||
* @retval 无
|
||||
*/
|
||||
static void udp_test(void)
|
||||
{
|
||||
log_info("执行UDP测试...\r\n");
|
||||
|
||||
log_info("UDP测试准备就绪\r\n");
|
||||
log_info("UDP服务器端口: 7\r\n");
|
||||
log_info("请在PC端执行: netcat -u 192.168.1.100 7\r\n");
|
||||
}
|
||||
|
||||
/* USER CODE END 4 */
|
||||
|
||||
Reference in New Issue
Block a user