【发布时间】:2021-04-27 00:19:37
【问题描述】:
我正在使用heap_1 内存分配。有一个初始化任务Task_ini,从中启动了两个任务Task_1和Task_2。然后我删除Task_ini。在Task_1 的某个时间点,我需要创建一个新任务Task_3。如何在 FreeRTOS 堆中创建 Task_3 来代替当时已经被删除的 Task_ini,只知道它的 TaskHandle_t?
int main(void){
xTaskCreate(Task_ini, "Task_ini", configMINIMAL_STACK_SIZE, NULL, 1, &htask_ini);
vTaskStartScheduler();
for(;;);
}
void Task_ini(void *pParams){
xTaskCreate(Task_function, "Task_1", configMINIMAL_STACK_SIZE, ¶m1, 1, &htask1);
xTaskCreate(Task_function, "Task_2", configMINIMAL_STACK_SIZE, ¶m2, 1, &htask2);
vTaskDelete(NULL);
}
void Task_function(void *pParams){
for(;;){
//task code
//...
//end task code
if(create == true){
create = false;
//Here I need to create a task at the address where the "Task_ini" task was.
//My code creates a task in a new heap section, and if there is no space it will cause a memory allocation error.
xTaskCreate(Task_function, "Task_3", configMINIMAL_STACK_SIZE, ¶m3, 1, &htask3);
}
}
}
【问题讨论】:
标签: freertos