好的,我贴一下关键代码:
u16 y[2048];
for(i=0;i<2048;i++){
y=4096/3.3*(sin(2*3.14*26000*i/100000)+1);
}
for(i=0;i<1024;i++){
buf01=y;
}
u16 buf01[1024];
float fft_inputbuf[2048];//在一个函数cre()里面定义的局部变量
接下来是cre()里面调用下面这个函数:
CCopyFill(u16 *buf01,float *fft_inputbuf){int i=0;
float k=3.3/4096;
for(i=0;i<BUFFERSIZE;i++){ //éú3éDÅoÅDòáD
fft_inputbuf[2*i]=(float)buf01*k; //éú3éêäèëDÅoÅêμ2¿
fft_inputbuf[2*i+1]=0; //Dé2¿è«2¿Îa0
printf("%d
",i);
}
}
问题来了,在循环里到该i等于220的时候,全局变量数组y的值变了,可是在cre()函数和CCopyFill()函数里本页面对y组任何处理或者改变啊,
而且CCopyFill()里面也跟全局变量y没有任何关系,cre()函数里没有对y的指针进行任何操作,只有将y的值赋给其他:
for(i=0;i<1024;i++){
buf01=y;
}
下面附上内存变量表:
代码较多,我大概贴了一下,大佬看一下,哪里出了问题?
@正点原子
上图中有个表述错误,栈顶指针写错了,栈顶指针应该是0x2000370+0x200.
0x2000370是栈底指针,32是小端模式
一周热门 更多>