感觉可能是编译器引起的bug,debug好久搞不定。。

[复制链接]
2076|5
 楼主| zepanwucai 发表于 2012-6-29 00:58 | 显示全部楼层 |阅读模式
debug时候遇到比较奇怪的问题,简化描述如下:语句如下时,PWM可以正常输出,且单步调试时,只要执行完pwm_init(&PWM1)就产生了PWM。
pwm_init(&PWM1);
while(1);
然而改成如下语句时,PWM不能输出,且单步调试时,执行完pwm_init(&PWM1)也不产生PWM。
pwm_init(&PWM1);
某语句;
while(1);


感到很奇怪的是,只是在初始化PWM后加了条语句而已,不管是不是加的语句影响了PWM,至少pwm_init(&PWM1);之前的语句是一模一样的,为什么单步调试时执行完初始化后却是不同的结果?
记得以前看到过类似的帖子,好像是说编译器编译时把指令放在了不同位置导致的bug,感觉可能是这个原因。
求前辈分析一下可能的原因,及解决方法,谢谢!
捡漏王子 发表于 2012-6-29 11:34 | 显示全部楼层
可能是编译器编译的问题,
你加的某语句是任何语句都会出这个问题吗?
 楼主| zepanwucai 发表于 2012-6-29 12:47 | 显示全部楼层
2# 捡漏王子 不确定,实际上“某语句”是一大堆语句,我把这大堆语句分段注释后都有这个问题。
但这个为什么和后面的语句有关呢?前面的语句一模一样,也没有调用后面的语句啊。。
渤海三叠浪 发表于 2012-6-29 13:21 | 显示全部楼层
不是编译器的问题,楼主三思
 楼主| zepanwucai 发表于 2012-6-29 18:54 | 显示全部楼层
4# 渤海三叠浪 那请前辈指出上面的逻辑错在哪?
airwill 发表于 2012-6-30 16:57 | 显示全部楼层
自己跟踪, 看看寄存器的变化情况再说.
要有 BUG, 也不要怪编译器, 要找是不是 MCU 的 BUG.
再仔细对照着分析.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

180

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部