经常遇到程序在现场卡死了,但是这个时候没有连接调试器,不好找死机原因。
下面说下在程序卡死的时候,在不破坏死机现场的情况下,连接上调试器进行程序调试的方法。
把调试器连接电脑,打开keil做下面的配置,调试器先不要连接单片机,配置完后再连。
首先第一步,把Load Application at Startup勾选框去掉,这个勾选框的意思是启动调试的时候要重新加载程序,这个过程会导致单片机复位从而破坏现场。
第二步,把Reset after Connect勾选框取消,这个勾选框的意思是当调试器连接上单片机会复位单片机。
第三步,选择Do not Erase,并且Program、Verify、Reset and Run都不要勾。
配置完后,就可以用调试器连接单片机了。
连接后点调试按钮进入调试。
进来后会发现,单片机处于程序暂时状态没有复位,点击Run程序会继续运行,单步调试只能看到汇编窗口在走,C语言窗口没有反应,并且C语言窗口也不能打断点,说明只有汇编跟单片机关联上了,但是C语言还没有关联上。
这个时候在Command窗口输入
LOAD %L INCREMENTAL
执行后,C语言窗口就关联上了,也可以打断点了,这个时候就可以寻找死机的原因了。