打印
[技术问答]

KEIL 单片机的RAM 超出范围处理

[复制链接]
1391|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大苏牙|  楼主 | 2016-2-28 22:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                             以前写了一个测试程序,昨晚上想把测试程序在改进时候,发现我多增加一个全局变量 unsigned int flag; //定义一个全局变量 ,烧写到单片机。。单片机运行时候。LCD 显示就正常了。测量到的数据也显示不了, 反复测试好多次, 发现问题就在这句: unsigned int flag; //定义一个全局变量 多定义一个就出现错误。 我百思不得其解。。 最后我只有请教了一些朋友,一些有经验的朋友很快就知道问题出在哪里了。 是单片机的RAM 不够了。 因为我的这个程序比较大,涉及全局变量用到的比较多,超出范围了。KEIL有三种存储模式SMALL,COMPACT,LARGE. 默认存储模式是SMALL , 默认就把所有的变量都放在RAM里面,这样访问速度是最快,但是适合小程序, 我的RAM 只有1280字节 。是不够的。所以要选择large模式,该模式空间大,可存变量多,但是访问速度相对于比较慢。 所以。。只要把 KEIL Memory Model 设置为:large 即可。

OK ,人多力量大。。 问题就这样解决了。 所以,做个记录。 让看过这篇**的人,下次遇到这样问题,也可以试试这个方法。
                       

沙发
09kk小熊| | 2016-2-29 09:48 | 只看该作者
学习了

使用特权

评论回复
板凳
IversonCar| | 2016-2-29 15:43 | 只看该作者
这个得看芯片的RAM到底有多大吧,小的话就没办法了

使用特权

评论回复
地板
李香兰| | 2016-2-29 20:01 | 只看该作者
这个还是选择RAM大的芯片吧,设计的时候一定要考虑到这一点

使用特权

评论回复
5
Ketose| | 2016-3-1 13:00 | 只看该作者
51单片机。。。

使用特权

评论回复
6
quray1985| | 2016-3-2 21:50 | 只看该作者
超出范围之后,程序肯定总是执行错了啊

使用特权

评论回复
7
a_ziliu| | 2016-3-22 14:28 | 只看该作者
這應該是8051的問題,8051有XRAM, IRAM, 使用者可以自已指定。
編譯後,看LST檔,去作變數等等記憶的規畫。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

278

帖子

4

粉丝