MCU 上电不启动的常见原因分析与排查思路

在开发过程中,“MCU 上电不运行”是我们经常遇到的问题之一。但客户对此类问题的描述往往较为模糊,仅简单表示“产品不工作”或“怀疑 MCU 没有运行”,这给我们现场排查带来了较大的挑战。即便工程师到达现场,往往也无法迅速定位问题根因。
因此,本文总结了一些 MCU 上电后不运行的典型原因和系统性的排查方法,供大家参考和借鉴。

一、明确问题来源:软件还是硬件?

MCU 上电后不运行通常有两个主要方向: 软件故障硬件故障。我们建议首先判断问题属于哪一类,以便快速缩小排查范围。
软件常见原因:
  • 时钟源切换失败
  • 程序跑飞(如指针访问非法内存)
  • 堆栈溢出
  • 死循环或未触发 main 函数
硬件常见原因:
  • VDD 或 VCAP 电源不稳定
  • 上电波形缓慢(电源斜率不合规)
  • 晶振不起振或参数不匹配
  • 复位电路设计不合理

二、软件排查步骤

由于软件问题相对更容易验证,建议按如下步骤进行判断和验证:
1. 烧录最小功能测试程序
将客户程序擦除,烧录一个简单的测试代码(例如翻转某个 IO 口),再用示波器观察该 IO 是否有波形输出:
while (1) { HAL_GPIO_TogglePin(GPIOx, GPIO_PIN_y); HAL_Delay(100); }
  • 若 IO 有输出波形,说明 MCU 正常运行,问题多半出在用户程序逻辑(如跑飞、死循环、时钟配置错误等)。
  • 若无波形输出,需进一步排查硬件问题。

2. 观察看门狗复位情况
如果用户程序启用了独立看门狗(IWDG),则即使程序卡死或跑飞,看门狗仍能定期复位 MCU。此时可使用示波器观察 RESET 引脚是否存在周期性复位波形:
  • 若存在周期性复位:说明程序已进入异常状态(如死循环或异常中断),并被 IWDG 自动复位。
  • 若无复位波形:说明 MCU 可能未成功运行程序,大概率为硬件问题,如供电异常、晶振不起振等。

3. 手动复位测试
在 MCU 上电后,使用镊子短接 RESET 到 GND,然后松开,观察程序是否能够正常启动:
  • 若每次手动复位都能使程序运行,说明 MCU 在上电瞬间外设(如时钟源、外部通信芯片)尚未准备好,导致程序初始化失败。
  • 建议在系统初始化前加入一定的延时,例如:
for (volatile int i = 0; i < 100000; i++);
或使用 HAL_Delay(200) 延迟几百毫秒,确保系统稳定后再进行初始化。

三、硬件排查重点:电源与晶振

1. 晶振起振检测
使用高阻抗示波器检测晶振两端是否有振荡波形,并确认频率是否符合规格要求。同时检查晶振在 PCB 上的布局位置是否靠近 MCU 的 OSC 引脚。
一般建议晶振距离 OSC 引脚 不超过 20mm,距离越远,信号衰减和受干扰的风险越大,从而影响起振效果。
2. 电源稳定性检查
MCU 的 VDD 电源必须稳定可靠。需重点关注以下几个方面:
  • 确认 3.3V 电源来源稳定,电压无跌落或噪声干扰;
  • 按推荐设计为
每组 VDD-VSS 引脚分别布置退耦电容,一大(μF 级)一小(nF 级)各一颗,且尽量靠近布置;
  • 切勿仅用一组退耦电容供给所有 VDD 引脚,这种做法虽然节省空间,但极易导致局部供电不稳,影响系统稳定性。
3. VCAP 电压波形判断(适用于 STM32F4/H7 等)
部分芯片(如 STM32F4/H7 系列)提供 VCAP 引脚用于输出内核供电电压(一般为 1.1~1.3V)。
可通过该引脚判断内核 LDO 是否工作正常:
  • 正常情况下,VCAP 电压应为稳定的直流波形;
  • 若波形上出现超过 50mV 的纹波,可能导致 MCU 无法正常启动或运行;
  • 推荐在每个 VCAP 引脚外接 ≥2.2μF 的低 ESR 陶瓷电容,确保内核电压稳定。
