在用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无法仿真、下载的问题。