打印
[技术问题解答]

cw6.3编译器中执行变量类型转换影响到其他数据(已解决)

[复制链接]
1157|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 FSL_TICS_A 于 2014-6-3 15:50 编辑

float  bz;uintdat1; //全局变量
void zb_tab1(uint dat_8dot[])            //uint  dat_8dot[];//函数的形参
{
          uint end_dot;//局部变量
//.................................................
      end_dot = dat_8dot * bz;    //////////////////仿真观察程序运行完这一条语句后, dat1 全局变量数组里面的数值就会发生变化??请问怎么办??
//.................................................
}


void  print_zbmid(uint recdat24[24], uint zzb_kd)
{   


    for (i = 0;i<=7;i++)//            '将RECDAT24数组的中间8个数据取出到DOT数组中
    {            

             dot = recdat24;
    }

    zb_tab1(recdat24);//           第一次还正常{从第6位开始就数组数值就已经改变了}


    for (i = 8;i<=15;i++)//            '将RECDAT24数组的中间8个数据取出到DOT数组中
    {
            dot[i - 8] = recdat24;
    }

    zb_tab1(dot);//           第二次和第三次就错误了

    for( i = 16;i<=23;i++)//             '将RECDAT24数组的后8个数据取出到DOT数组中
        dot[i - 16] = recdat24;

    zb_tab2(dot);
}

void adddat(uint *p,uint *q)
{

        print_zbmid(dat1,ykd_dat) ;
}


我百度了下,感觉就是ram放不下了(大概变量太多还用了float)。好像可以通过修改这里来实现,但不知道怎么修改

QQ截图20140527153522.jpg (636.9 KB )

QQ截图20140527153522.jpg

相关帖子

沙发
FSL_TICS_LY| | 2014-5-27 16:22 | 只看该作者
楼主的工程在创建的时候没有选择对浮点的支持,这个可能是导致你问题的原因
看你的截图,用到的库文件是ansiis.lib,这个库只支持整数运算。
楼主在CW中重新建一个工程,在新建工程向导的第五步“C/C++ Options”中选择要支持浮点的format IEEE32或者IEEE64.
然后比较一下新生成工程用到的库和编译选项,然后在自己的工程中把ansiis.lib替换成你想要的库(右键点击文件名字,remove去掉当前文件, add Files。。。添加文件)。

使用特权

评论回复
板凳
FSL_TICS_LY| | 2014-5-27 16:24 | 只看该作者
忘了回答你另外一个问题了,RAM的大小是改不了的,这个是片子本身固定死的,无法改变。
如果你怀疑参数传递过程中出问题, 那你可以试试在.prm文件中更改stacksize的大小。

使用特权

评论回复
评论
cl234583745 2014-5-29 08:00 回复TA
好多人都不知道修改的O(∩_∩)O谢谢 
地板
cl234583745|  楼主 | 2014-5-27 16:46 | 只看该作者
本帖最后由 cl234583745 于 2014-5-27 16:59 编辑
FSL_TICS_LY 发表于 2014-5-27 16:22
楼主的工程在创建的时候没有选择对浮点的支持,这个可能是导致你问题的原因
看你的截图,用到的库文件是ans ...

开始建工程时候的确没有选择浮点(编译过不去)  后面我重新建工程选择了iee32。但我不清楚iee32和64什么区别,后来又选择了iee64 用到的库文件就是ansiis呀(能过去编译)(iee32的确是另外一个库文件)
现在ieee32库是ansis。lib  iee64库文件时ansifs。lib

使用特权

评论回复
5
cl234583745|  楼主 | 2014-5-27 16:50 | 只看该作者
本帖最后由 cl234583745 于 2014-5-27 16:51 编辑
FSL_TICS_LY 发表于 2014-5-27 16:24
忘了回答你另外一个问题了,RAM的大小是改不了的,这个是片子本身固定死的,无法改变。
如果你怀疑参数传递 ...

你看到图片了吧  程序运行到end_dot = dat_8dot * bz;时候  我在点击单步程序就跳到如图这里(看顶部目录文件)来运行了,之后dat1【】数组里面的数据从第7个元素开始变化,要不很大要么很小,所以我怀疑是内存的事情。那你说的stacksize是什么意思 怎么改呢?不是修改SEGMENTS吗??

QQ图片20140527165038.jpg (75.45 KB )

QQ图片20140527165038.jpg

使用特权

评论回复
6
cl234583745|  楼主 | 2014-5-28 07:57 | 只看该作者
楼主看帮我看看啊

使用特权

评论回复
7
cl234583745|  楼主 | 2014-5-28 08:15 | 只看该作者
FSL_TICS_LY 发表于 2014-5-27 16:24
忘了回答你另外一个问题了,RAM的大小是改不了的,这个是片子本身固定死的,无法改变。
如果你怀疑参数传递 ...

牛B 我修改了下堆栈的大小就好了,果真是增加了float后放不下了:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

644

帖子

1

粉丝