你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于keil5编程的问题

[复制链接]
klyiwei 提问时间:2019-12-2 12:50 /
我用keil5编译程序的时候遇到了个问题,代码如下:void crosscorr1(const double x[200],const double y[200], double c[399]){
        printf("11");
}
void main_corr2()
{
        double dv4[200];
        double dv5[200];
        double c3[399];
        crosscorr1(dv4,dv5,c3);
}

在主函数中调用main_corr2()时串口没有输出,但是将        double dv4[200];double dv5[200];double c3[399];的声明放在了全局位置时,串口能如预计输出。请问这是为什么,用的单片机型号为stm32f103ze
收藏 评论8 发布时间:2019-12-2 12:50

举报

8个回答
mikecai 回答时间:2019-12-2 13:35:05
试下,是否 只放double dv4[200];double dv5[200];的声明放在了全局位置时,就能串口能如预计输出?
若是,那么 跟 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[200];double dv5[200];的声明放在了全局位置时,就能串口能如预计输出?
若是, ...

还是不行,但是c3的声明也放到全局变量里,正常输出。
klyiwei 回答时间:2019-12-4 12:40:00
斯文人 发表于 2019-12-2 13:50
可能是代码优化了,你把优化级别放低点试试

0级呢
klyiwei 回答时间:2019-12-4 12:45:54
我把        double dv4[200];
        double dv5[200];
        double c3[399];的声明放在了全局位置,就能正常输出了,这是怎么回事?
butterflyspring 回答时间:2019-12-10 15:11:31
看一下是不是变量在RAM中的分配问题
toofree 回答时间:2019-12-10 15:42:26
函数参数传大数组真的合适吗?即便可以,至少这个写法不大好。
函数参数在传大数组时,可以换成指针传。

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版