STM32仿真器检测不到内核,你的芯片坏了吗?

如果赶时间可以直接拉到后面看结论,如果不赶,何不随笔者体验下整个过程加深印象呢?
先来介绍下整个事情的背景。笔者想自制一个白光焊台,板子打好,器件焊上后,上电很顺利的就检测到了内核,妥妥的。硬件准备好了,接着就是软件的事了。打开STM32CubeMX,配置下想要的外设,但是没有配置SYS下的选项。SWD对应的两个引脚PA13/PA14引脚配置的时候也配成了SWD模式。配置好之后生成代码,编译也木有问题,直接烧录,程序也顺利得跑进了MCU里面,在里面转悠了起来,一切都水到渠成,顺利到不能再顺利了。添加功能,想再次烧录却发现SWD检测不到内核了。
于是展开了各种排查,以为是SWD烧录器问题,换了根还是这样,用烧录器连接其他的板子又能正常检测到,所以排除了烧录器的问题。怀疑是MCU被搞坏了,但是第一次烧进去的代码明显在里面跑得不知多欢快,还时不时得往我电脑的调试串口上发数据炫耀。我看不惯它那种我就喜欢你看不惯我却又换不掉我的感觉,恨不得立马重烧一个程序换掉它那副炫耀和得意的嘴脸,可烧录器检测不到内核呀,怎么换??这时候我想起了还有一招常被没有仿真器的武林英雄所使用的招数:ISP。好在我把BOOT引脚引了出来。
到网上下载了个FlyMcu,百度搜索可以找到很多,如果不想搜索,那就猛戳这里吧:FlyMcu 提取码:oh04
下载好后直接双击运行即可,运行后可以看到下面的界面
FlyMcu界面
打开后插上串口,点击搜索串口并选中你需要用来烧录程序的串口,并选择波特率,笔者设为115200,另外也试了9600也是可以的,就是下载慢很多,然后在 联机下载时的文件 下面的方框后面的三个点处点击,选择你的下载文件(hex或bin文件)。接着在板子上把BOOT0引脚接高,重新给MCU上电,然后点击FlyMcu界面中的 开始编程§ 开始烧录。烧录完成后会有下图的提示:命令执行完毕,一切正常。
在这里插入图片描述
烧录完成后想让程序正常的运行,将BOOT0恢复到低电平,重新上电即可。
经过一顿骚操作,终于换掉了那个以为我看不惯却又干不掉它的得意家伙。

虽然能烧程序了,但是没法仿真还是很让人不痛快。最初怀疑是芯片的JTAG调试组件坏了,还了个MCU果然能检测到了,高高兴兴得通过SWD把程序烧进去。。。。。。。。第二次再看,又检测不到了。最后又一顿折腾,网上查资料才发现既有可能是因为SWD口被烧进去的程序给屏蔽了。如果真是烧进去的程序搞的鬼,那我把里面的程序全擦除了是不是就能检测到内核了。说干就干,还是FlyMcu,按之前的操作接好硬件,点击清除芯片,清除完毕后发现真的就能检测到内核了。
把STM32CubeMX打开将SYS下的Debug模式由No Debug改成Serial Wire(也就是SWD模式),再重新生成代码烧进去,妥妥的能检测到内心了,仿真也能正确仿了。

总结(赶时间的直接看这)
1、之所以出现检测不到内核,但程序却能通过ISP下载且能正常跑是因为禁用了调试功能。
2、解决方法有如下几种:
1)借助像FlyMcu这样的ISP烧录工具配合BOOT0拉高烧录程序。
2)借助像FlyMcu这样的工具将之前烧进去的代码擦除掉后用SWD或JTAG烧录。
3)按住复位键不放,开始启动用SWD或JTAG下载,等下载程序开始往MCU下载后再松开复位按键。
4)如果你的PA13/PA14引脚没有用于其他功能,建议开启调试功能并将PA1/PA14映射为调试口,这样是最省事的。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值