Keil使用Debug调试模式时出现的几种错误总结

Keil版本:keil4V4.60      

调试器:j_link

1.在使用j-link下载程序时,target options中的debug选项中选择了j-link选项后,出现了J-LINK the connected emulator is a j-link clone问题,然后keil软件自行关闭。

解决方式:用SEGGER安装目录下的JLinkARM.dll替换掉MDK安装目录下的./ARM/Segger/JLinkARM.dll就可以了

2.出现了TCK (pin 9) low, but should be high. Please check target。。。的错误
解决方式:首先先检查原理图中是不是接错线了(就我而言,错的实在是太离谱,电源和地接反,而且BOOT0引脚完全没有接地),当我将这些个问题解决掉了之后,设置target options->Debug->右上角Use->Setting->Debug->Port选择SW选项。

3.在解决第二个问题之后,出现了未发现CPU的错误。
解决方式:这个问题的解决方式是在target options中的Utilities选项中点击Settings在Programming Algorithm选择框内添加芯片的类型(就我而言是STM32F10x 128K的)就行。

4.在debug模式下进行调试时,发现程序没有从main函数进行运行,而是一直在汇编代码BKPT那里停下,当点复位时,到了systemInit那里
解决方式:我在网上查找资料,一般的解决方式有以下的几种:
1).工程所在目录存在汉字目录或目录路径过深(由于所用软件绝大部分为外国软件且可能都是破解版,导致对汉字支持较差);
实测工程汉字目录较长(大概30个汉字)且目录路径较深(7级),导致进入调试模式单步执行了 2 步,就出现了 IDE 已停止工作,KEIL 崩溃
2).KEIL 软件本身一些必要的配置,即Target Options Configure的Dubug选项下面选择Run to main()
3).程序中存在的问题,就好比上述使用了未实现 printf() 函数或未实现的函数、条件宏等;
4).硬件问题,当然做个最简单的流水灯便能排除。
我的问题就出在第三点,函数中使用了printf函数,但是没有在Target Options Configure的Target那栏里把Use MicroLIB这个选项选择上。之后将其选择上编译下载程序,就能在debug下进入到main函数。

5).在Debug模式下进行调试时,出现了BP could not be set!
......
Probably too many Breakpoints defined?的错误,原因是因为定义了太多的断点。
解决方法: <1>、调试时减少断点的个数。
      <2>、设置如下:Target Options->debug->Settings(右上角,Use)->不选择Cache Code和Cache Memory选项然后保存退出。如果按照这种设置,在各个断点之间进行运行时,需先运行,所以稍微有点慢。
具体参考:http://www.openedv.com/thread-23050-1-1.html

原文地址:https://www.cnblogs.com/lucky-3/p/11176515.html