一.内存管理简介
1.什么是内存管理
答:在FreeRTOS中创建任务、队列、信号量等对象时,一般分为两种方法:动态创建、静态创建 动态创建:FreeRTOS管理内存堆中自动分配创建所需的内存
静态创建:需要用户提供各种内存空间,使用静态方式占用内存空间一般固定下来了,即删除任务、队列等,这些占用的内存一般不会被用作其他用途,会一直放着。
2.FreeRTOS中5中动态内存管理算法:
二.内存管理相关API函数
1.申请内存 void * pvPortMalloc(size_t xWantedSize)
xWantedSize:申请的内存大小,以字节为单位;
返回值:返回一个指针,指向已分配大小的内存 内存申请失败:返回NULL
2.释放内存 void vPortFree(void * pv)
pv:指针指向一个要释放内存的内存块
3.获取当前空闲内存的大小 size_t xPortGetFreeHeapSize(void)
返回值:返回当前剩余的空闲内存大小
综合实验:
下图为FreeRTOS管理内存的大小为 3072 Kb (在FreeRTOSconfig.h中)
学习内存管理,观察内存在申请和释放过程中内存大小的变化
1.设计Task1:按下KEY0申请内存,按下KEY1释放内存,并打印剩余内存信息
2.CubeMX配置
如下图,是内存管理的相关配置,默认使用算法为heap_4
3.代码部分:
现象: