自己制作的板载STLINK,烧录了V2.1的固件,带Debug功能和虚拟串口,刚开始是好的,结果使用STM32CubeMX新建了工程生成代码后,烧进去程序后,后续无论再怎么烧录都提示ST-LINK communicaiton error,尝试的次数多了,直接提示未知的USB设备或无法识别USB设备。在设备管理器中也找不到虚拟串口了。
因为我用的STLINK 芯片是C8T6的,官方推荐的是CBT6,一度怀疑是容量不够导致了某些异常,但这个解释不了为什么之前是好的,突然就用不了这个情况。后面找到原因后,才明白了不是此原因。
以下是快速解决方法:
方法一:
参考我这篇博客,STLINK V2.1出现USB communication error无法下载程序原因及解决方法-优快云博客
如果还不行,提示USB无法识别,此时就需要对STLINK的固件重新刷写。请看方法二。
方法二:
1.使用外部的STLINK或者Jlink(注意不是开发板本身的stlink),连接开发板的stlink烧录口,使用STM32 Programmer或者STM32 ST-LINK Utility,进行固件的烧录。(烧录方法可网上搜寻STLINK V2.1固件烧录方法),这里以STM32 Programmer为例:
烧录如果失败,会有错误提示,烧录成功如下图:
2.如果烧录成功,则stlink固件烧录完成,拔掉外置的stlink或者jlink,接上USB连接开发板stlink,打开keil,更新stlink驱动,就可以烧录了。如果还不能烧录或者不会更新stlink驱动,卸载一下虚拟串口的驱动,再更新。
3.stlink固件烧录失败的情况下,需要先想办法把stlink的固件烧录进去。
步骤一:因为stlink芯片也是stm32,随便找一个芯片对应的工程,使用外置stlink或者jlink通过keil将代码烧进去,此时再切换到烧录stlink固件界面,此时再烧录固件发现固件就可以烧录成功了。
后续步骤如2相同。
总结:出现烧录不进去,根本原因是MCU烧录口被锁,需要通过配置debug口和复位方式解锁烧录口。
出现stlink固件丢失或者损坏问题,需要重新烧录固件,如果烧录固件失败,需要通过重新烧录其他程序再烧录固件方式更新固件。
stlink更新固件后到keil中给MCU烧录程序,需要按照keil提示升级驱动,否则无法使用。