STM32卡死之谜

gtm的今天终于破案了,把这个问题的情况和在我这的解决方法列一下。

硬件平台是stm32F103ZET6开发板,附带串口自动下载电路的那种,通过下载器供3.3V电。

症状是使用jlink和stlink下载时均能正常下载,但是程序不会正常运行, 进入不了main函数,打开debug窗口会发现程序在跑三句死循环。手动重置程序指针到用户flash起始区无效。但是插上usb线,用mcuisp走串口下载就能正常运行。

//寄存器的值一直仅有R1会变。
0x1FFFF3B2 F8D01808  LDR      r1,[r0,#0x808]
0x1FFFF3B6 0549      LSLS     r1,r1,#21
0x1FFFF3B8 D4FB      BMI      0x1FFFF3B2

//反汇编窗口一直是这三条语句循环

中间走的弯路很多啊,最开始是搜到有人说是keil5没装兼容包打开keil4工程的原因,装了legacy pack还是不好使。然后怀疑是不是jlink独有问题,于是又买了个stlink,插上一试,问题照旧。然后有人说是boot0问题,没接地导致的,我开发板上是跳线帽接地的理论上来讲应该不会有问题,就跳过这条了。今天又百度搜了一下,看到有人说是因为一键下载电路没有上电,直接连接swd导致的,所以掏出个充电宝,怼上usbisp的接口供电,然后再下载就好了……他奶奶的亏我还又花了37块买了个stlink