找回密码
 注册
关于网站域名变更的通知
查看: 175|回复: 2
打印 上一主题 下一主题

pic f25k80单片机 ram空间不够,如何解决?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2021-12-13 13:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
pic f25k80单片机  RAM只有3649字节,做通信板使用,结合串口,485 ,can通信,主要是mqtt协议数据传输,但是现在问题是,需要接收大于517字节的远程升级包,需要申请1024字节的全局变量,但是ram完全不够用呢,写完代码ram至少差512字节的空间.代码部分通过map文件感觉能优化的都优化了,请问有什么办法呢,或者提供解决思路,和优化方法,谢谢4 d2 }' E9 m2 ~7 g# n) U6 L. t
5 i! E! S, x: T& W

该用户从未签到

2#
发表于 2021-12-13 14:07 | 只看该作者

. V. H# x; {7 b& I/ m3649字节都不够?那8051的256个字节怎么办呢?2 q$ `9 j. w9 X! P9 G, |2 `
PIC的18系列是中高端单片机了,不太可能用到资源不的情况的
2 \$ E7 Y, z; G1 |0 M# l2 f我不会C,所以不知道怎么回事,但256个字节都足够我用的,那3649字节肯定更加不用说了
. x8 Q6 x, x) c- O& N" \& G

该用户从未签到

3#
发表于 2021-12-13 14:55 | 只看该作者

2 f/ Q* ~5 f# b8 y1、程序优化:7 j! F" X; @3 M
①、将固定的代码数组等,存到ROM。(51单片机用 code表示存到 ROM)
5 v( B9 f  u0 ]% I9 M# C$ f/ J②、压缩多余缓冲区,如数组长度根据需求来定。不要直接a[100]一棍子打死。
3 Q' ?1 c/ ?. t1 [9 M' u* V③、合理分配变量数据类型,如计数值在0-100内的数,就没必要用 uint 了,使用 uchar 就够了。只要两个状态的标志位,用 bit 就行了,不要直接 uchar。
' @, s3 z; s$ o8 k! z④、可以用逻辑运算的,就不要采用算术运算。如 a/8,可以写成 a>>3,当然 a不是浮点型数据才行。而a*2则是 a<<1;而a%4,可以写成 a&0x03;% M5 R, `4 k; [% l. z& @4 w* C
……
/ W. N0 H4 P' j+ X. v; G……
2 U% c) t9 `; G# B- w* b……# o6 m; E: ]" p* w: K' o+ N
2、扩大RAM
# e/ ?( X0 i7 E# L8 a4 t4 [①、买个同系列高RAM区间的单片机。) v) [9 \; ?' b
②、买个同系列高RAM区间的单片机。
9 E4 P: L* t: y" ^5 q+ ?9 n+ m' M③、买个同系列高RAM区间的单片机。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-18 19:36 , Processed in 0.125000 second(s), 24 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表