打印
[STM32F4]

f407使用http连接做服务器时,程序不能进入http线程中,但是别的任务都顺利执行了 程序.....

[复制链接]
538|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cr315|  楼主 | 2024-7-11 11:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/**

@brief Initialize the HTTP server (start its thread)
@param none
@retval None / void http_server_netconn_init() { sys_thread_new("HTTP", http_server_netconn_thread, NULL, DEFAULT_THREAD_STACKSIZE 4, osPriorityAboveNormal); }
/////////////////////////////////////////

/ USER CODE BEGIN Header_StartDefaultTask / /**

@brief Function implementing the defaultTask thread.
@param argument: Not used
@retval None / / USER CODE END Header_StartDefaultTask / void StartDefaultTask(void const argument) { / init code for LWIP / MX_LWIP_Init(); / USER CODE BEGIN StartDefaultTask / / Initialize webserver demo / http_server_netconn_init(); / Infinite loop / for(;;) { //vTaskDelete(NULL); HAL_GPIO_WritePin(LED_2_GPIO_Port,LED_2_Pin,GPIO_PIN_RESET); vTaskDelay(500); HAL_GPIO_WritePin(LED_2_GPIO_Port,LED_2_Pin,GPIO_PIN_SET); vTaskDelay(500); } / USER CODE END StartDefaultTask / }

使用特权

评论回复
沙发
weifeng90| | 2024-7-12 07:46 | 只看该作者
没跑系统?你发这端代码也看不出所以然来啊。

使用特权

评论回复
板凳
onlycook| | 2024-7-15 15:27 | 只看该作者
检查网络栈和HTTP服务器的配置

使用特权

评论回复
地板
laocuo1142| | 2024-7-15 15:28 | 只看该作者
尝试先实现一个简单的TCP服务器,而不是HTTP服务器,以验证网络栈和任务调度是否工作正常。

使用特权

评论回复
5
flycamelaaa| | 2024-7-15 15:29 | 只看该作者
如果可能,使用经过验证的HTTP服务器库,如Mongoose OS,这可以简化实现并减少出错的可能性。

使用特权

评论回复
6
4c1l| | 2024-7-27 11:36 | 只看该作者
在 http_server_netconn_init() 函数中启动了一个新的线程来运行 HTTP 服务器。
void http_server_netconn_init(void)
{
    sys_thread_new("HTTP", http_server_netconn_thread, NULL, DEFAULT_THREAD_STACKSIZE * 4, osPriorityAboveNormal);
}


使用特权

评论回复
7
4c1l| | 2024-7-27 11:40 | 只看该作者
StartDefaultTask() 函数在默认任务中初始化 LWIP(轻量级 IP 协议栈)并启动 HTTP 服务器。然后它进入一个无限循环,用于控制 LED。

c

void StartDefaultTask(void const *argument)
{
    /* USER CODE BEGIN StartDefaultTask 0 */

    /* Initialize the LWIP stack */
    MX_LWIP_Init();

    /* Initialize the HTTP server */
    http_server_netconn_init();

    /* Infinite loop */
    for(;;)
    {
        // Toggle LED every 500 ms
        HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, GPIO_PIN_RESET);
        vTaskDelay(500);
        HAL_GPIO_WritePin(LED_2_GPIO_Port, LED_2_Pin, GPIO_PIN_SET);
        vTaskDelay(500);
    }

    /* USER CODE END StartDefaultTask */
}


使用特权

评论回复
8
抹茶妹妹| | 2024-7-30 18:56 | 只看该作者
可能是由于堆栈大小不足或者系统资源不足导致的线程创建失败。

使用特权

评论回复
9
抹茶妹妹| | 2024-7-30 18:56 | 只看该作者
LWIP初始化不正确可能会导致网络相关的线程无法运行。

使用特权

评论回复
10
米多0036| | 2024-8-31 12:59 | 只看该作者
在 StartDefaultTask 函数中调用了 MX_LWIP_Init(), LWIP 库正确初始化。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1304

主题

3722

帖子

0

粉丝