打印

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

[复制链接]
1523|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 | 只看该作者
不是编译器的问题,楼主三思

使用特权

评论回复
5
zepanwucai|  楼主 | 2012-6-29 18:54 | 只看该作者
4# 渤海三叠浪 那请前辈指出上面的逻辑错在哪?

使用特权

评论回复
6
airwill| | 2012-6-30 16:57 | 只看该作者
自己跟踪, 看看寄存器的变化情况再说.
要有 BUG, 也不要怪编译器, 要找是不是 MCU 的 BUG.
再仔细对照着分析.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

180

帖子

6

粉丝