对stm32芯片烧录时,会莫名其妙识别不了板子,或者识别到板子不能下载程序。
有可能是程序写死了,没办法正常启动。比如对flash的不正确操作。对时钟的不正确初始化,都可能导致这种情况。
也可能是cubeMX配置的时候没有配置debug方式,然后用swd就不能debug了,但是标准的20Pin的JTAG脚可以下载程序。
一般有两种办法解决(首先你确定板子没问题)。比如说刚刚还用的好好的,下了个程序就废了。
第一个办法,通过复位键解决。
-
无法识别到板子的ID,下载器是可以识别的,连接没有问题,就是不能下载。
-
我使用st link V2+ cubeMX+Keil5时 总会忘记配置系统调试方式,也就是swd管脚。标准库也是很容易出现这样的问题的,DAP我也遇到过这样的情况。如果是STlink一般没有这个问题,也不需要配置SWD引脚。
-
程序正在执行,上电就运行,CPU一直在运行,停不下来,如果配置了SWD管脚在下载程序时是可以软复位的,
-
手动长按复位键,然后点击“setting‘重新连接,看到板子成功识别,(会显示芯片UID)后点击确认,然后点击下载,马上松手复位键。或者你确定硬件没有问题,直接按住复位键,然后点击下载图标,过一点点时间松手复位键。松手太慢或太快都会弹出下载失败,需要多试几次。
-
-
使用st link v2经常有无法识别的情况,换个下载器也不是不行,我就是用坏了几个st link v2后转向st link或者 cmsis DAP的,Jink也可以,只要支持SWD都可以跳线使用,连接方法和详细教程参考:https://blog.csdn.net/qq_45754730/article/details/108711636
第二个办法,通过boot脚重新下载
- 芯片肯定有一个boot脚。将其拉高或拉低是两种boot方式。
- 比如C8T6核心板,有两个紧挨着的跳线帽,无脑切换跳线帽到另一侧,重新上电一般能成功下载,切换会boot才会运行程序。
- 如果没有引出boot脚,boot脚一般是结果上拉电阻拉高了的。在板子上找到这个上拉电阻。直接用公母头的杜邦线,母头插地公头怼到电阻上,重新下载程序就可以了。这种方式一定要经过电阻接地,不然电源短路了。
- 直接怼地的话,可能因为电阻太小。或者电源供电能力不够,导致芯片没有足够的电压启动。(KEIL会弹出电压低的下载报错)。可以考虑换一个供电方式,或者怼怼复位。不行的话把电阻拆下来吧,换一个大的,或者先不用电阻接地。