dx32例程实用篇大侠有话说.pdfVIP

  1. 1、本文档共2页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

1.这是一个动态内存开辟的函数,当一个单片机程序复杂到需要在运行中开辟内存的时候,

那这个编程水平可以说是基本越过了菜鸟级的了.如果你还没想通为什么要在运行中开

辟内存,那么这个例程可以暂且不看这个程序的出现,是为DX-GUI铺路

的.DX-GUI中是需要有动态内存开辟的.

2.

首先是一些比较通用的知识介绍,只能说通用,不能说是规定.例如,堆栈的概念,堆,就是

HEAP;栈,就是STACK.一般来说,也就是通用的来说,堆HEAP是用于动态内存分配的,

是向上生长的.而栈STACK是用于程序保存寄存器的压栈用的,是向下生长的.之所以说

是通用,而不是规定,那是因为51年代的栈是向上生长的~

而一般地,HEAP和STACK的分配是,HEAP位于下端,STACK位于上端.至于系统使用的

RAM的位置,则根据编译器的不同而不同.

例如MDK的内存分配策略是:用户内存位于RAM的,跟着是HEAP再到

STACK.HEAP和STACK的大小,一般由启动文件指定.

而IAR则有点不同,HEAP位于RAM,然后到STACK,才是用户内存.而IAR的

这些分配,是通过一个ICF文件来定义.

3.了解到堆和栈的一些知识后,另外还有一个不正规的用法,也是白菜程序中的用法,就是直

接寻找整个系统静态内存的顶端作为内存的开辟区.这种方式分配起来可以懒惰一点,而

且只要用户RAM的顶端是空闲可用的,那么动态内存开辟就可以一直开辟到RAM的尽

头.这样就省了定义HEAP大小的估算了.当然这是一种不正规的用法,大家要根据情况

而定.实际上无论正规不正规,在这个例程中仅仅需要定义一个允许程序开辟内存的首地

址和末地址而已.例程中已经把正规与不正规的用法都列出,可以使用注释符号其中

一种.

4.本程序是白菜N年前因项目需要写的不算完善,但也好用.程序中”BC”两字就是”白菜”

的意思动态开辟的内存,无论你开辟多少,最后首尾都会自动编排为4字节对齐.能够

分配的最大内存块数,在mem.h中要预先定义:

#defineMAX_MEM_PTR10

代表最多可开辟10块内存.

定义了这个块数后,mem.c中就会根据这个MAX_MEM_PTR静态创建一些辅助的

数组,有了这些数组,整个内存开辟的过程就变得相当简洁.也就是说,为的是加快内存开

辟的效率.本程序最好使用仿真器调试,没有仿真器的,也可以插个串口,这里使用了printf

函数来格式化输出各个开辟内存的地址了,对于printf的用法,请大家参考技巧篇\4_printf.

5.程序的执行过程要大家自己分析了,但思路其实很简单,就是根据用户开辟的内存大小,从

空闲处找一片4字节对齐的连续区域,注意必须是连续且4字节对齐,并且是大小足够的.

2

如果大小不够,那么就继续寻找下一片连续的空闲区域.直到找到为止.与很多计算机中使

用动态开辟的情况一样,用完记得要释放内存哦~

6.3

获取内存末端或者获取HEAP的起始端之类的,MDK中有一个特别的表示方式,首

先,microLib要选上,这个也是printf中要选中的MDK附加功能,具体参考printf例程.

然后大家还记得ST

文档评论(0)

153****4985 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档