单片机内存不够的问题! 20

我用的单片机STC11F32XE。内部RAM是256个字节,外部RAM有1024个字节。我应用需要接收最大512个字节长度的数据,然后把这些数据填充到EEPROM,EEP... 我用的单片机STC11F32XE。内部RAM是256个字节,外部RAM有1024个字节。我应用需要接收最大512个字节长度的数据,然后把这些数据填充到EEPROM,EEPROM一个扇区是512个字节,现在我使用外部RAM的512个字节作为接收缓存,用外部RAM的512个字节作为读取EEPROM的缓存,这两个缓存都用完我的外部RAM了,我还需要512个字节的发送缓存和全局变量用到的内存就没有了。对于我这个问题,各位大侠有什么好的办法减少RAM的使用吗?重谢! 展开
 我来答
轩辕志利
2018-07-05 · 知道合伙人数码行家
轩辕志利
知道合伙人数码行家
采纳数:56 获赞数:1965
学生

向TA提问 私信TA
展开全部
解决方案:
一、在原有的单片机上改动。
1、优化程序,有效果,但效果其实不大。
2 、自己扩展片外的RAM,一来是费硬件的钱,二来是电路要不停的飞线。
二、换一大内存的单片机。比如STC32F103C8T6,三个串口,16K的RAM。
三、减少串口对数据的接收量,比如只检查$GPRMC信息,提取到坐标后就把其他信息丢弃了。
梦旭LYQ
2013-03-11 · TA获得超过1.5万个赞
知道大有可为答主
回答量:9186
采纳率:84%
帮助的人:1486万
展开全部
外部与内部可以共用512字节的缓存,使用不同的中断就可以,即当接收或发送断到来时,先对512字节的缓存清零,然后读入或接收数据再填充就行了。也可以在填充或发送完后清零,这样在发送或接收时就不需要先清零了。中断到后可直接使用缓存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxiufan
2013-03-11 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38382
国家科技进步奖

向TA提问 私信TA
展开全部
发送的是读取EEPROM的数据的话,这两个缓存可以共用呀,还有你可以选取STC含有内部扩展RAM大点的单片机呀,就我所知,好像最大有4K的扩展RAM吧。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
993106193
2013-03-11 · TA获得超过280个赞
知道小有建树答主
回答量:926
采纳率:20%
帮助的人:517万
展开全部
接收缓存和发送缓存如果不需用同时使用可以共用一个缓存区
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jrh00102
2013-03-11
知道答主
回答量:15
采纳率:0%
帮助的人:9.7万
展开全部
接收缓存、读取EEPROM的缓存、发送缓存三者的在时间上是否会同时使用(三者的关系),如否,可考虑不同时间段共享内存
追问
我用的开发环境为KEIL4.12,请问如何共享这段内存呢。我的应用是这样的:首先把从网口接收到的42+512=554个字节进行累积和校验,然后用这些数据去修改EEPROM中的数据,因为一个扇区为512字节,所以我定义一个512字节的数组(局部变量)做为缓存,网口接收缓存是定义一个554字节的全局变量数组,结果编译的时候XDATA已超过1024字节了,编译都通不过!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式