keil调试的奇怪问题
在进行IIC总线协议的时候,遇到了子函数直接跳过不执行的问题,于是加入了delay函数,他就执行了....我就不明白了..这是为什么上图为没有加入delay函数看代码13...
在进行IIC总线协议的时候,遇到了子函数直接跳过不执行的问题,于是加入了delay函数,他就执行了....我就不明白了..这是为什么
上图为没有加入delay函数 看代码135 和136行,函数就没有运行,我点击单步进入子函数的调试也不进去.
下图为加入了delay函数 代码135 和137 就是上图的函数,他就执行了....太坑爹了吧?? 展开
上图为没有加入delay函数 看代码135 和136行,函数就没有运行,我点击单步进入子函数的调试也不进去.
下图为加入了delay函数 代码135 和137 就是上图的函数,他就执行了....太坑爹了吧?? 展开
1个回答
展开全部
如果开了编译优化,编译的代码未必与你的源代码完全对应。因此调试时经常出现某些行不被执行的怪异现象。真正要跟踪程序运行应当看汇编的执行情况。
更多追问追答
追问
为什么加入了2个delay就好了?
追答
插入函数调用后,优化顺序可能有变化,此时可能编译结果又会与你的源码接近了。
你自己看看生成的汇编不就一目了然了。
再强调一遍:真正跟踪程序运行应当是看汇编,跟踪c的运行没多大作用。将来你学习ARM编程调试的时候还会发现更加奇特的事情呢。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询