问题描述:
使用swd方式连接最小系统板时,keil识别不到芯片,无法下载程序
解决措施:
将最小系统板上的跳冒改为boot0 为1 boot1 为1(或者boot0 为1 boot1 为0),此时keil识别到了芯片,可以正常烧录程序。随便烧录一个程序后,将boot0与boot1 改为0。再次重新烧录时发现芯片已经可以正常使用。
原因:
之前烧录的程序对sw的引脚进行了复用,单片机启动时boot又设定的是从flash启动,导致了sw自锁,无法使用sw引脚
修改boot来改变的芯片的启动模式(如下图)
然后重新烧写flash的程序(sw引脚未复用的程序)后,修改boot使芯片从flash启动,此时已无死锁。
总的来说,flash内的程序影响了sw相关引脚的使用,而boot设定的又是flash启动的模式,
上电->启动flash程序->程序影响sw相关引脚->sw烧录失效
修改boot改变芯片为其他启动模式,将flash内影响sw相关引脚的程序擦除/覆盖,再使用flash启动时,sw引脚就可正常使用了
参考:
STM32三种BOOT启动模式详解(全网最全)-CSDN博客
STM32自锁如何解锁?(解锁方法)No Cortex-M SW Device Found/HardFault_Handler-CSDN博客