问题
程序能正常下载,但是keil仿真调试报错,进入仿真程序就在全速运行了,此时什么都干不了。
查看command窗口日志信息会发现有报错:
jlink error:cpu is not halted。
然后点击reset按钮会退出全速仿真,所有调试按键都能按了,此时点击单步调试会报错:Could not stop Cortex-M device! Please check the JTAG cable。
可能的原因
网上查了大量关于造成此问题的原因,基本上能试的都尝试了,下面我简单总结了下可能的原因。
1.keil魔术棒设置:options for target
1.芯片device类型没有选对,
2.Debug选项里调试器频率不合适,
3.connect&reset options设置不对,
4.flash download 里芯片存储大小选择不对
5.c宏定义不对
6.优化等级不对
2.硬件:
1.调试器和芯片连接方式不对,很可能是reset没接对。
2.调试器硬件有问题,最简单就是换个调试器试试看。
3.板子虚焊,某个元器件未焊或者某个引脚接地等。
3.程序
1.调试端口被复用
2.看门狗使能造成,关闭看门狗。
3.内存溢出,hardfault看看是哪段代码出问题了。
总结
造成这个错误的原因就是jlink失去了对cpu的控制权,我是先排查keil设置的问题的,因为能下载程序,能进入仿真,所以keil设置基本是没问题的;然后我检查jlink和芯片引脚的连接,也没有问题。所以最后就怀疑是程序的问题,更换一个例程,发现可以仿真调试了,最后排查出来是看门狗的问题,禁用看门狗就能仿真了。