问题描述

刚刚上手STM32不久遇到一个烧录问题

使用HAL固件库编程了一个LED闪烁程序,成功烧录以后更改了程序要重新烧录,编译不报错但是download失败并且提示Error:Flash Timeout.Reset the Target and try it again.又提示Error:Flash Download failed -“Cortex-M3”。

这种情况一般是因为STM32的Boot引脚设置成了BOOT0和BOOT1均为低电平0,而boot0管脚拉高或拉低都不能从系统存储区(system flash)启动(即进入bootloader状态)。芯片刚开始启动会检查main flash区有没有代码,要是0x08000000没有代码,就进入bootloader状态,要是有代码就从main flash区运行。所以在烧录一次并运行程序以后,芯片检测到主闪存区已经存在代码,就自动从main flash区运行,此时不允许FLASH区进行更改download失败。

解决办法

(1)点击Keil5左上角的“FLASH”选型,再点击“Erase”使用Full Erase等待一段时间擦除主闪存区,即可继续烧录

(2)DAP下载器配置更新成如下状态即可正常直接Download,不需要点击“Erase”使用Full Erase等待一段时间擦除主闪存区,推荐使用第二种方法

如描述有误烦请各位大佬指教,谢谢。

参考文章Stm32g031芯片无法进入bootloader的及首次烧写完程序reset无法运行原因分析_-ob nboot_sel=0-CSDN博客

Logo

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

更多推荐