手把手教你用MCU和GPIO实现零功耗一键开关机电路(附完整原理图)

ESP32一键开关机电路设计:软开关+MCU自锁方案与避坑指南 在嵌入式系统设计中,电源管理是确保设备低功耗运行的关键技术。其原理是通过MOS管等开关器件控制电源通断,结合MCU实现智能自锁,从而将静态电流降至微安级,显著延长电池寿命。这项技术对于电池供电的物联网设备至关重要,广泛应用于便携式仪器、远程传感器等场景。针对ESP32项目,软开关与MCU自锁方案能有效解决深度睡眠功耗问题,实现一键开关机,提升用户体验。 阅读详情

手把手构建零功耗一键开关机系统:从硬件选型到软件逻辑的深度实践

你是否曾为嵌入式设备设计一个既可靠又省电的物理开关而烦恼?传统的机械开关直接切断电源固然简单,但无法实现优雅的关机流程(如保存数据、关闭外设);而让设备一直处于待机状态,哪怕只有几十微安的漏电流,对于依赖电池供电、需要长期值守的设备来说,也是不可接受的功耗负担。今天,我们就来深入探讨一种在消费电子、物联网设备中广泛应用的“零功耗一键开关机”方案。这不仅仅是连接一个按键那么简单,它是一场硬件电路与软件逻辑的精密共舞,目标是实现:按下开机,长按关机,关机后电路自身消耗为零。

我将以一个典型的+5V供电系统为例,带你从零开始,理解其核心思想,完成硬件电路的选型与搭建,并编写与之完美配合的软件驱动程序。无论你是刚接触硬件的嵌入式新手,还是希望优化产品功耗的开发者,这篇文章都将提供一套可直接复用的完整解决方案。我们将避开枯燥的理论堆砌,聚焦于可落地的设计细节、常见的“坑”以及调试技巧,让你不仅能看懂,更能亲手做出来。

1. 核心原理与硬件架构设计

要实现“零功耗”,关键在于设计一个自锁的电源开关电路。这个电路需要具备一个初始的触发机制(按键按下),以及一个后续的维持机制(MCU控制),并且在维持机制撤消后,整个电路能完全断开,不产生任何静态电流。

1.1 电路工作的状态机模型

理解这个电路,最好将其看作一个具有两个稳定状态的状态机:

  • 状态A(关机态):整个系统电源VCC被彻底切断,电压为0V。MCU无电,不工作。此时,电路中所有节点均无电流流通,功耗理论为0。电路等待一个外部触发事件(按键按下)来跳转到状态B。
  • 状态B(开机态):系统电源VCC正常输出。MCU得电启动,并通过一个GPIO引脚输出特定电平(通常是高电平),来“锁住”电源开关电路,使得即使触发事件(按键松开)消失,电源也能持续供应。MCU同时监控按键状态,当判断为长按关机指令时,便撤销这个“锁存”信号,使电路自动回归状态A。

这个模型清晰地划分了硬件和软件的职责边界:硬件的责任是提供两个稳定状态和触发切换的物理路径;软件的责任是识别触发意图(短按 vs 长按)并控制状态维持信号的去留。

1.2 关键元器件选型与电路图解析

下面是我们将构建的核心电路原理图。我们将逐一拆解每个元件的作用和选型要点。

         +5V_IN (输入电源)
              |
              R1 (1MΩ)
              |
              +-------+------ VCC_OUT (+5V 给MCU供电)
              |       |
          D1  |    [MOSFET Q1]
    1N4148   \|/      N-MOS
              |       (如 AO3400)
              |       G   D   S
              +-------|   |   |
              |       |   |   |
             --- C1   |   |   |
           //| 100nF  |   |   |
  按键SW1 ---||-------+   |   |
           \\|           |   |
              |           |   |
              |           |   |
              R2 (100kΩ)  |   |
              |           |   |
              +-----------+   |
              |               |
              |               |
              |               |
             ---              |
           //|                |
    GPIO-Out ---||-------------+
    (MCU控制) \\|                |
              |               |
              R3 (10kΩ)      |
              |               |
              |              \|/ D2
              +---------------|  1N4148
              |               |
              |               |
             ---              |
           //|                |
    GPIO-In ---||--------------+
    (MCU检测) \\|                |
              |               |
              GND            GND

元器件清单与选型深度解析:

  • MOSFET Q1 (N沟道增强型):这是整个电路的“总开关”。其选型至关重要。

一键开关机电路,“小电路,大作用” 简单的一键开关机电路设计 阅读详情

相关推荐

一键控制开关机电路(软件控制)

一键开关机PMOS(CH217K)电路驱动

weixin_54922827的博客 3092

5分钟搞定!用MCU GPIO实现零功耗一键开关机电路(附完整原理图)

本文详细介绍了如何利用MCU GPIO设计零功耗一键开关机电路,适用于便携式设备和电池供电项目。通过软硬件结合的方式,实现关机状态下的真正零功耗,同时提供智能开关机控制。文章包含完整原理图、元件选型指南和实际搭建技巧,帮助开发者在5分钟内完成高效电源管理方案。

