7700|4

286

帖子

1

TA的资源

一粒金砂(中级)

楼主
 

合泰单片机IDE3000编译器的问题解说 [复制链接]

本帖最后由 liaoyuanhong 于 2015-12-21 03:09 编辑

在做一个项目的时候,出于合泰单片机价格低的原因,所以选择了一颗HT66F018的IC,有3路定时器,可PWM,7路AD转换,低功耗等。可是在编程的时候发现了一个问题,研究了好久,以为是自己的代码有问题,后来才发现自己的化代码是没有问题的。原来是IDE3000的V3编译器优化的问题,唉,IDE3000优化不好害人啊。好了,让我说下这个问题,以免有人会遇到一样的问题。


如上图,大家看到了,Beep_mark的值已经为0了,但程序就是进不到if(Beep_mark == 0x00)的代码里面去。number 的值也大于1000了,可也是进不到if(number > 1000)的代码里面,我的本意是想做一个2分钟的定时,没想到程序就卡到这里了。让我研究了好久。心烦啊。一直以为是程序写错了,后来才发现原来是IDE3000的编译器优化代码的问题,合泰的优化看来还是没有做好,之后我把优化代码的选项去了。之后程序就能正常运行了。发个贴,给大家看看。
     
此帖出自单片机论坛

最新回复

我估计是你的Beep_mark定义的问题,不加修饰,正常的编译器都会给你优化掉的。 while(1) ... 这是一个死循环,Beep_mark 如果是一个内存变量的话,编译器认为在循环中它不可能被修改,因此条件判断是多余的。 所以需要对 Beep_mark 定义加上 volatile 声明,让编译器不要对这块内存的访问进行优化。  详情 回复 发表于 2015-12-21 10:31
点赞 关注
个人签名

失恋中。。。

 

回复
举报

374

帖子

3

TA的资源

一粒金砂(高级)

沙发
 
如果优化过度,什么型号的芯片都会出现该问题的,不止合泰呀。我在其他芯片也遇到过呀。不能怪合泰。
此帖出自单片机论坛

点评

嗯。也是写法上有问题吧。每个厂家都不一样。  详情 回复 发表于 2015-12-22 00:29
 
 

回复

1377

帖子

2

TA的资源

五彩晶圆(初级)

板凳
 
我估计是你的Beep_mark定义的问题,不加修饰,正常的编译器都会给你优化掉的。
while(1) ... 这是一个死循环,Beep_mark 如果是一个内存变量的话,编译器认为在循环中它不可能被修改,因此条件判断是多余的。
所以需要对 Beep_mark 定义加上 volatile 声明,让编译器不要对这块内存的访问进行优化。
此帖出自单片机论坛

点评

也是有道理,写法的问题吧。用STM的单片机就不会不过还是要谢谢你,以后要多注意下这些细节  详情 回复 发表于 2015-12-22 00:29
 
 
 

回复

286

帖子

1

TA的资源

一粒金砂(中级)

4
 
cruelfox 发表于 2015-12-21 10:31
我估计是你的Beep_mark定义的问题,不加修饰,正常的编译器都会给你优化掉的。
while(1) ... 这是一个死循 ...

也是有道理,写法的问题吧。用STM的单片机就不会不过还是要谢谢你,以后要多注意下这些细节
此帖出自单片机论坛
 
个人签名

失恋中。。。

 
 

回复

286

帖子

1

TA的资源

一粒金砂(中级)

5
 
wenyangzeng 发表于 2015-12-21 08:01
如果优化过度,什么型号的芯片都会出现该问题的,不止合泰呀。我在其他芯片也遇到过呀。不能怪合泰。

嗯。也是写法上有问题吧。每个厂家都不一样。
此帖出自单片机论坛
 
个人签名

失恋中。。。

 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表