一、解决办法

  • 设置 BOOT0 = 1 (接到 3.3V)。

  • 按一下板子上的 RESET 键。

  • 点击烧录代码

  • 将 BOOT0 拨回 0 (接到 GND)。

  • 再次尝试正常下载。

例子:

stm32f103c8可以直接用跳线帽,把boot0接1,再烧录。

不行的话再摁复位键烧录

左边丝印写的是0,右边丝印写着是1,上面是boot0

STM32 有几种不同的启动模式,取决于 BOOT0 和 BOOT1 引脚的状态:

BOOT0BOOT1启动模式说明
0XMain Flash从你编写的用户代码启动(出问题的代码就在这里)。
10System Memory启动内置的 Bootloader(厂家固化的 ROM)。
11Embedded SRAM从内置 SRAM 启动。

二、为什么芯片会被“锁住”?

在正常的开发过程中,以下几种常见操作会导致你无法再次烧录程序:

  • 禁用了 SWD/JTAG 引脚:为了节省 GPIO 资源,有些开发者在代码中将调试引脚(比如PA13, PA14 等)配置成了普通 IO 或模拟输入。一旦程序运行,调试通道就断开了。

  • 进入了低功耗模式:如果芯片执行了 Stop 或 Standby 模式,内核时钟会停止,调试器自然也就连不上了。

  • 看门狗复位:程序中开启了独立看门狗且没有及时喂狗,导致芯片不断重启,调试器很难在重启的瞬间抓住连接机会。

  • 代码逻辑错误:比如一上电就进入了一个死循环,或者配置了错误的时钟(HSE 配置错误导致系统崩溃)。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