FreeRTOS入门day06

FreeRTOS动态内存管理

在嵌入式系统中,为了提高代码的运行效率,通常会用相对简单的方法去实现内存的分配,再封装成与malloc和free相同的函数接口。

申请内存的函数原型:

void *pvPortMalloc( size_t xWantedSize )//参数为需申请的字节数,返回地址指针

释放内存的函数原型:

void vPortFree( void *pv )//参数为指向内存的指针;

实现动态内存分配的方式:

Heap_1方式:

最简单的,运行效率最高的;
只支持申请内存,不允许释放;
具有时间确定性,不会产生内存碎片;
它不支持内存释放;

Heap_2方式:

支持内存申请、内存释放;
释放后的空闲小内存块不会被合并成大内存块;

适用于动态分配的内存块大小都是一样的情况;

Heap_3方式:

对编译器提供的malloc和free进行了封装,需要编译器提供malloc和free的实现;

Heap_4方式:

支持内存申请、内存释放;并且支持内存碎片整理;

Heap_5方式:

在heap_4的基础上,堆空间可以是不连续的空间;

使用heap_5方式进行动态内存管理时,需要先调用vPortDefineHeapRegions函数进行初始化,之后才能调用申请内存操作。
注意:

①FreeRTOS的堆空间大小由configTOTAL_HEAP_SIZE宏来确定,除了heap_3方式;
②使用xPortGetFreeHeapSize()函数来获取剩余可用堆空间的大小。
③使用heap_4或heap_5时,可以用xPortGetMinimumEverFreeHeapSize()函数来获取历史剩余可用空
间的最小值。

FreeRTOS的系统配置

FreeRTOS的系统配置文件是FreeRTOS.h和FreeRTOSConfig.h。在使用时,可以在FreeRTOSConfig.h配置自己需要的选项

举个🌰子:

#define configCPU_CLOCK_HZ  ( SystemCoreClock ) //定义CPU时钟主频
#define configMAX_PRIORITIES   ( 7 ) 
//定义可使用的任务优先级,定义为7则用户可用优先级为0~6,值越大优先级越高
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值