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

奇怪的问题

[复制链接]
  • TA的每日心情
    慵懒
    2023-12-12 11:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    38

    回帖

    294

    积分

    中级会员

    积分
    294
    发表于 2023-3-16 15:31:36 | 显示全部楼层 |阅读模式
    最近在尝试将51的程序转到251,重新编译后出现错误:

    My_Fun_STC8.c(1327): error C11: internal error: (asmgen - triple=t0207)
    奇怪的问题-1.png
    看来看去不知道哪里错了。。。
    回复 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2978

    回帖

    6711

    积分

    超级版主

    积分
    6711
    发表于 2023-3-16 16:38:43 | 显示全部楼层
    内部错误,我没见过这个提示,应该是电脑或软件的问题

    该用户从未签到

    550

    主题

    9351

    回帖

    1万

    积分

    管理员

    积分
    13882
    发表于 2023-3-16 16:49:34 | 显示全部楼层
    截个全图,大家好帮忙
    1.png

    1.png
  • TA的每日心情
    慵懒
    2023-12-12 11:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    38

    回帖

    294

    积分

    中级会员

    积分
    294
     楼主| 发表于 2023-3-17 13:02:07 | 显示全部楼层
    重新安装了一遍keil,问题任然存在,可能只能重写软件了。。。。:'(

    点评

    可以用我们已经建立并编译好的实验箱或者核心功能实验板里面的程序来试一下:深圳国芯人工智能有限公司-实验箱 https://www.stcai.com/syx  详情 回复 发表于 2023-3-17 13:14
  • TA的每日心情
    慵懒
    9 小时前
  • 签到天数: 89 天

    [LV.6]常住居民II

    14

    主题

    610

    回帖

    2299

    积分

    超级版主

    积分
    2299
    QQ
    发表于 2023-3-17 13:14:15 | 显示全部楼层
    alanding 发表于 2023-3-17 13:02
    重新安装了一遍keil,问题任然存在,可能只能重写软件了。。。。

    可以用我们已经建立并编译好的实验箱或者核心功能实验板里面的程序来试一下:深圳国芯人工智能有限公司-实验箱  https://www.stcai.com/syx
    1.png



    www.STCAI.com
    微信&手机:18106296591
    QQ:3133693787
  • TA的每日心情
    慵懒
    2023-12-12 11:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    38

    回帖

    294

    积分

    中级会员

    积分
    294
     楼主| 发表于 2023-3-21 16:26:42 | 显示全部楼层
    本帖最后由 alanding 于 2023-3-21 16:31 编辑

    经过试验,把 除以1 去掉,或者把 j 的定义改成 unsigned int 就没事了,char 8 位的不行,想不通。
    还发现一个比如 fun(u + 1) 这样也报错,参数被截断.
  • TA的每日心情
    开心
    9 小时前
  • 签到天数: 94 天

    [LV.6]常住居民II

    39

    主题

    995

    回帖

    6872

    积分

    荣誉版主

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

    积分
    6872
    QQ
    发表于 2023-3-21 16:48:24 | 显示全部楼层
    alanding 发表于 2023-3-21 16:26
    经过试验,把 除以1 去掉,或者把 j 的定义改成 unsigned int 就没事了,char 8 位的不行,想不通。
    还发现 ...

    直接报错还是警告?
  • TA的每日心情
    慵懒
    2023-12-12 11:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    38

    回帖

    294

    积分

    中级会员

    积分
    294
     楼主| 发表于 2023-3-21 16:53:30 | 显示全部楼层
    My_Fun_STC32.c(644): warning C188: 'parameter 1': value truncated

    点评

    实参与形参不一致所导致,强制转换一下即可。  详情 回复 发表于 2023-3-22 14:50
  • TA的每日心情
    奋斗
    9 小时前
  • 签到天数: 136 天

    [LV.7]常住居民III

    26

    主题

    1316

    回帖

    4101

    积分

    论坛元老

    积分
    4101
    发表于 2023-3-21 19:24:10 | 显示全部楼层
    alanding 发表于 2023-3-21 16:53
    My_Fun_STC32.c(644): warning C188: 'parameter 1': value truncated

    这只是调用函数时传递的参数类型跟函数定义的参数类型不一致情况下,编译器提示参数有可能会被裁剪。
    至于前面说的错误,最好能提供可以复现故障的完整项目程序,这样才好分析。
  • TA的每日心情
    慵懒
    2023-12-12 11:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    14

    主题

    38

    回帖

    294

    积分

    中级会员

    积分
    294
     楼主| 发表于 2023-3-22 12:55:23 | 显示全部楼层
    本帖最后由 alanding 于 2023-3-22 12:56 编辑

    不明白是怎么造成的错误,想出一个临时方法,把所有8位变量改成16位变量就能编译通过了,包括警告也没了,下面是原来内部错误的源码:第41行,把除号改成加减乘都没错

    #include <STC_32G.H>
    #include <INTRINS.H>
    //#include <My_Fun_STC32.H>

    unsigned long int edata abc;
    unsigned long int edata aaa;
    unsigned char far led[32768];

    void my_fun_gmt_to_days(unsigned char *s, unsigned long int u)
    {
            unsigned int d, i, y;
            unsigned char j;

    //        u = u + (un.inf.time_zone * 3600L) + (un.inf.ext_time_zone * 1800L);                // Convert to local time
            d = u / 86400L;
            u = u % 86400L;

            y = 1970;
            while(d > 365)
            {
                    if ((y % 4) == 0) d -= 366; else d -= 365;
                    y++;
            }
            if ((d == 365) && ((y % 4) != 0))                // No leap year
            {
                    d -= 365;
                    y++;
            }
            s[0] = (unsigned char)(y / 1000) | 0x30;
            i = y % 1000;
            s[1] = (unsigned char)(i / 100)  | 0x30;
            i = y % 100;
            s[2] = (unsigned char)(i / 10)   | 0x30;
            i = y % 10;
            s[3] = (unsigned char)(i / 1)    | 0x30;
            s[4] = '0';
            s[5] = (unsigned char)(d / 100)  | 0x30;
            j = d % 100;
            s[6] = (unsigned char)(j / 10)   | 0x30;
            j = d % 10;
            s[7] = (unsigned char)(j / 1)    | 0x30;
    //        s[7] = (unsigned char)((unsigned int)j / 1) | 0x30;
            i = u / 3600;
            u = u % 3600;
            s[8] = (unsigned char)(i / 10) | 0x30;
            s[9] = (unsigned char)(i % 10) | 0x30;
            i = u / 60;
            u = u % 60;
            s[10] = (unsigned char)(i / 10) | 0x30;
            s[11] = (unsigned char)(i % 10) | 0x30;
            s[12] = (unsigned char)(u / 10) | 0x30;
            s[13] = (unsigned char)(u % 10) | 0x30;
            s[14] = 0;
    }

    void xxx(void)
    {
            unsigned char j, s[16];

            s[7] = (unsigned char)(j / 1)        | 0x30;
    //        s[7] = (unsigned char)((unsigned int)j / 1) | 0x30;
    }

    void main(void)
    {
            unsigned char j, s[16];

            xxx();
            my_fun_gmt_to_days(s, 0L);
            s[7] = (unsigned char)(j / 1)        | 0x30;
    //        s[7] = (unsigned char)((unsigned int)j / 1) | 0x30;
            _nop_();
            aaa = abc * 3;
            led[1] = 2;
    }

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

    本版积分规则

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

    GMT+8, 2024-5-9 17:55 , Processed in 0.071263 second(s), 69 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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