FreeRTOS-内存管理

一.内存管理简介

1.什么是内存管理

答:在FreeRTOS中创建任务、队列、信号量等对象时,一般分为两种方法:动态创建、静态创建  动态创建:FreeRTOS管理内存堆中自动分配创建所需的内存                                                        静态创建:需要用户提供各种内存空间,使用静态方式占用内存空间一般固定下来了,即删除任务、队列等,这些占用的内存一般不会被用作其他用途,会一直放着。

2.FreeRTOS中5中动态内存管理算法:

FreeRTOS-内存管理_第1张图片

二.内存管理相关API函数

FreeRTOS-内存管理_第2张图片

1.申请内存   void *   pvPortMalloc(size_t xWantedSize)                                                                       xWantedSize:申请的内存大小,以字节为单位;                                                                               返回值:返回一个指针,指向已分配大小的内存  内存申请失败:返回NULL

2.释放内存 void    vPortFree(void * pv)                                                                                                 pv:指针指向一个要释放内存的内存块

3.获取当前空闲内存的大小 size_t xPortGetFreeHeapSize(void)                                                          返回值:返回当前剩余的空闲内存大小

综合实验:

下图为FreeRTOS管理内存的大小为 3072 Kb (在FreeRTOSconfig.h中)

FreeRTOS-内存管理_第3张图片

学习内存管理,观察内存在申请和释放过程中内存大小的变化

1.设计Task1:按下KEY0申请内存,按下KEY1释放内存,并打印剩余内存信息

2.CubeMX配置

如下图,是内存管理的相关配置,默认使用算法为heap_4

FreeRTOS-内存管理_第4张图片                                

3.代码部分:

FreeRTOS-内存管理_第5张图片

现象:

FreeRTOS-内存管理_第6张图片

你可能感兴趣的:(stm32,单片机)