完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
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编译提示的一样。 |
|
|
|
只有小组成员才能发言,加入小组>>
3320 浏览 9 评论
3000 浏览 16 评论
3497 浏览 1 评论
9069 浏览 16 评论
4090 浏览 18 评论
1190浏览 3评论
612浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
603浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2341浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1899浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 01:45 , Processed in 1.368070 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号