weixin_28339967的博客 341

MCU GPIO实现零功耗一键开关机电路设计

零功耗开关机是嵌入式低功耗设计的核心能力,其本质在于切断整个系统供电轨而非仅让MCU休眠。原理上需突破‘断电后无法检测按键’的死循环,关键依赖MCU复位瞬间GPIO输入寄存器(IDR)对硬件电平的冻结捕获能力,并配合PMOS高压侧电源开关实现真正物理断电。技术价值体现在关机电流压至百纳安级、开机响应毫秒级、BOM成本压缩至极简。典型应用于电池供电的物联网终端、智能穿戴设备及工业传感器节点,尤其适配对续航与可靠性要求严苛的量产场景。本文聚焦GPIO+PMOS+RC构成的纯硬件自举方案,覆盖从原理时序、器件选型

weixin_34127717的博客 317

低功耗一键开关机电路设计:静态功耗优化与MCU适配实战

在电池供电的便携设备中,静态功耗直接决定续航。一键开关机电路作为电源管理的关键环节,其漏电通路往往成为功耗瓶颈。通过纯硬件自锁、MCU自锁或专用负载开关等拓扑,可将关机电流压至微安级。设计时需重点考虑GPIO漏电、按键消抖与防误触,并适配hc32l196、stm32l151c8t6a等低功耗MCU的Stop模式特性。合理的器件选型与PCB布局能进一步降低漏电,确保系统在纽扣电池下稳定运行一年以上。

weixin_29192211的博客 253

嵌入式一键开关机与屏幕控制:硬件电路设计与软件状态机实现

在嵌入式系统开发中,电源管理与按键控制是基础且关键的技术环节。其核心原理在于通过硬件电路实现电源的可靠通断,并配合软件逻辑识别用户意图。这项技术的价值在于,它能显著提升电子设备的用户体验与可靠性,确保系统开关过程稳定,避免误操作或数据丢失。典型的应用场景包括智能家居中控、手持仪表、工业控制面板等需要长续航和稳定操作的产品。本文以GPIO结合MOS管的经典方案为例,深入剖析了如何设计一个融合了电源管理、信号防抖和状态保持的系统,其中涉及PMOS/NMOS选型、RC滤波消抖以及基于状态机的长短按识别等核心实践。

weixin_30698297的博客 336

ESP32一键开关机电路实战:从硬件选型到代码调试全流程(附避坑指南)

本文详细介绍了ESP32一键开关机电路的完整实现流程,从硬件选型到软件调试,涵盖PMOS管选择、防漏电设计、PCB布局规范及低功耗优化等关键环节。特别针对开关机电路中的常见问题提供了避坑指南,帮助开发者实现高效稳定的电源管理,适用于物联网设备开发。

weixin_42525632的博客 453

硬件工程师必备:软硬件结合的一键开关机电路设计避坑指南

本文为硬件工程师提供了一键开关机电路的软硬件结合设计避坑指南。文章深入剖析了传统方案的局限,重点讲解了如何利用MCU的GPIO与基础硬件协同工作,以实现可靠开关机、超低功耗及系统防死机。内容涵盖核心架构、关键元器件选型、软件状态机设计及实战调试技巧,旨在提升电路的系统级设计思维与工程可靠性。

204

嵌入式系统一键开关机与屏幕控制电路设计全解析

在嵌入式硬件开发中,电源管理是确保系统稳定与长续航的核心基础。其原理在于通过精密的电路设计,实现对系统供电的可靠控制与高效管理。这项技术的核心价值在于,它直接决定了便携式设备的用户体验、系统稳定性及电池寿命。其应用场景广泛覆盖了从消费电子到工业控制等各类电池供电的嵌入式产品。本文将聚焦于一种经典的软硬件结合方案,深入剖析如何利用GPIO、MOS管及逻辑电路,构建一个兼顾低功耗、高可靠性的一键开关机及屏幕独立控制系统,其中涉及的关键技术点包括硬件自锁电路设计和长按检测逻辑的实现。

weixin_30765505的博客 398

MCU中GPIO口的驱动方式

MCU中GPIO口的驱动方式 导读: MCU芯片中GPIO口的驱动方式大的可分为输出和输入两类,小的分可以分为8种。 一、四种输入方式 ①上拉输入: 上拉输入抗干扰能力强,特别适合接地信号的输入(比如低电平有效的按键信号输入)。其工作原理如图1所示。 I/O 端口与TTL 施密特触发器之前接入了一个30K~50K 欧姆的上拉电阻,当I/O 端口悬空时,此时MCU 也能读到稳定的高电平状态,...

优快云Frewen的博客 3372

5BE1-2C72一键开关机芯片:实现超低功耗与高可靠性的电源管理方案

