STM32F103 SWD被锁的挽救方法

2018-11-10  本文已影响307人  小鱼儿他老汉

芯片被锁

昨晚做实验,从STM32CubeMX导出的CAN工程编译、下载、运行到main()中HAL初始化后,Keil忽然抛出错误,无法访问SWD。一连两片STM32F103C8都被锁死。我还以为是我的STLinkV2有问题,一连换了两个Dongle,都是如此。

这让我联想起之前似乎也有过此现象,当时是STM32CubeMX导出的USB CDC工程编译下载后SWD无法访问。

当时不知道是芯片损坏、被锁还是什么情况。忧心忡忡地睡觉去了。

灵光一现

早起,蓦然想起在STM32CubeMX生成时或许没有使能SWD总线。那芯片下载运行后,SWD会作为GPIO来使用。这种情况下,只有ISP bootloader是可以使用了。

等清楚了Boot0/Boot1的引脚位置和UART1的引脚位置;插上USB/UART转换器,安装软件,连接芯片,果然ISP bootloader是可以连接的。然后擦除芯片,连接SWD。

SWD总线又可以访问了。很棒!

SRAM启动

除了正常Flash启动和ISP启动,Boot0/Boot1=1的话,可以从SRAM启动,这种方式我倒是没有尝试过。传说中可以在不损害Flash代码的前提下,下载部分调试代码到RAM中去。问题在于这部分代码是通过SWD还是Bootloader下载的?

上一篇 下一篇

猜你喜欢

热点阅读