打印
[技术问答]

Keil优化等级高导致的程序跑飞

[复制链接]
950|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 | 只看该作者
检查代码逻辑是否正确

使用特权

评论回复
5
stormwind123| | 2024-8-19 19:00 | 只看该作者
查看编译器文档

使用特权

评论回复
6
jasontu| | 2024-8-20 10:13 | 只看该作者
把变数设成 volatile

使用特权

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

本版积分规则

11

主题

1287

帖子

1

粉丝