今天在调试STM32F407的程序时,下载程序时突然keil识别不到jlink了,还以为是驱动的问题,重新装了好几次驱动,结果还是不行,于是就网上找各种办法,最后决定重新刷固件。网上的方法很多,好多都失败了。现在把我刷成功的过程分享给大家。
刷固件的方法主要参考这篇文章: https://blog.csdn.net/u013381608/article/details/116715455
我是按照第二种方法操作的。
具体操作方法大家可以查看原文,我这里就不再说了。按照这种方法刷新固件后,jlink可以被keil识别到,也可以烧写程序。但是由于我的keil是5.38的版本,jlink也安装的是最新版7.8版本。此时又出现了新的问题,keil总是报错。主要报错的有这两种类型 j-link is defective,j-link clone。
按照网上说的方法,升级jlink,降级jlink,替换keil里面的文件等都不行。版本高了总是报错,版本低了不报错,但是芯片又不支持了。最后折腾了五六个小时,终于解决了。
解决办法为,还是按照上面的方法升级固件,但是固件的文件不能使用官方默认的原始版本。要使用另一个版本。
下载链接为: https://download.csdn.net/download/xiongliya/85193922
在刷新固件的时候,固件选择 jlink-v8-2015fixedNoSN.bin
这个版本。
这个版本是作者修改后的2015版。网上通常的方法是先刷新为2009版,然后再升级为2014版。一旦升级就会被keil检测出来,从而报 j-link is defective,j-link clone这两种错误。所以在这里我直接刷的是 jlink-v8-2015fixedNoSN.bin
这个版本比2014版本高,不会被检测出来,所以就不会升级。固件更新完成之后,安装JLink_Windows_V614b.exe
,然后用这个版去修改序列号。序列号修改完成之后,使用keil打开,又出现了一个新的问题,这个版本的jlink 识别不到STM32F407芯片,此时不要着急。接着安装JLink_Windows_V764b_x86_64.exe
这个版本的jlink驱动,这个驱动在安装的时候,会自动将keil安装路径下的文件更新为7.64版本。安装完成之后,在打开keil,此时就能识别到407芯片了,同时keil也不会提示 j-link is defective,j-link clone这两种错误了。
这个方法只是在我电脑上验证成功的,不能保证所有人都成功,在这里用我经验给大家做个参考。
我的电脑版本为 win7 64位,keil MDK版本为5.38,测试的单片机为为STM32F407系列。