以STM32F103RCT6为例分析单片机的RAM以及ROM使用情况

1.stm32f103rct6的RAM:48k,ROM:256k

 

2.如果使用了原子的内存管理,在malloc.h中可以设置一片内存为动态内存,程序中用到的数组或为指针开辟内存就可以使用mymalloc,myfree来管理了

//内存参数设定
#define MEM_BLOCK_SIZE            32                                //内存块大小为32字节
#define MEM_MAX_SIZE            25*1024                          //最大管理内存,一般设置小于48k的90%,如果跑系统还要减去系统占用
#define MEM_ALLOC_TABLE_SIZE    MEM_MAX_SIZE/MEM_BLOCK_SIZE     //内存表大小

 

3.如果用了freertos,在FreeRTOSConfig.h中可以设置系统的内存,一般由小往大设置,够用就行,此处设置15k

/***************************************************************************************************************/
/*                                FreeRTOS与内存申请有关配置选项                                           */
/***************************************************************************************************************/
#define configSUPPORT_DYNAMIC_ALLOCATION        1                       //支持动态内存申请
#define configTOTAL_HEAP_SIZE                    ((size_t)(15*1024))     //系统所有总的堆大小

 

4.目前已使用的内存为25+15=40k, 如果程序中不用原子的内存管理,那么定义的数组或使用自带的malloc()函数来分配内存就会消耗剩余的8k内存

 

5.可以用keil编译程序来查看已使用的RAM及ROM

编译提示:Program Size: Code=26976 RO-data=176724 RW-data=296 ZI-data=60712  

RO-data为ROM:172.58k

RW-data+ZI-data为RAM:59.57k     这儿显示的并不一定准确,明显超了48k,主要keil将程序所有的定义都算了进去

当然在工程的.map文件中的最后也有相关定义和keil编译提示的一样

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值