xTaskCreate(LED_Task, "LED_Task", 128, NULL, 6, NULL);
这个问题如果要细说,牵涉到的知识点比较多,下面挑几个重要相关的内容来解答这个问题。
内存静态和动态分配
内存分配一般分为:静态和动态分配。
1、静态分配内存
Stack_Size EQU 0x400
static int a;
int char;
2、动态分配内存
void UART_Send(char *p)
{
char buf[10];
//......
}
梳理FreeRTOS内存分配
1、全局数组(堆栈)
#define configTOTAL_HEAP_SIZE ((size_t)(10 * 1024))
数组(堆栈)ucHeap:
2、创建任务
xTaskCreate(LED_Task, "LED_Task", 128, NULL, 6, NULL);
提醒:这里“字”是单位,比如:uint32_t
3、删除任务
FreeRTOS删除任务,会调用“vPortFree()”函数释放对应的内存。
FreeRTOS是动态分配内存吗?
看到这里,你能回答开篇这个问题了吗?
答案:FreeRTOS不是动态分配内存,只是模拟了动态分配的方式,实际的内存是静态分配的。
END
来源:嵌入式专栏
→点关注,不迷路←