在嵌入式系统和消费电子产品设计中,电源管理是确保设备稳定运行与延长电池寿命的核心环节。其基本原理在于通过硬件或软件策略,精确控制系统中各模块的供电状态,从而在满足功能需求的前提下实现功耗最小化。这项技术的核心价值在于,它直接决定了设备的续航能力、用户体验及可靠性,是物联网设备、便携式电子产品及各类电池供电设备的关键竞争力。从应用场景来看,无论是需要长年待机的智能传感器、频繁开关机的个人护理电器,还是对可靠性要求极高的工业控制设备,高效的电源管理方案都不可或缺。本文聚焦的专用一键开关机芯片,正是针对传统机械开

weixin_30338497的博客 474

罗姆推出去光耦过零检测IC,待机功耗降低一半以上

近年来,随着物联网的快速发展,越来越多的白色家电中配备了Wi-Fi通信功能。由于必须始终通电以保持通信连接,而且家电制造商必须将待机功耗降低至0.5W以下,这将面临着比以往更大的挑战。  如何降低家电产品的待机能耗?这需要从多方面入手,其中,电机部分和电源部分的待机功耗改善工作已经到达瓶颈,另一个领域就是过零检测电路。  所谓过零检测,就是用来检测AC(交流)波形的0V电位(过零点)的电路(过零检测电路),目的是为了有效地对电机和微控制器进行控制。在过零检测电路中,提高过零检测的    ,可以更有效地控制电机和微控制器。而且,在电机停止时,能够将电压正好停止在0V状态,脉冲控制也更提升了电路的

华为P30/pro (ELE-AL00) 鸿蒙4.2降级 EMUI 9

分享

m0_52356707的博客 1万+

cvtColor +内存泄漏

题目不知道怎么取,因为cvtColor并没有产生内存泄漏,但是我由于没有正确使用cvtColor而出现了内存泄漏的问题,所以暂且以cvtColor+内存泄漏为题 1.应用背景 项目中用到cvtColor的地方是需要将灰度图转为3通道的彩色图(实际上转换后仍然为灰色的,但是电脑认为的是3通道的彩色图了) 因此需要用到以下语句 cvtColor(src_img, cvMtxRGB, C

smilebluesky的专栏 6056

微信好友恢复全攻略(2025年3月更新)

适用于仅被拉黑场景(成功率100%)针对7天内误删场景(成功率78%)

2301_77933942的博客 1万+

Ultralytics YOLO模块自定义与替换实战技巧

本文详细介绍了在Ultralytics YOLO框架中进行模块自定义与替换的实战技巧。通过从零开始添加全新模块(如注意力模块)到进阶替换现有模块(如增强版卷积),并涵盖模块注册、YAML配置、模型融合及ONNX导出等关键步骤,帮助开发者深度定制YOLO模型,以应对复杂检测任务与部署需求。

numpy6sculptor的博客 930

OpenVPN 新增 windows 客户端

虚拟私人网络(Virtual Private Network,简称VPN)是一种网络技术,它允许用户通过公共网络(如互联网)建立一个安全的连接通道。本文介绍如何添加 windows 客户端。

利昂的技术存档 3760

TypeScript领域建模实战:基于斯坦福本体论七步法构建健壮数据模型

在软件工程中,领域建模是连接业务需求与技术实现的关键桥梁,其核心在于对业务概念、属性及其关系的显式定义与规范。通过系统化的建模方法,开发者能够将模糊的领域知识转化为清晰、可扩展且类型安全的数据结构,从而在编译时捕获潜在错误,提升代码质量与可维护性。这一过程的技术价值在于实现了从业务逻辑到类型系统的无损映射,确保了设计的一致性。在实践中,结合TypeScript的静态类型检查与Zod的运行时验证,可以构建起从概念到代码再到数据库的三层一致性约束。本文以电商、博客等常见应用场景为例,深入解析如何运用源自斯坦福知

weixin_42551967的博客 382

基于粒子群算法的PID控制器优化设计

粒子群算法、PID、寻优

qq_46107700的博客 2万+

uniapp - [微信小程序] 实现点击预览各种文件 pdf文档、视频mp4、mp3音乐、图片图像、word/excel/ppt 等,uniapp小程序文件预览功能(详细示例代码,一键复制开箱即用)

uniapp,uniapp微信小程序,支付宝小程序平台端,uniapp实现文件在线预览,uniapp微信小程序怎么实现预览视频mp4,mp3音乐,图片,office文档,小程序平台如何在线预览word/excel/ppt文档,uniapp实现小程序端的文件查看功能,uniapp小程序端实现pdf文件预览,uniapp纯前端预览PDF、DOC、DOCX、图片、视频,uni-app文档、图片预览查看,uniapp文档预览功能,uniapp小程序端文件预览,uniapp小程序平台纯前端解析word,pdf,xls

✅ 精选推荐文章 1万+

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

上一篇: UE5.6蓝图实战:5分钟搞定你的第一个可交互门(附完整节点图)
下一篇: 智能汽车芯片进化史:从MCU到SoC,为什么你的车越来越聪明?
delta
博客等级 码龄26年 125粉丝 1241原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值