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

2019-10-15 05:27发布

在使用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就会特别注意,避免被优化掉,那么我想这个问题应该也是程序优化的问题吧,要怎么解决呢?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
zhu83453958
1楼-- · 2019-10-15 06:01
最后发现是仿真器的问题,串口下载就可以了,哎
anazel
2楼-- · 2019-10-15 08:55
可以在变量前面加Volatile防止被优化掉。
zhu83453958
3楼-- · 2019-10-15 14:36
我发现了是仿真器的原因导致会卡在那里的
dengxingling8
4楼-- · 2019-10-15 19:07
你这个截图的问题应该不是代码导致的,而是硬件问题,PC指向的地址不对,至于优化这个问题,实际项目中,我一直是关闭优化选项的。

一周热门 更多>