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

奇怪的问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-12 11:44:58

14

主题

39

回帖

304

积分

中级会员

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:52
  • 最近打卡:2025-05-03 23:41:15

73

主题

5884

回帖

1万

积分

超级版主

积分
12085
发表于 2023-3-16 16:38:43 | 显示全部楼层
内部错误,我没见过这个提示,应该是电脑或软件的问题
  • 打卡等级:偶尔看看III
  • 打卡总天数:56
  • 最近打卡:2025-05-03 10:05:34

718

主题

1万

回帖

1万

积分

管理员

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

1.png
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-12 11:44:58

14

主题

39

回帖

304

积分

中级会员

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

点评

可以用我们已经建立并编译好的实验箱或者核心功能实验板里面的程序来试一下:深圳国芯人工智能有限公司-实验箱 https://www.stcai.com/syx  详情 回复 发表于 2023-3-17 13:14
  • 打卡等级:以坛为家I
  • 打卡总天数:248
  • 最近打卡:2025-04-27 09:57:01
已绑定手机

24

主题

756

回帖

3315

积分

超级版主

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

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



  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-12 11:44:58

14

主题

39

回帖

304

积分

中级会员

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

经过试验,把 除以1 去掉,或者把 j 的定义改成 unsigned int 就没事了,char 8 位的不行,想不通。
还发现一个比如 fun(u + 1) 这样也报错,参数被截断.
  • 打卡等级:常住居民III
  • 打卡总天数:135
  • 最近打卡:2024-12-25 10:15:05

47

主题

1350

回帖

8058

积分

荣誉版主

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

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

直接报错还是警告?
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2023-12-12 11:44:58

14

主题

39

回帖

304

积分

中级会员

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

点评

实参与形参不一致所导致,强制转换一下即可。  详情 回复 发表于 2023-3-22 14:50
  • 打卡等级:以坛为家II
  • 打卡总天数:415
  • 最近打卡:2025-04-30 09:58:34
已绑定手机

39

主题

2006

回帖

6845

积分

论坛元老

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

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

14

主题

39

回帖

304

积分

中级会员

积分
304
发表于 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, 2025-5-4 01:23 , Processed in 0.130101 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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