找回密码
 立即注册
查看: 181|回复: 7

为什么单片机无法按照程序执行?| 已解决

[复制链接]
  • TA的每日心情
    慵懒
    2024-4-12 08:51
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    3

    主题

    6

    回帖

    93

    积分

    注册会员

    积分
    93
    发表于 2024-3-9 12:55:28 | 显示全部楼层 |阅读模式
    本帖最后由 Dwyer 于 2024-3-9 21:17 编辑

    最近在使用STC8H1K08这个单片机的时候总是觉得怪怪的。一开始程序还算正常,按照例程写的串口收发也是正常的。但是在程序越写越多的时候会报空间不够的错误

    截图202403091252088875.jpg

    于是把单片机的size改大
    截图202403091252482319.jpg

    这下编译是没有问题了,但是实际上会出现程序写到代码,压根不执行

    截图202403091253273229.jpg

    如上图,收到了数据,切RX1_Buffer内的数据就是我下发的数据,COM1_RX_Cnt也为8.按照道理应该进红框中的
    for循环,然后执行蓝框中的程序,但是实际却没有执行蓝框中的程序,是直接跳到了下一句。
    请问这个是怎么回事??
    感谢大家已经解决问题,确实是我内存满的问题,把变量放在外部存储区就没问题了


    回复 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-4-12 08:51
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    3

    主题

    6

    回帖

    93

    积分

    注册会员

    积分
    93
     楼主| 发表于 2024-3-9 13:07:53 | 显示全部楼层
    我使用的是库函数,目前我取消了不用的串口。然后吧定义的数组放到了XDATA,目前程序又正常了,看来是空间不够导致的程序错乱
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    擦汗
    7 小时前
  • 签到天数: 156 天

    [LV.7]常住居民III

    25

    主题

    719

    回帖

    1793

    积分

    金牌会员

    积分
    1793
    发表于 2024-3-9 13:58:27 | 显示全部楼层
    51的data是128
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 140 天

    [LV.7]常住居民III

    34

    主题

    324

    回帖

    599

    积分

    高级会员

    积分
    599
    发表于 2024-3-9 14:05:58 | 显示全部楼层
    STC8H1K08  是1K的RAM吧,你里面 data+xdata 超了1K了,然后data应该不能超过256
    纸上得到终觉浅,绝知此事要躬行。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9291

    回帖

    1万

    积分

    管理员

    积分
    14057
    发表于 2024-3-9 21:02:49 | 显示全部楼层
    截图202403092100449368.jpg

    STC8 尽量用户变量全部放 xdata !
    ===最小规模的STC8, xdata都 >=1024字节

    idata/data, 留给堆栈使用

    下面的 SRAM 指的是 xdata的大小,
    不包含 256字节的 idata/堆栈
    截图202403092103424569.jpg

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:29
  • 签到天数: 97 天

    [LV.6]常住居民II

    9

    主题

    556

    回帖

    817

    积分

    高级会员

    积分
    817
    发表于 2024-3-9 22:50:30 | 显示全部楼层
    data=273.3byte,超过了单片机256byte。好像堆栈也要在这256byte中,所以还要给堆栈留点余量。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情

    7 小时前
  • 签到天数: 58 天

    [LV.5]常住居民I

    3

    主题

    539

    回帖

    714

    积分

    高级会员

    积分
    714
    发表于 2024-3-9 23:00:14 | 显示全部楼层
    51的data有点小
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    16 小时前
  • 签到天数: 67 天

    [LV.6]常住居民II

    11

    主题

    384

    回帖

    1117

    积分

    金牌会员

    积分
    1117
    发表于 2024-3-10 13:22:17 | 显示全部楼层
    data小,可以自己优化,参与计算的idata,参与少的xdata,如果仅仅是个常亮,比较表格之类,用code声明,放到代码区.

    程序写起来很简单,优化要根据变量使用情况.其实你选了51,一般的项目还真没有出现过ram不够的情况.
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-2 16:18 , Processed in 0.078611 second(s), 59 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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