芯片被锁
昨晚做实验,从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下载的?
网友评论