esp32 s3 创建大任务栈的时候,任务创建失败原因
代码如下,使用xTaskCreate动态创建栈大小为8192*4的任务创建失败,返回值是-1,原因是freertos的堆大小溢出了
void init_ui(parameter_t *parameter)
{
init_lcd();
BaseType_t status = xTaskCreate(lcd_update_task, "lcd", 8192 * 4, parameter, 1, &lcd_task);
if (status != pdPASS) {
ESP_LOGE(UI_TAG, "xTaskCreate lcd_update_task err");
ESP_LOGI("Free heap", "Free heap: %lu", esp_get_free_heap_size());
ESP_LOGI("Heap Info", "Free heap size: %u bytes", xPortGetFreeHeapSize());
}
status = xTaskCreate(update_ui, "ui", 4096, parameter, 1, &ui_task);
if (status != pdPASS) {
ESP_LOGE(UI_TAG, "xTaskCreate update_ui err");
}
}
解决办法
1.使用静态创建任务
static StackType_t lcdTaskStack[8192 * 4]; // 静态分配的栈
static StaticTask_t lcdTaskBuffer; // 静态任务控制块
void init_ui(parameter_t *parameter)
{
init_lcd();
BaseType_t status = xTaskCreateStatic(lcd_update_task, "lc


901

被折叠的 条评论
为什么被折叠?



