完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我经常遇到这种情况 不知道为什么 但是奇怪的是最后并不影响我的判断结果
|
|
|
|
|
|
应该是编译器优化的原因。看看汇编代码就知道了。估计是那条代码在其他地方还有。
|
|
|
|
|
|
|
|
|
|
|
|
这个遇到过,应该是调试器的问题,有时候调试器显示的变量值更新不及时,你这个ret初始化为0的缘故,可以试试吧这个ret定义的时候初始化为一个其他值,看看是否这里显示的是初始化的值。
|
|
|
|
|
|
编译器优化等级调到0
|
|
|
|
|
|
没遇过,坐等答案..
|
|
|
|
|
|
volatile 吧
|
|
|
|
|
|
file:///C:UsersCJAppDataRoamingTencentUsers2839084093TIMWinTempRichOleOAW@659P72I07P04D}VJ73X.png
这里选为0.就不会进去了 |
|
|
|
|
|
应该是编译器优化的原因。看看汇编代码就知道了。估计是那条代码在其他地方还有。
|
|
|
|
|
|
首先看他初始化没有,再看看这个值怎么来的?受到硬件影响大吗,要不要加上volatile?
|
|
|
|
|
|
多写几条语句,再看ret的值。
比如写4条语句,在最后一条处看ret的值是多少。 你这个是一进来if就看ret值的,上面的printf语句条件编译没有编译进来。 降低优化等级应该能改善。 反正keil仿真,只能去适应它,有时候还是实打实的IO点灯或串口打印来监控状态靠谱些。 我之前在IO模拟SPI时,遇到过,两个IO控制之间没有加延时,出来的波形呀,乱七八糟,整个把SPI的时序打乱了。稍加点延时,波形一切正常。 |
|
|
|
|
|
|
|
|
|
|
|
应该是编译器优化的问题导致的。
用 Disassembly Window 查看一下汇编代码,看看优化成什么了。 再用 0 优化级别,重新编译一次,再看看汇编,就知道什么问题了。 |
|
|
|
|
|
应该是编译器优化的原因,在调试的时候界面中显示的是C语言,实际是按照汇编语言来进行调试的,而在优化过程中,编译器会对你写的C语言进行删减,增加以及顺序上的调整,所以汇编与C并不是对应的,最终导致了这种情况
|
|
|
|
|
|
一般我遇到这个问题是由于编译器的问题,一般会加上volatile,然后打印日志调制,debug有时候确实会出现这个问题。
|
|
|
|
|
|
看看!!!
|
|
|
|
|
|
谢谢大家,是编译器优化问题。改一下优化等级就可以了
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 09:20 , Processed in 1.005152 second(s), Total 108, Slave 90 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2997