[STM8] STM8S的RAM就这样浪费掉了

[复制链接]
 楼主| motor666 发表于 2014-6-27 09:12 | 显示全部楼层 |阅读模式
原来用的是STM8S105C4,变量只能定义255个,现在换成C6,RAM扩大到2K,结果一试还是一样,看来换成几K 的都只能定义255个,太浪费了。
ar_m_cu 发表于 2014-6-27 09:21 | 显示全部楼层
255个大部分的应用都够用了吧,我的应用总从来没有这么多的变量
其次内存不仅仅是用来定义变量的,开缓冲区、堆栈都是用的RAM
旭日东起 发表于 2014-6-27 11:03 | 显示全部楼层
2K确定多,特定场合才要那么多RAM的
 楼主| motor666 发表于 2014-6-27 11:31 | 显示全部楼层
说的有道理,尽量少用。但是,毕竟有些是需要很多的,如果都不需要那么多,还做大容量RAM的型号的单片机干什么呢?我是做交流正弦波信号采集,每周最低也得采64个点,再少就算不出来了,128个点最好,数据是16位的,还要干点别的吧,所以255个肯定不够,又试了207的,也是一样,所以只能想其它办法了。
mmuuss586 发表于 2014-6-27 12:37 | 显示全部楼层

你的意思是:想要定义很多的变量,现在程序只能定义255个吗?剩下的空间都不能定义?
lcdi 发表于 2014-6-27 14:27 | 显示全部楼层
不至于吧?定义成一个大数组试试?
你贴一下怎么定义的。
 楼主| motor666 发表于 2014-6-27 15:14 | 显示全部楼层
C:\图1
 楼主| motor666 发表于 2014-6-27 15:16 | 显示全部楼层
本帖最后由 motor666 于 2014-6-27 15:21 编辑
lcdi 发表于 2014-6-27 14:27
不至于吧?定义成一个大数组试试?
你贴一下怎么

图1

图1

图2

图2
定义的。
             把数组ARRY[200]屏蔽就通过,打开就报错。
C:\图1
yiucing 发表于 2014-6-27 15:42 | 显示全部楼层
是不是要修改一下memory mode。。
ar_m_cu 发表于 2014-6-27 15:54 | 显示全部楼层
STM8S105C4 和 C6 的内存都是2K。你应该检查下你还有那些地方使用了内存,包括连接文件里面堆栈大小的定义
hdp7891000 发表于 2014-6-27 19:10 | 显示全部楼层
200的数组肯定是可以的,肯定是你自己哪边没注意
21ID 发表于 2014-6-27 19:27 | 显示全部楼层
检查一下堆栈,255个变量肯定可以定义的
鸟鸟 发表于 2014-6-27 22:05 | 显示全部楼层
dzxxjack 发表于 2014-6-27 22:10 | 显示全部楼层
本帖最后由 dzxxjack 于 2014-6-27 22:41 编辑

STM8S105系列CPU的RAM地址范围为0~0x7FF的2K空间,其中默认将高512字节分配给堆栈,剩下0~0x5FF字节为变量存储空间 。在0~0x5FF的空间范围内,低256字节被定义为Zero page,其中包括.bsct,.ubsct,.bit,.share, 当segment .ubsct overflow错误出现时, 应该是低0~FF段空间出现溢出,cosmic默认将所有变量存储在zero page段, 你可以把其中的一些变量定义到0x100~0x5FF的空间里,通常将所有全局变量都加上@near申明,以放置在zero page外的存储空间!
或者你在project setting里,把MEMORY MODEL设成stack long,如果还不够用,你再把变量分一些放到0-FF段,正常定义1K多的变量应该没问题的,stack long默认将变量放在0x100以后(@near)stack short默认将变量放在0xff以内(@tiny)全局变量进行@tiny定义,就分配到0~FF段空间了,全局变量进行@near 定义,变量就放在0x100以后了。

评分

参与人数 1威望 +1 收起 理由
百经之首 + 1 很给力!

查看全部评分

zh_sl 发表于 2014-6-28 09:16 | 显示全部楼层
这是编译器的问题,你找一下所用的编译器资料看看吧
通宵敲代码 发表于 2014-6-28 09:51 | 显示全部楼层
你不是编译器的限制呢??
lovehuxiaohui 发表于 2014-6-28 20:42 | 显示全部楼层
....楼主 要好好补资料啊~~很简单的问题~~
stvd+cosmic情况下~~
@near unsigned char aaa[300];
这样定义 就定义在255以后的空间了~~
 楼主| motor666 发表于 2014-6-30 09:54 | 显示全部楼层
dzxxjack说的太透彻了,lovehuxiaohui也说到点子了了。非常感谢。
ldc2qt 发表于 2015-12-11 17:02 | 显示全部楼层
IAR ,乱定义
ereck 发表于 2015-12-30 09:16 | 显示全部楼层
还没有用到超过255个变量的,大的程序可能就不用这个片子了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

176

主题

426

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部