[技术问答] Keil优化等级高导致的程序跑飞

[复制链接]
1640|5
 楼主| yeates333 发表于 2024-8-19 13:40 | 显示全部楼层 |阅读模式

在一个工程里面发现stm32的输出不对劲,调试看了一下,发现在一个if判断那里,即使条件不成立但是还依然运行了里面的程序,导致的状态不对劲,一开始以为是语法写的不规范,后面改了语法,再后面就分开成两个if来判断,但调试的时候依然如此

a = 1;b = 1;if(a == 1 && b == 0)    xxxxxxx;    //条件不成立依然运行了这一句

最后看了一下Keil里设置的优化等级,发现我之前设置成O3了,导致了程序跑飞了

再后来改成了O0.不优化代码了就解决了那个问题了


laocuo1142 发表于 2024-8-19 16:06 | 显示全部楼层
降低优化等级看看
flycamelaaa 发表于 2024-8-19 16:06 | 显示全部楼层
使用Keil的调试
powerantone 发表于 2024-8-19 16:06 | 显示全部楼层
检查代码逻辑是否正确
stormwind123 发表于 2024-8-19 19:00 | 显示全部楼层
查看编译器文档
jasontu 发表于 2024-8-20 10:13 | 显示全部楼层
把变数设成 volatile
您需要登录后才可以回帖 登录 | 注册

本版积分规则

20

主题

1564

帖子

1

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