keil调试的奇怪问题

在进行IIC总线协议的时候,遇到了子函数直接跳过不执行的问题,于是加入了delay函数,他就执行了....我就不明白了..这是为什么上图为没有加入delay函数看代码13... 在进行IIC总线协议的时候,遇到了子函数直接跳过不执行的问题,于是加入了delay函数,他就执行了....我就不明白了..这是为什么

上图为没有加入delay函数 看代码135 和136行,函数就没有运行,我点击单步进入子函数的调试也不进去.

下图为加入了delay函数 代码135 和137 就是上图的函数,他就执行了....太坑爹了吧??
展开
 我来答
一剑出血
高粉答主

2011-07-22 · 醉心答题,欢迎关注
知道大有可为答主
回答量:5.7万
采纳率:78%
帮助的人:1.7亿
展开全部
如果开了编译优化,编译的代码未必与你的源代码完全对应。因此调试时经常出现某些行不被执行的怪异现象。真正要跟踪程序运行应当看汇编的执行情况。
更多追问追答
追问
为什么加入了2个delay就好了?
追答
插入函数调用后,优化顺序可能有变化,此时可能编译结果又会与你的源码接近了。
你自己看看生成的汇编不就一目了然了。
再强调一遍:真正跟踪程序运行应当是看汇编,跟踪c的运行没多大作用。将来你学习ARM编程调试的时候还会发现更加奇特的事情呢。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式