欢迎来到泰骏兴电子,大家有问题可以直接联系管理员QQ:233619809单片机 QQ群:59194556 各位游客也可以注册玩玩,享受更多权益。温馨提示:本网站仅提供平台学习以及渠道,一切后果自行承担,还望广大用户提高自我意识,请不要轻易相信他人,请不要轻易相信他人,请不要轻易相信他人。为了更好的管理论坛工作,所以现在使用邮箱注册,如果以前的邮箱不能修改的,请联系管理员代为修改

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5|回复: 0

STM32 F103 IAP 分区 关机残留电压导致异常上电问题总结

[复制链接]
发表于 3 小时前 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
STM32 F103 IAP 分区 关机残留电压导致异常上电问题总结
基于你整套硬件架构、代码现状、故障现象,整理一份精简实用技术文案,可用于笔记、归档、项目复盘:



故障现象
设备采用 APP0 (0x08000000 引导区) + APP1 (0x08010000 主程序) 双 IAP 分区架构。
整机供电:电池→DCDC→LDO 3.3V,电源后端并联大容量储能电容。


  • 正常开机、日常运行、充电、手动关机全部正常;
  • 设备正常关机后,静置等待约 3 秒,再次插入 USB 上电;
  • 主板供电正常维持,但屏幕无显示、系统无法正常启动,程序卡死不运行。

根本原因
  • 关机为直接 IO 切断总电源,无软件复位动作;
  • 板载 100uF 大容量电容放电缓慢,关机 3 秒后 3.3V 仍残留约 0.5V 低压;
  • STM32F103 未彻底掉电清零,芯片处于低压锁存异常状态
  • 二次 USB 上电时,不执行标准冷启动,不进入 APP0 引导程序,直接跑飞卡死;
  • 原 IAP 跳转代码缺少中断、定时器资源清理,双程序运行存在寄存器、中断冲突隐患。

代码现状说明
  • APP1 主程序起始已正确配置向量表偏移:
    SCB->VTOR = FLASH_BASE | 0x10000;
    配置规范无误,无需修改;
  • 原 IAP 跳转逻辑仅做栈顶合法性校验,未关闭全局中断、SysTick、中断标志位,跨程序跳转存在稳定性隐患;
  • 关机逻辑仅关闭硬件电源,无软复位与死循环兜底,低压场景极易异常。

解决方案
1、优化 IAP 跳转代码(APP0)
跳转前统一关闭总中断、清空 SysTick、清除所有中断挂起与使能位,实现引导程序与主程序硬件资源完全隔离,杜绝冲突。

2、完善关机执行逻辑
关机流程调整为:数据保存 → 关闭硬件电源 → 软件强制复位 → 死循环兜底。

[AppleScript] 纯文本查看 复制代码
write_sys(); // 保存配置参数
MachinePS_OF();     // 切断整机电源
NVIC_SystemReset(); // 芯片强制软复位
while(1);           // 防止指令未执行完成跑飞









3、硬件优化(可选)
3.3V 电源增加对地泄放电阻,加快电容残余电量释放,保证短时间内电压彻底归零,从硬件层面规避低压锁存问题。

优化后效果
  • 保留原有 IAP 分区、程序地址、功能逻辑不变;
  • 无论正常开关机、关机静置后插电、USB 上电等所有场景,均可正常引导、正常进入主程序;
  • 双程序跳转更稳定,杜绝随机死机、黑屏、无法启动等玄学故障;
  • 适配大容量电容供电架构,兼容低压残留的复杂掉电工况。




高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|泰骏兴电子科技有限公司 ( 粤ICP备2023060260号-1 ) 单片机爱好者

GMT+8, 2026-4-24 21:29

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表