当前位置: 首页 > news >正文

STM32复位电路解析

前言

今天讲讲STM32的复位电路。单片机基本都有复位功能,做开发板的厂商都需要做复位电路来确保复位功能可用,我写这篇文章主要有两个原因😎

  1. 因为这个复位电路其实是很简单的,所以中文互联网下关于复位电路的解析太少
  2. 大多数教程都不讲人话,对不懂电路设计的新手很难看懂
    所以我结合了以往的经验,用最简单的方式实现讲讲复位电路的原理

解析

可以看这张图,是一个经典的复位电路设计,我截取了正点原子的stm32精英开发板的设计,这里先说结论,你先记住:这个电路是采取低电平复位的
他一共只会有两种状态

  1. 上电复位
  2. 手动按下按键进行复位

在这里插入图片描述

功能一:上电复位 (Power-On Reset)

这个功能,就好比给MCU一个“开机启动流程”,确保它在刚通电的时候,能在一个稳定、可预测的状态下“醒来”,而不是迷迷糊糊地乱跑。

  1. 通电瞬间 (t=0)——“电容还没睡醒”:我们先把复位按键那一路就擦掉,先不看,可以看到,VCC3.3经过R2电阻后,一条前往了RESET通往stm32芯片内部,一条前往了C10电容接地,当VCC3.3V电源刚接通的那一刹那,电容器C10两端的电压可不能“突变”(这里电容的一个非常重要的特性)!因为它还没来得及充电呢,所以电压还是0V

在这里插入图片描述

  1. 芯片进入复位状态:由于 C10 连接在 RESET 引脚和 GND 之间,根据并联电路电压相等的规律,所以 RESET 引脚在通电瞬间的电压也为 0V(低电平)。STM32 芯片检测到 RESET 引脚为低电平,就会进入并保持在复位状态
  2. RC充电延时:紧接着,电流从 VCC3.3 通过上拉电阻 R2 开始向电容 C10 充电。RESET 引脚上的电压(即C10两端的电压)会按照 RC 充电曲线逐渐上升。
  3. 芯片解除复位:当 RESET 引脚的电压上升到超过 STM32 芯片的复位阈值电压(一个特定的电压值,例如 1.8V)时,芯片的复位逻辑便会释放,CPU 开始从启动地址执行程序。

这个延时的意义是什么? 它确保了在 CPU 开始工作之前,系统的电源(VCC3.3)已经完全稳定下来,避免了因电源不稳而导致的程序启动异常。这个延时的时间由 R2 和 C10 的值决定,不过鉴于是新手向,这里我们不深入探讨这两个值与延时时间的关系

功能二:手动复位 (Manual Reset)

这个功能就更直接了,它允许咱们用户或者外部设备,随时随地都能强制STM32“重启”一次。

  1. 正常工作时:按键没有被按下。C10 已经充满电,如下图所示,我们可以直接认为电容那一路是断路,说人话就是电流不会从C10电容那一路通过,VCC3.3经过R2电阻与``RESET相连,RESET` 引脚被 R2 稳定地保持在 3.3V 高电平,MCU 正常运行。

在这里插入图片描述

  1. 按下按键时:当按下按键,开关闭合,它会立即将 RESET 引脚直接连接到 GND

这里我懒得P图了,你就脑部一下按键是按下的状态吧😋

在这里插入图片描述

  1. 芯片进入复位状态:还是根据电路的并联电压相等规律,VCC3.3V被直接接到了GND,RESET 引脚的电平瞬间被拉低到 0V。同时,电容 C10 通过这个闭合的开关被快速放电。芯片检测到低电平后,立即进入复位状态。

  2. 松开按键时:当用户松开按键,开关断开。此时的情况就和“上电复位”完全一样了:RESET 引脚为 0V,R2 再次开始对 C10 充电,直到电压超过复位阈值,芯片才会重新启动。

附加功能:滤波抗干扰

电容 C10 的存在,使得 RESET 引脚对电源或空间中的一些微小、快速的噪声脉冲不那么敏感。一个短暂的负向毛刺信号可能没有足够的能量将 C10 的电压拉到复位阈值以下,从而避免了意外的复位,增强了系统的稳定性。

总结

其实这个不单止是stm32的复位电路解析,基本上在思路上,所有单片机都是复位电路都是适用的,只要你明白了其中的原理,就能快速判断出这个单片机是低电平复位还是高电平复位

http://www.lryc.cn/news/608625.html

相关文章:

  • Rustdesk中继服务器搭建(windows 服务器)
  • 蜂群优化算法:智能优化新突破
  • 联想笔记本安装系统之后一直转圈圈的问题了?无法正常进入到系统配置界面,原来是BIOS中的VMD问题
  • VUE2 学习笔记16 插槽、Vuex
  • 09.Redis 常用命令
  • C++23 Concepts:用类型约束重构泛型编程的终极方案
  • 选择排序原理与C语言实现详解
  • redis的Java客户端(SpringDataRedis)
  • 深入掌握 ExcelJS:Node.js 中强大的 Excel 操作库
  • 2、docker容器命令 | 信息查看
  • 关于Web前端安全之XSS攻击防御增强方法
  • RAG-Semantic Chunking
  • cursor 使用方法
  • CVE-2025-5947 漏洞场景剖析
  • Claude Code氛围编程经历: 6周干了三年的活
  • vscode的Remote-SSH插件配置SSH主机方法
  • python工具方法51 视频数据的扩充(翻转、resize、crop、re_fps)
  • N1——one-hot编码
  • ABAP SQL更新DB小技巧 WITH INDICATORS
  • [硬件电路-151]:数字电路 - 模拟电路与数字电路的本质
  • MySQL Redo Log
  • GitLab 代码管理平台部署及使用
  • lua中 list.last = last 和list[last]=value区别
  • JavaScript:编程世界中的“语盲”现象
  • 回归的wry
  • 关于vllm【常见问题解决方案】
  • vllm0.8.5:自定义聊天模板qwen_nonthinking.jinja,从根本上避免模型输出<think>标签
  • 【python实用小脚本-169】『Python』所见即所得 Markdown 编辑器:写完即出网页预览——告别“写完→保存→刷新”三连
  • k8s+isulad 国产化技术栈云原生技术栈搭建1-VPC
  • OSPF HCIP