找回密码
 立即注册
查看: 713|回复: 10

STC8H1K17 data容量问题

[复制链接]
  • TA的每日心情
    奋斗
    4 小时前
  • 签到天数: 149 天

    [LV.7]常住居民III

    17

    主题

    62

    回帖

    383

    积分

    中级会员

    积分
    383
    发表于 2023-5-29 18:42:15 | 显示全部楼层 |阅读模式
    STC8H1K17 data容量问题-1.png


    STC8H1K17 data容量问题-2.png 为什么data=110.1 就报错了?

    回复 送花

    使用道具 举报

    该用户从未签到

    551

    主题

    9456

    回帖

    1万

    积分

    管理员

    积分
    14013
    发表于 2023-5-29 18:48:50 | 显示全部楼层
    STC8H1K08-36I-TSSOP20, 8k 程序空间,1024 * 8 = 8192字节
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3023

    回帖

    6815

    积分

    超级版主

    积分
    6815
    发表于 2023-5-29 22:49:04 | 显示全部楼层
    code超容量了,8K是8192,最后的一些字节还要保存一些参数。
    编译器提示的data,是包括idata的(没有分开计数),一共256,但是直接访问的只能是低128字节。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    17

    主题

    62

    回帖

    383

    积分

    中级会员

    积分
    383
     楼主| 发表于 2023-5-30 14:10:47 | 显示全部楼层
    神农鼎 发表于 2023-5-29 18:48
    STC8H1K08-36I-TSSOP20, 8k 程序空间,1024 * 8 = 8192字节

    不好意思,我写太急,用的是K17
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    17

    主题

    62

    回帖

    383

    积分

    中级会员

    积分
    383
     楼主| 发表于 2023-5-30 14:12:38 | 显示全部楼层
    梁工 发表于 2023-5-29 22:49
    code超容量了,8K是8192,最后的一些字节还要保存一些参数。
    编译器提示的data,是包括idata的(没有分开计 ...

    不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。  data总共使用了,110.1,按理说也没有超过128,但是编译不成功。

    点评

    能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。 虽然,你用了101.1个data,但是编译器会分配局部变量,就可能超过了。 将一部分变量定义到idata或xdata看看,如果有数组,则优先将数组放在xdata  详情 回复 发表于 2023-5-30 16:02
    多的变量放xdata里去  详情 回复 发表于 2023-5-30 15:53
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.6]常住居民II

    41

    主题

    1012

    回帖

    6959

    积分

    荣誉版主

    冲哥视频教程和各种开源资料QQ交流群884047237,可群

    积分
    6959
    QQ
    发表于 2023-5-30 15:53:30 | 显示全部楼层
    STC_STC 发表于 2023-5-30 14:12
    不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。  data总共使用了,110.1,按 ...

    多的变量放xdata里去
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3023

    回帖

    6815

    积分

    超级版主

    积分
    6815
    发表于 2023-5-30 16:02:25 | 显示全部楼层
    STC_STC 发表于 2023-5-30 14:12
    不好意思,我写太急,看我标题,是K17,只不过截图太急是K08.ROM是没有超的。  data总共使用了,110.1,按 ...

    能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。
    虽然,你用了101.1个data,但是编译器会分配局部变量,就可能超过了。
    将一部分变量定义到idata或xdata看看,如果有数组,则优先将数组放在xdata。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.7]常住居民III

    17

    主题

    62

    回帖

    383

    积分

    中级会员

    积分
    383
     楼主| 发表于 2023-5-31 08:25:15 | 显示全部楼层
    梁工 发表于 2023-5-30 16:02
    能否贴完整编译提示?我看到说目标没生成,但是下面的原因没看到了。
    虽然,你用了101.1个data,但是编译 ...

    谢谢,目标没有生成的原因是因为RAM超过了。我定义部分变量到idata,编译就可以了。
    我奇怪编译显示110个数据,按道理没有超过128,不过看了你的回复,应该是局部变量分配超过了,编译器分配局部变量是默认data类型吗?我把部分变量用idata定义后,编译是可以了。
    如果像这样的局部分配变量有没有办法查看用了多少?谢谢。

    点评

    看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。  详情 回复 发表于 2023-5-31 10:10
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3023

    回帖

    6815

    积分

    超级版主

    积分
    6815
    发表于 2023-5-31 10:10:54 | 显示全部楼层
    STC_STC 发表于 2023-5-31 08:25
    谢谢,目标没有生成的原因是因为RAM超过了。我定义部分变量到idata,编译就可以了。
    我奇怪编译显示110个 ...

    看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    郁闷
    2024-4-25 09:40
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    6

    主题

    16

    回帖

    116

    积分

    注册会员

    积分
    116
    发表于 2023-6-8 21:28:42 | 显示全部楼层
    梁工 发表于 2023-5-31 10:10
    看来确定了,你用了101.1个data,但是编译器会分配局部变量,这样直接寻址的data就超了。 ...

    单片机一些外设的寄存器放在了xdata里那可用部分是不是就不够了,比如8h1k08有1k的xdata,可用的部分是不是要减掉寄存器占用的那些

    点评

    寄存器放在差不多是最后的地址,前面还有至少60K的地址,8h1k08才1K的xdata,60K还是空地址。  详情 回复 发表于 2023-6-8 22:30
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-16 19:14 , Processed in 0.074393 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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