430C语言数组转换问题?
刚开始搞430用C。不是太熟悉。编了个数组转换的程序,子程序编译倒是通过了,但是一调用就出错。不知道是啥问题?? 附上,数组转换程序。void mapcha(uchar inmap,uchar outmap)//数组转换
{
uint i;
uint n;
for(i=0;i<1024;++i) //共1024个数据
{
n=inmap;
outmap=n;
}
}
子程序编译并没有出现错误提示。但是调用时就发生错误了{:mad:} 调用程序如下:
uchar outmap={0,};
mapcha(QTU12864,outmap);//OTU12864是已知的数组。outmap是待求的数组。 思路很简单就是数据倒蹬一下,错误也应该是很简单的问题,我刚上手C一时,一下也想不出问题根源。看看有知道的朋友能指点一二不。 你把整个程序贴上来吧,你都说了,这段程序可以编译通过。 uchar outmap={0,};
这是神马??
uchar outmap; void mapcha(uchar inmap,uchar outmap)//数组转换
---试下把这个改成指针传递 这么大的数组,怎么不用指针?
你这一调用就要消耗2K的RAM,RAM小一些的片子直接就报错啦,哪能这么浪费 lcofjp 发表于 2013-6-9 09:31 static/image/common/back.gif
这是神马??
uchar outmap;
这个是我定义了一整个1024长度的数组??有问题不? lcofjp 发表于 2013-6-9 09:28 static/image/common/back.gif
你把整个程序贴上来吧,你都说了,这段程序可以编译通过。
大虾,我吧程序都贴上来了。一个是子程序,一个是调用子程序。子程序编译没提示错误,以条用就出错了。我就是简单的编了一个程序,然后调用一下,还没看最终结果是不正确。调用时就出现错误提示啦。 祥子 发表于 2013-6-9 10:39 static/image/common/back.gif
void mapcha(uchar inmap,uchar outmap)//数组转换
---试下把这个改成指针传递 ...
好的,谢谢 dalarang 发表于 2013-6-9 22:55 static/image/common/back.gif
这么大的数组,怎么不用指针?
你这一调用就要消耗2K的RAM,RAM小一些的片子直接就报错啦,哪能这么浪费 ...
就是想做两个1024个数据的数组,然后让他们互相交换。(或者一个数组经过一个变换后送到另一个数组)。您的意思是这个数组忒长了,还是怎么滴??{:dizzy:} gfy200866 发表于 2013-6-13 08:17 static/image/common/back.gif
就是想做两个1024个数据的数组,然后让他们互相交换。(或者一个数组经过一个变换后送到另一个数组)。您 ...
1024的数组太大了,你想交换,就说明这个数组是可读写的,要定义到RAM里。
一般的RAM可能没有这么大,LZ如果将你所用芯片型号,源程序发一下,这里的大侠们会帮你搞定的。
用指针开销就比较小,也方便各种大小的数组交换 问题很明显,用了这么大的数组后RAM空间不足。在不调用此函数时,是可以编译通过的,只要一调用就会RAM不足报错。
数组尽量用指针来传递。
void mapcha(uchar *p1,uchar *p2)//数组转换
{
uint i;
for(i=0;i<1024;++i) //共1024个数据
{
*(p2+i)=*(p1+i);
}
}
调用的时候
void main()
{
uchar inmap,outmap;
mapcha(inmap,outmap);
} laujc 发表于 2013-6-13 08:34 static/image/common/back.gif
1024的数组太大了,你想交换,就说明这个数组是可读写的,要定义到RAM里。
一般的RAM可能没有这么大,LZ ...
谢谢,貌似有点明白啦,我用的是430149的芯片。 dalarang 发表于 2013-6-13 09:04 static/image/common/back.gif
问题很明显,用了这么大的数组后RAM空间不足。在不调用此函数时,是可以编译通过的,只要一调用就会RAM不足 ...
谢谢,大虾的指点。我试试,你的办法。 gfy200866 发表于 2013-6-13 13:28 static/image/common/back.gif
谢谢,貌似有点明白啦,我用的是430149的芯片。
149正好2Kbyte RAM
你一个函数就用这么多,调用时,肯定出错啦,呵呵 laujc 发表于 2013-6-13 16:23 static/image/common/back.gif
149正好2Kbyte RAM
你一个函数就用这么多,调用时,肯定出错啦,呵呵
谢谢大虾的指点,好像是找到问题根源了{:cry:} 。
但是我还不太明白函数是怎么在RAM分配空间的,怎么看才知道会超出呢。函数是怎么占用RAM的呢?能不能给讲讲,或者我该看那方面的知识呢。再次感谢!{:handshake:} gfy200866 发表于 2013-6-14 08:13 static/image/common/back.gif
谢谢大虾的指点,好像是找到问题根源了 。
但是我还不太明白函数是怎么在RAM分配空间的,怎么看才 ...
其实你编译好后,编译器一般会给出一个输出,说明程序占用的Flash和RAM大小。
但是程序在运行时,也会动态地占用RAM(堆栈就是在RAM中,每次压栈就进入一部分数据到RAM的堆栈中)
一般仿真时,会给出警告。
详细讲的话,里面有很多东西 laujc 发表于 2013-6-14 11:54 static/image/common/back.gif
其实你编译好后,编译器一般会给出一个输出,说明程序占用的Flash和RAM大小。
但是程序在运行时,也会动 ...
非常感谢,大虾,不厌其烦的回答。我在搜搜相关知识吧。看来C也要考虑一下空间分配的问题呵呵。再次感谢{:handshake:} gfy200866 发表于 2013-6-15 11:16 static/image/common/back.gif
非常感谢,大虾,不厌其烦的回答。我在搜搜相关知识吧。看来C也要考虑一下空间分配的问题呵呵。再次感谢{ ...
是要好好看一下,C语言对临时变量,全局变量,局部静态变量,堆,栈,都分配不同的空间的,别然这些都是在RAM区。
看一下对自己以后写程序有好处。。。。 laujc 发表于 2013-6-15 12:46 static/image/common/back.gif
是要好好看一下,C语言对临时变量,全局变量,局部静态变量,堆,栈,都分配不同的空间的,别然这些都是 ...
好的,大虾。非常感谢。 祥子 发表于 2013-6-9 10:39 static/image/common/back.gif
void mapcha(uchar inmap,uchar outmap)//数组转换
---试下把这个改成指针传递 ...
uchar inmap 和 uchar * inmap是完全等价的,传递形参就是传递的数组首地址,也就是指针 绿茶山人 发表于 2013-6-18 15:12 static/image/common/back.gif
uchar inmap 和 uchar * inmap是完全等价的,传递形参就是传递的数组首地址,也就是指针 ...
恩,这个知道。数组是传首地址。
定义了数组,在传递参数的时候,会先申请这么大的内存空间吗?还是只申请指针大小的空间? 祥子 发表于 2013-6-18 15:28 static/image/common/back.gif
恩,这个知道。数组是传首地址。
定义了数组,在传递参数的时候,会先申请这么大的内存空间吗?...
你定义了数组后,传递参数是不会再去申请内存空间的,直接传递数组首地址。 绿茶山人 发表于 2013-6-18 15:32 static/image/common/back.gif
你定义了数组后,传递参数是不会再去申请内存空间的,直接传递数组首地址。 ...
值得回味,需要继续深入学习。 gfy200866 发表于 2013-6-18 16:24 static/image/common/back.gif
值得回味,需要继续深入学习。
其实这就是C语言的一些问题和什么平台单片机没关系,C语言非常非常重要。 绿茶山人 发表于 2013-6-18 16:29 static/image/common/back.gif
其实这就是C语言的一些问题和什么平台单片机没关系,C语言非常非常重要。 ...
刚入门C语言,所以搞出这么多笑话,实在汗颜啊呵呵。我还有另一个问题,不知到你能给指点下。后面是连接http://www.amobbs.com/forum.php?mod=viewthread&tid=5538807&page=1#pid6760877 gfy200866 发表于 2013-6-18 16:32 static/image/common/back.gif
刚入门C语言,所以搞出这么多笑话,实在汗颜啊呵呵。我还有另一个问题,不知到你能给指点下。后面是连接h ...
已经给你回帖了,以前参加TI的活动得了两块430的板子,可惜没用它做东西。 绿茶山人 发表于 2013-6-18 16:56 static/image/common/back.gif
已经给你回帖了,以前参加TI的活动得了两块430的板子,可惜没用它做东西。 ...
非常感谢{:victory:}
页:
[1]