解决STM32程序一烧录进去断电或复位即丢失问题

本文分享了一次STM32F103RCT6芯片ISP下载失败的故障排查经历,作者通过检查BOOT配置和测量BOOT0及BOOT1引脚电压,最终定位问题在于三极管接错导致的BOOT配置错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分享一下个人错误经验,之前焊接了一块STM32F103RCT6芯片,配了ISP自动下载电路,焊接好后上电烧写发现可以烧录进去,但是怎么一断电或者一复位怎么程序就没了,连一个简单的LED程序都会没了。一想不对劲,BOOT配置也正常啊,难道我的ISP不行,于是就手动下载,我去结果也不可以。

于是怀疑难道是没有下载到ROM里面,只存在RAM里面,掉电就给我丢失了?
查了一下网上,有人说是可能是没有下载到ROM里面,有人说BOOT配置不对,有人说硬件电路有问题,于是我就查啊查,果然被我发现了,用万用表一查发现我的BOOT0的电压不接VCC怎么都有4.5V左右,而BOOT1的电压则只有0.4V左右,一想不对劲,于是一看我去是三极管接错了,造成我的BOOT配置也错了。难怪程序一下载断电就没了。查了一下技术手册,发现boot的配置如图
在这里插入图片描述
按理说应该是可以烧录进FLASH里面,但是板子重启后程序跑不起来,因此可能是三极管出错BOOT配置混乱,造成没有选择主闪存存储器被选为启动区域。

所以经验分享,如果发现自己做的板子如果配了ISP下载电路或者手动下载发现程序烧录完一断电或者复位程序就没了,一定要检查一下自己的BOOT配置是否正确以及BOOT0和BOOT1这两个引脚的电压是否正常!!!

另外在烧录时候发现虽然我的boot配置不对,但是修改烧写器的配置竟然可以成功下载一次,也不知道什么原因,也拿出来分享一下。烧写器配置如图所示:
在这里插入图片描述

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