其它MCU,像STM32G0/G4,它并没有外接VCAP,它的内核电压都是在芯片内部的,也就是说我们无法探测和改善它,这样就更应该注重外部VDD的供电环境了。
参考: STM32 MCU上电不启动的经验分享 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/80904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React中使用 Ant Design Charts 图表

// 引入 Ant Design Charts 的柱状图组件 Column import { Column } from ant-design/charts;// 定义函数组件 App&#xff0c;用于展示柱状图 function App() {// 数据源&#xff1a;每个对象代表一个柱子&#xff0c;包含类型&#xff08;type&#xff09;和销售额&#xff0…

30、WebAssembly:古代魔法——React 19 性能优化

一、符文编译术&#xff08;编译优化&#xff09; 1. 语言选择与量子精简 // Rust编译优化 cargo build --target wasm32-wasi --release 魔法特性&#xff1a; • 选择低运行时开销语言&#xff08;如Rust/C&#xff09;&#xff0c;编译后文件比Swift小4倍 • --rel…

初识计算机网络。计算机网络基本概念,分类,性能指标

初识计算机网络。计算机网络基本概念&#xff0c;分类&#xff0c;性能指标 本系列博客源自作者在大二期末复习计算机网络时所记录笔记&#xff0c;看的视频资料是B站湖科大教书匠的计算机网络微课堂&#xff0c;祝愿大家期末都能考一个好成绩&#xff01; 视频链接地址 一、…

深入理解 MongoDB 的 _id 和 ObjectId:从原理到实践

在 MongoDB 的世界中&#xff0c;_id 字段和 ObjectId 是每个开发者都必须理解的核心概念。作为 MongoDB 文档的唯一标识符&#xff0c;它们不仅影响着数据库的设计&#xff0c;也直接关系到应用的性能和扩展性。本文将全面剖析 _id 和 ObjectId 的工作原理、实际应用场景以及最…

计算机视觉与深度学习 | Python实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据

以下是一个结合ARIMA、鲸鱼优化算法(WOA)、CNN和LSTM进行时间序列预测的Python实现框架。由于完整代码和数据量较大,此处提供核心代码结构和示例数据集,您可根据需求扩展。 1. 数据准备(示例数据) 使用airline-passengers.csv(航空乘客数据集): import pandas as pd…

【project】--基于大数据离线数仓技术检测网站流量

文章目录 项目介绍项目指标1)页面浏览量&#xff08;PV&#xff09;&#xff1a;2)独立访客数&#xff08;UV&#xff09;&#xff1a;3)每小时环比增长&#xff1a;4)每小时同比增长&#xff1a;5)跳出率&#xff08;Bounce Rate&#xff09;&#xff1a; 环境搭建 项目介绍 …

Cross-Site Scripting(XSS)

1. XSS介绍 跨站脚本攻击&#xff08;Cross-Site Scripting&#xff09;简称XSS&#xff0c;人们经常将跨站脚本攻击&#xff08;Cross Site Scripting&#xff09;缩写为CSS&#xff0c;但这会与层叠样式表&#xff08;Cascading Style Sheets&#xff0c;CSS&#xff09;的缩…

【HTML-1】HTML骨架标签:构建网页的基础框架

在网页开发的世界中&#xff0c;HTML&#xff08;超文本标记语言&#xff09;是构建所有网站的基石。而HTML骨架标签则是这个基石中最基础、最重要的部分&#xff0c;它们构成了每个网页的基本框架。无论你是刚入门的前端开发者&#xff0c;还是经验丰富的全栈工程师&#xff0…

高噪声下扩展边缘检测算子对检测边缘的影响

目录 一、常见的边缘检测算子 二、扩展边缘检测算子对检测边缘的影响 三、结论 一、常见的边缘检测算子 Sobel 算子: Prewitt算子;

Python爬虫之路(14)--playwright浏览器自动化

playwright 前言 ​ 你有没有在用 Selenium 抓网页的时候&#xff0c;体验过那种「明明点了按钮&#xff0c;它却装死不动」的痛苦&#xff1f;或者那种「刚加载完页面&#xff0c;它又刷新了」的抓狂&#xff1f;别担心&#xff0c;你不是一个人——那是 Selenium 在和现代前…

【18. 四数之和 】

