一、No target connected
转自:网易周勇
在用STM32F051Disconvery学习时,配置GPIOA时,不小心将连接SWD总线上的两个端口都配置为了输出,这下惨了,就再也不能用SWD仿真或者下载程序了,解决方法如下:
1、先确认目标板上电。
2、先长按住目标板上的复位键,再点击 Settings,再松开目标板上的复位键。
3、此时KEIL打开Settings的设置对话框,请确认有红框圈中的内容后,再进行下一步。
4、将STM32F051Disconvery板断电,重新上电。
5、先长按STM32F051Disconvery的复位键,再点击仿真或者下载按钮,再松开复位键。
注:这里点仿真到松开复位键不是每一次都能成功,每次点了仿真键到松开复位键的时间每次都不同,在某一个点时,就可以进入仿真或者下载程序了。板子就恢复正常了。但需要注意的是,在程序里一定要避开对GPIO13\GPIO14的配置。
总结:
在程序中配置了GPIO13\GPIO14。
我用万用表测量目标板上的STM32F051R8T6的复位脚,在点击仿真时,有瞬间的电平变化,我分析应该是对目标板有复位的动作,但为什么GPIOA的配置状态没有复位呢?有一点没有搞懂。手册写有GPIOA_MODER复位后的值为:0x2800 0000,即将GPIO13\14配置为复用模式,但为什么在程序配置了GPIO13\14为输出,并且在目标芯片有复位的情况下也会引起SWD无法仿真、下载的问题。
二、Internal command error
笔者使用Keil开发环境对STM32L Discovery进行开发,更新一次firmware后就不能连接目标板了,报错Internal command error Flash download failed target dll has been can。最后将Keil更新至4.60就可了。
使用过程中笔者发现,当目标板的芯片处于休眠的时候,在尝试连接目标板时候也会出现报错Internal command error Flash download failed target dll has been can的现象,解决办法是使目标板退出休眠,即按住reset键再下载程序,看到USB通讯灯闪后一小会儿(自己把握)后放开reset就能看到程序下载进去了,不行就多试几次,成功一次后面就正常了。
网友评论