<think>嗯,用户问的是立创3507核心板断电程序丢失问题。首先,我需要确定这个核心板的具体型号和使用的微控制器类型。因为立创可能有不同的核心板,但3507可能指的是某个特定型号,比如STM32F103C8T6,这类芯片通常属于ARM Cortex-M系列。不过,也有可能用户指的是其他类型的MCU,比如51单片机者AVR,但STM32的可能性较大,因为比较常见。 接下来,用户提到断电程序丢失。这通常涉及到程序存储介质的问题。微控制器的程序通常存储在Flash存储器中,而Flash是掉电非易失的,也就是说断电程序应该保留。如果程序丢失,可能的原因有几个: 1. **程序没有正确烧录到Flash**:可能在下载程序时,选择了错误的存储器类型,比如误烧到RAM中,但这种情况比较少见,因为大多数开发环境默认烧录到Flash。 2. **Flash寿命问题**:Flash有写入次数限制,通常约10万次左右。如果用户频繁烧写程序,可能导致Flash损坏,但这种情况需要多次擦写才会出现。 3. **电源问题**:在断电瞬间,电压不稳定可能导致MCU异常操作,误触发Flash擦除操作。不过这种情况需要特定的条件,比如电源设计有缺陷,者在断电时有电压尖峰。 4. **Bootloader设置问题**:如果核心板使用了自定义的Bootloader,可能存在配置错误,导致程序在启动时被清除跳转失败,但用户可能不会接触到这部分。 5. **芯片损坏**:MCU本身的Flash存储单元损坏,导致无法保存程序,但这种情况通常伴随其他故障现象。 接下来,我需要考虑用户可能的操作错误。比如,是否在下载程序后没有正确验证,者使用的下载方式有问题。例如,使用串口下载时,如果未正确选择擦除选项,者下载过程中断电,可能导致程序未完整写入。 另外,可能需要检查硬件电路。例如,核心板的供电是否稳定,是否有足够的去耦电容,确保在断电时不会出现电压骤降浪涌,影响Flash的保存。此外,检查复位电路是否正常,复位信号不稳定可能导致MCU在启动时无法正确读取Flash。 还有可能是软件问题,比如程序中意外包含了自擦除的代码,比如IAP(在应用编程)功能,可能在某种条件下触发了Flash的擦除操作。需要检查用户程序是否有这样的代码段。 最后,可能需要建议用户尝试重新烧录程序,检查是否每次断电后都丢失,还是偶尔发生。如果是每次都丢失,那问题比较明显,可能是烧录方式存储器选择错误。如果是偶发,可能与硬件电源干扰有关。 总结下来,可能的原因包括烧录配置错误、Flash损坏、电源问题、软件自擦除等。需要逐步排查这些可能性,建议用户检查下载设置、电源稳定性,并查看程序代码是否有异常操作Flash的部分。</think>关于立创3507核心板断电程序丢失问题,以下是逐步分析及解决方案: --- ### **1. 核心板存储介质分析** 立创3507核心板通常搭载**STM32系列微控制器**(如STM32F103C8T6),其程序存储介质为**内部Flash存储器**。 **Flash特性**: - 掉电非易失性(正常情况程序不会丢失) - 擦写寿命约 $10^4 \sim 10^5$ 次 - **异常丢失程序的常见原因**: --- ### **2. 程序丢失的可能原因** #### **(1) 程序未正确烧录到Flash** - **错误现象**:程序仅在调试时运行,断电后消失。 - **排查方法**: - 检查烧录工具(如ST-Link、J-Link)的配置,确认烧录目标为**内部Flash**而非RAM。 - 在KeilCubeIDE中,验证`Target Options > Debug > Flash Download`是否勾选**Reset and Run**。 #### **(2) 电源异常导致Flash损坏** - **错误现象**:频繁烧录程序稳定性下降。 - **关键点**: - 断电瞬间电压跌落可能触发MCU异常操作(如意外擦写Flash)。 - 核心板电源滤波电容不足时,电压波动会干扰Flash存储单元。 - **解决方案**: - 增加电源滤波电容(如并联 $10\mu\text{F} + 0.1\mu\text{F}$ 电容)。 - 避免频繁烧录程序。 #### **(3) 程序代码误擦除Flash** - **错误现象**:程序运行后自动清除自身。 - **排查方法**: - 检查代码中是否包含**IAP(在应用编程)**功能Flash操作函数(如`HAL_FLASH_Program()`)。 - 避免在未隔离的代码段中执行Flash擦除操作。 --- ### **3. 硬件排查步骤** #### **(1) 检查供电电路** - 使用示波器测量断电瞬间的电压波形,确认无尖峰震荡。 - 确保VDD电压在 $3.0\text{V} \sim 3.6\text{V}$ 范围内(STM32F1系列要求)。 #### **(2) 验证复位电路** - 复位引脚(NRST)需通过 $10\text{k}\Omega$ 上拉电阻和 $0.1\mu\text{F}$ 电容稳定信号。 - 复位信号异常可能导致MCU无法正确读取Flash。 --- ### **4. 软件配置建议** #### **(1) 烧录配置验证** - 在STM32CubeProgrammer中,勾选以下选项: ```plaintext [Options] > Verify after programming [Options] > Reset after programming ``` #### **(2) 禁用未使用的功能** - 关闭调试接口(如SWD/JTAG)的写权限,防止意外擦除: ```c HAL_DBGMCU_DisableDBGStandbyMode(); // 禁止调试模式下Flash访问 ``` --- ### **5. 极端情况处理** 若上述方法无效,可能是芯片Flash物理损坏: - 尝试更换新MCU芯片。 - 联系立创客服确认核心板设计是否存在缺陷(如缺少写保护电路)。 --- ### **总结** 程序丢失的优先级排查顺序: 1. 检查烧录工具配置 2. 测量电源稳定性 3. 审查代码中的Flash操作 4. 硬件电路验证 通过逐步排查,可定位问题根源并针对性解决
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

OMGMac

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值