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编译提示的一样
版权声明:本文为chidaoqi1607原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。