玩转X-CTR100 | 内存管理
Posted xtark
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转X-CTR100 | 内存管理相关的知识,希望对你有一定的参考价值。
更多塔克创新资讯欢迎登陆 【塔克社区 www.xtark.cn 】 【塔克博客 www.cnblogs.com/xtark/ 】
内存管理技术,即内存的申请和释放,使用X-CTR100处理器STM32F4自身带的192K Byte 内存,实现了内存动态申请和释放。
原理介绍
内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。
常用C语言内存管理函数为malloc 和free,malloc函数用于内存申请,free函数用于内存释放。
软件生态
扩展文件
X-SOFT软件生态,X-API扩展文件如下。
ax-memorymgt.c —— 内管管理操作源文件
ax-memorymgt.h——内存管理接口头文件
接口函数
内存管理是指软件运行时对计算机内存资源的分配和使用的技术。其最主要的目的是如何高效,快速的分配,并且在适当的时候释放和回收内存资源。
常用C语言内存管理函数为malloc 和free,malloc函数用于内存申请,free函数用于内存释放。
//内存管理函数声明 void AX_MEM_Init(void); //MEM 初始化内存池 u8 AX_MEM_GetUsage(void); //MEM 获取内存使用率 void *AX_MEM_Malloc(u32 size); //MEM 分配内存 void AX_MEM_Free(void *sadr); //MEM 释放内存 |
STM32F407VET6 内存大小192K RAM,包含128K普通内存和64KCCM内存,默认设定管理最大64KRAM,可通过宏定义修改大小。
//内存参数设定,STM32F407VET6 内存大小192K RAM,包含128K普通内存和64KCCM内存。 //设定管理最大64KRAM #define AX_MEM_BLOCKSIZE 32 //内存块大小为32字节 #define AX_MEM_POOLSIZE 64*1024 //最大管理内存 64K #define AX_MEM_TABLESIZE AX_MEM_POOLSIZE/AX_MEM_BLOCKSIZE //内存表大小 |
例程设计
本例程实现内存管理测试,首先进行内存申请,并写入申请的内存,获取内存使用率显示。释放内存,再次获取内存使用率并显示。
硬件说明
硬件资源:
- 串口UART1
软件说明
主程序调用内存管理相关函数实现。
主程序代码如下。
int main(void) { uint8_t temp =15; uint8_t *p=0;
//X-CTR100初始化 AX_Init(115200); printf("***X-CTR100 内存管理例程*** "); //内存池初始化 AX_MEM_Init();
//***内存函数应用测试 //申请2K内存空间,写入内容并显示 p = AX_MEM_Malloc(2048); if(p!=NULL) sprintf((char*)p,"X-CTR100 Memory Malloc Test %03d ",temp); //向内存写入内容 printf("内存写入内容:%s",p); //显示写入的内容 //显示显示内存使用率 temp = AX_MEM_GetUsage(); printf("内存使用率:%d%% ",temp); //释放内存 AX_MEM_Free(p); //显示显示内存使用率 temp = AX_MEM_GetUsage(); printf("释放后内存使用率:%d%% ",temp);
while (1) { AX_Delayms(200); AX_LEDG_Toggle(); } } |
实现效果
实现效果如下图所示。
以上是关于玩转X-CTR100 | 内存管理的主要内容,如果未能解决你的问题,请参考以下文章
玩转X-CTR100 | X-PrintfScope波形显示
玩转X-CTR100 | X-Assistant串口助手控制功能