klyiwei 发表于 2019-12-2 12:50:07

关于keil5编程的问题

我用keil5编译程序的时候遇到了个问题,代码如下:void crosscorr1(const double x,const double y, double c){
        printf("11");
}
void main_corr2()
{
        double dv4;
        double dv5;
        double c3;
        crosscorr1(dv4,dv5,c3);
}

在主函数中调用main_corr2()时串口没有输出,但是将        double dv4;double dv5;double c3;的声明放在了全局位置时,串口能如预计输出。请问这是为什么,用的单片机型号为stm32f103ze

mikecai 发表于 2019-12-2 13:35:05

试下,是否 只放double dv4;double dv5;的声明放在了全局位置时,就能串口能如预计输出?
若是,那么 跟 const 有关

斯文人 发表于 2019-12-2 13:39:42

么看出来

斯文人 发表于 2019-12-2 13:50:48

可能是代码优化了,你把优化级别放低点试试

klyiwei 发表于 2019-12-4 12:19:34

mikecai 发表于 2019-12-2 13:35
试下,是否 只放double dv4;double dv5;的声明放在了全局位置时,就能串口能如预计输出?
若是, ...

还是不行,但是c3的声明也放到全局变量里,正常输出。

klyiwei 发表于 2019-12-4 12:40:00

斯文人 发表于 2019-12-2 13:50
可能是代码优化了,你把优化级别放低点试试

0级呢

klyiwei 发表于 2019-12-4 12:45:54

我把      double dv4;
      double dv5;
      double c3;的声明放在了全局位置,就能正常输出了,这是怎么回事?

butterflyspring 发表于 2019-12-10 15:11:31

看一下是不是变量在RAM中的分配问题

toofree 发表于 2019-12-10 15:42:26

函数参数传大数组真的合适吗?即便可以,至少这个写法不大好。
函数参数在传大数组时,可以换成指针传。
页: [1]
查看完整版本: 关于keil5编程的问题