Leetcode算法练习 笔记记录 18. 四数之和 18. 四数之和 这题其实和三数之和差不多&#xff0c;相当于同一个板子&#xff0c;具体可以看-> 三数之和或者看灵神讲解b站灵神讲解 public List<List<Integer>> fourSum(int[] nums, int target) {int n nums.length…

用java实现内网通讯,可多开客户端链接同一个服务器

创建一个客户端&#xff1a;package Socket;import java.io.IOException; import java.io.OutputStream; import java.net.Socket; import java.nio.charset.StandardCharsets; import java.util.Scanner;/* 聊天案例客户端 */ public class Client {private Socket socket;/**…

node 后端和浏览器前端,有关 RSA 非对称加密的完整实践, 前后端匹配的代码演示

前言 前天&#xff0c;写了一篇文章《我设计的一个安全的 web 系统用户密码管理流程》,里面提到了有关非对称加密 RSA 的一些事情。思想归思想&#xff0c;实践要重于理论&#xff0c;所以我想趁周末&#xff0c;来完成这个时间。 结果发现现实比理想要困难许多&#xff0c;这…

【自然语言处理与大模型】Windows安装RAGFlow并接入本地Ollama模型

本文给大家带来一个实用的RAG框架——RAGFlow。我们来看看它的自我介绍吧&#xff01; 还是老规矩&#xff0c;它是什么&#xff1f;有什么用&#xff1f;这些官方文档都可以简单的查到&#xff08;官方中文README_zh.md&#xff09;。下面我带大家一步步安装并实现一个知识库问…

MySQL 自启动时报错can‘t create PID file: No such file or directory

系统版本&#xff1a;Red Hat Enterprise Linux Server release 7.0 MySQL版本&#xff1a;5.7.16-1.el6.x86_64 安装MySQL后&#xff0c;设置好了开机自启动。 但是重启服务器后&#xff0c;MySQL并没有启动&#xff0c;查看日志如下&#xff1a; 2018-04-13T06:27:24.608793…

Flink CDC 3.4 发布, 优化高频 DDL 处理,支持 Batch 模式,新增 Iceberg 支持

引言 Apache Flink 社区很开心地宣布&#xff0c;在经过4个月的版本开发之后&#xff0c;Flink CDC 3.4.0 版本已经正式发布。Flink CDC 是流行的流式数据集成框架&#xff0c;CDC 3.4.0 版本强化了框架对于高频表结构变更的支持&#xff0c;框架支持了 batch 执行模式&#x…

Flink SQL、Hudi 、Doris在数据上的组合应用

Flink SQL、Hudi 和 Doris 是大数据领域中不同定位的技术组件&#xff0c;各自解决不同的问题&#xff0c;以下从核心定位、关键特性和典型场景三个维度展开说明&#xff1a; 1. Flink SQL&#xff1a;流批统一的实时计算引擎 核心定位&#xff1a;Flink 是 Apache 顶级的流批…

如何实现RTSP和RTMP低至100-200ms的延迟:直播SDK的技术突破

在实时音视频传输中&#xff0c;低延迟是直播应用的核心技术要求之一。无论是在线教育、远程医疗&#xff0c;还是实时互动直播&#xff0c;延迟过大会影响用户体验&#xff0c;甚至导致应用无法正常使用。大牛直播SDK&#xff08;SmartMediaKit&#xff09;在RTSP和RTMP播放器…

upload-labs通关笔记-第15关 文件上传之getimagesize绕过(图片马)

目录 一、图片马 二、文件包含 三、文件包含与图片马 四、图片马制作方法 五、源码分析 六、制作图片马 1、创建脚本并命名为test.php 2、准备制作图片马的三类图片 3、 使用copy命令制作图片马 七、渗透实战 1、GIF图片马渗透 &#xff08;1&#xff09;上传gif图…

基于区块链的茅台酒溯源系统:设计方案、应用实例及未来展望

一、项目背景与需求 茅台酒&#xff0c;作为中国白酒的瑰宝&#xff0c;以其深厚的历史底蕴和独特的酿造工艺享誉全球。然而&#xff0c;市场上假冒伪劣产品的泛滥&#xff0c;不仅严重损害了消费者的权益&#xff0c;也对茅台酒的品牌声誉造成了巨大冲击。为了解决这一问题&a…