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

关于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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版