OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3222|回复: 4

发现了一个很奇怪的问题,应该和程序优化有关

[复制链接]

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
发表于 2017-1-8 11:49:36 | 显示全部楼层 |阅读模式
10金钱
在使用mdk4.72编译程序的时候,发现程序在编译后出现了很多意想不到的问题,最近想做一个数字温度计,使用的是DS18B20,然后配合LCD HX8357D用于显示,之前已经能够正常显示数据,但就是因为一个数字显示的方式不好进行了修改(也就把变量变成了常量进行测试),却意外发现程序在没有进入main()的时候就卡死了,然后改回原来的样子也进不去了,把整个工程重新删了重建还是不行总是开在了下图所示的地方 2017-01-08 11-08-11.jpg
后来我把程序能注释掉的都注释掉了,程序变成了这个样子
2017-01-08 11-39-16.jpg
再次编译后进行调试发现还是卡在了这个位置
2017-01-08 11-13-35.jpg
同样的一句话,就是过不去,这是为什么呢?
然后在写程序的时候发现,这个MDK的优化功能太讨厌了,程序莫名其妙的把一些变量优化掉了,在写AT24C02和DS18B20时通过把u16、u8改成vu16、vu8后才可以运行成想要的结果,在网上查过说是这样在优化的时候MDK就会特别注意,避免被优化掉,那么我想这个问题应该也是程序优化的问题吧,要怎么解决呢?

2017-01-08 11-09-40.jpg

最佳答案

查看完整内容[请看2#楼]

最后发现是仿真器的问题,串口下载就可以了,哎
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
 楼主| 发表于 2017-1-8 11:49:37 | 显示全部楼层
最后发现是仿真器的问题,串口下载就可以了,哎
回复

使用道具 举报

221

主题

501

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1238
金钱
1238
注册时间
2013-1-9
在线时间
121 小时
发表于 2017-1-8 13:43:59 | 显示全部楼层
可以在变量前面加Volatile防止被优化掉。
回复

使用道具 举报

18

主题

75

帖子

0

精华

初级会员

Rank: 2

积分
136
金钱
136
注册时间
2016-12-24
在线时间
29 小时
 楼主| 发表于 2017-1-8 19:27:12 来自手机 | 显示全部楼层
我发现了是仿真器的原因导致会卡在那里的
回复

使用道具 举报

2

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
383
金钱
383
注册时间
2015-4-15
在线时间
73 小时
发表于 2017-1-8 20:30:02 | 显示全部楼层
你这个截图的问题应该不是代码导致的,而是硬件问题,PC指向的地址不对,至于优化这个问题,实际项目中,我一直是关闭优化选项的。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-7 22:54

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表