找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2177|回复: 1
打印 上一主题 下一主题
收起左侧

合泰单片机CMG的层数超过堆栈层数,这是内存不够了的意思吗?

[复制链接]
跳转到指定楼层
楼主
碰到合泰单片机的问题,这是内存不够了的意思吗

1.png (13.31 KB, 下载次数: 30)

1.png
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2021-7-20 23:58 | 只看该作者
合泰单片机是硬件堆栈,8051是软件堆栈,两者是不一样的
硬件堆栈是用硬件来进行堆栈操作的,它的层数是有限的,有的是四五层,有的是十多层
调用一次函数用一层,函数里面再调用一次其它函数就又用一层,这样就用了两层了(8051不需要在乎这个东西)
硬件堆栈就不一样了,容易溢出
所以,合泰的C是不允许递归的,在中断函数内尽量码代码,而不是通过函数来处理,能写代码就不调用函数(这个......跟C唱反调了)
尽可能的多调用几个函数来处理,而不是调用的函数中又其它函数
比如:应该是这样的:
display()
{
aa();
bb();
cc();
}

而不是:
display()
{
aa();      -------------   aa()函数里面包含了函数bb();和cc();
}    这样使用的话就多用了几层堆栈了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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