15、电池电量计量与热管理技术解析

电池电量计量与热管理技术解析

1. 电池电量计量(Battery Fuel Gauging)

电池电量计是电池管理系统中至关重要的部分,其中荷电状态(SOC)是电池电量计需要估计的最重要参数。目前,常见的 SOC 估计方法主要有以下三种:
- 库仑计数法(Coulomb counting approach) :通过对电池充放电电流进行积分来计算 SOC 的变化,但该方法存在累计误差,且对电流测量精度要求较高。
- 基于电压查找的方法(voltage lookup - based approach) :根据电池电压与 SOC 的对应关系,通过查找表格来确定 SOC。然而,电池电压受多种因素影响,如温度、充放电速率等,使得这种方法的准确性有限。
- 基于融合的方法(fusion - based approach) :结合多种测量信息来估计 SOC,其中基于扩展卡尔曼滤波(EKF)的融合方法受到了广泛关注。

EKF 方法在理论上具有较好的性能,但在实际应用中存在一定的局限性。EKF 只有在模型参数准确已知的情况下才可靠,当模型参数与实际情况存在偏差时,EKF 估计结果会出现发散。以下是 EKF 方法在不同参数不匹配情况下的表现:
| 不匹配情况 | SOC 跟踪 | 平均标准化创新平方(Average NIS) | t 统计量(t - statistic) |
| — | — | — | — |
| 过程噪声不匹配 | 可能出现跟踪不准确 | 数值异常 | 偏离正常范围 |
| ECM 模型参数 R0 不匹配 | 跟踪误差增

相关推荐

深入解析NXP PMIC内置ADC:从架构原理到电池电量计实战

模数转换器(ADC)是嵌入式系统中连接模拟世界与数字处理的核心接口,其核心原理是将连续的模拟信号(如电压、温度)转换为离散的数字量以供处理器使用。在电源管理集成电路(PMIC)中,集成ADC的技术价值尤为突出,它不仅是实现精准电源监控、电池管理的基石,更是构建智能、低功耗嵌入式系统的关键。通过循环扫描(Round-Robin)等多通道自动采样机制,ADC能极大减轻主处理器负担,实现后台持续监测。其典型应用场景包括移动设备的电池电量计量、温度保护、触摸屏接口以及各类传感器信号采集。本文以NXP(原Freesc

weixin_34234829的博客 428

ADP5350与PIC18F4553构建智能电源管理系统

电源管理IC(PMIC)是现代嵌入式系统的核心组件,通过高度集成化设计实现多路电压转换、电池管理和低功耗控制。ADP5350作为一款高性能PMIC,结合PIC18F4553单片机的可编程特性,可构建完整的智能电源解决方案。该方案采用同步降压充电器、可编程升压转换器和多路LDO稳压器,支持精确的电源时序控制和燃油计量功能,特别适合工业手持设备、医疗仪器等应用场景。关键技术包括I2C寄存器配置、低功耗模式实现和温度补偿算法,实测显示可降低35%功耗并提升电源可靠性。

weixin_29168675的博客 340

MAX1704X库:嵌入式锂电SOC与SoH高精度计量方案

电池电量计量是嵌入式电源管理的基础能力,其核心在于准确获取荷电状态(SOC)与健康状态(SoH)。传统库仑计依赖电流检测电阻,易受温漂、PCB布局和校准误差影响;而基于ModelGauge™ m3算法的MAX17043/4芯片通过开路电压(OCV)、温度及动态负载建模实现±2% SOC精度,无需检流电阻。该技术显著提升低功耗设备续航预估、老化预警与安全保护的可靠性,广泛应用于智能穿戴、工业手持终端及IoT边缘节点。MAX1704X库作为专为Arduino及主流MCU(如ESP32、STM32、nRF5284

weixin_28922227的博客 577

ADP5350与PIC18F67K40的智能电源管理方案解析

电源管理集成电路(PMIC)是现代嵌入式系统的核心组件,通过集成多路电压转换和电池管理功能,显著提升能效比和可靠性。ADP5350作为一款高性能PMIC,配合PIC18F67K40微控制器的灵活控制,可实现动态电压调节和智能功耗管理。该方案特别适用于工业手持设备、医疗仪器等对电源效率要求严苛的场景,其中Buck转换器和LDO的组合设计能同时满足处理器核心与外设的供电需求。通过I²C接口实现的实时状态监控和动态调节,使得系统能在不同工作模式间智能切换,典型应用包括电池供电设备的充电管理和多电源轨精确控制。

weixin_42709044的博客 311

电池电量计数据闪存配置:RA表与SBS参数实战调优指南

电池管理系统(BMS)是确保电池安全、高效运行的核心,其关键在于精确的电量估算。电量计作为BMS的“大脑”,通过混合算法(如库仑积分与电压建模)实时计算电池的荷电状态(SOC)。其精度高度依赖于一组存储在数据闪存中的核心参数,这些参数定义了电池的模型骨架与行为准则。在工程实践中,阻抗表(RA Table)的配置决定了算法对电池内阻变化的跟踪能力,直接影响SOC在负载波动、温度变化下的稳定性;而SBS(智能电池系统)配置则规范了与主机系统的通信协议,确保容量、电压、报警等信息的准确上报。本文聚焦于这两大核心模

weixin_29189987的博客 239

磷酸铁锂电池技术解析:从材料特性到BMS管理全攻略

锂离子电池作为现代电动汽车的核心动力源,其技术路线选择直接影响车辆性能与安全。在众多正极材料中,磷酸铁锂凭借其独特的橄榄石晶体结构,展现出卓越的热稳定性和循环寿命,成为高安全性电池的代表。从技术原理看,该材料通过稳定的化学键框架,有效抑制了热失控风险,同时具备成本低、寿命长的核心优势。在工程应用层面,以CTP(Cell to Pack)为代表的结构创新,通过去模组化设计大幅提升空间利用率,使磷酸铁锂电池在体积能量密度上实现突破。针对其电压平台平坦带来的SOC估算挑战,先进的BMS系统融合安时积分与开路电压校

weixin_34413802的博客 347

TPS80032 PMIC深度解析:从LDO、充电管理到USB OTG的嵌入式电源设计实战

电源管理单元(PMIC)是现代嵌入式系统的核心,负责能量的高效分配与系统状态的智能管理。其原理在于集成多个电压转换器、监控电路及通信接口,通过精密的反馈与控制环路,实现高效率和低噪声的电源输出。这项技术的核心价值在于显著降低系统复杂度、节省PCB面积并提升整体可靠性,广泛应用于智能手机、便携设备和物联网终端。以德州仪器TPS80032为例,这款全集成的PMIC解决方案完美诠释了上述优势。它通过高度集成的LDO稳压器群、高效的开关电源与电池充电管理,以及完整的USB OTG功能,为复杂应用处理器提供了从供电、

weixin_30666401的博客 435

STC3115电池监控芯片与STM32的集成应用解析

电池监控技术是现代便携式设备和物联网终端的核心需求之一,其核心在于精确测量电池的电量、电压和温度等关键参数。STC3115作为一款高精度电池电量监测芯片,通过混合计量技术(库仑计数与电压测量结合)实现了±3%的电量测量精度,特别适合3.6V锂离子/锂聚合物电池应用。其低功耗设计(休眠模式仅0.5μA)和内置温度补偿功能,使其在电池管理系统中表现优异。结合STM32F215RE微控制器的强大计算能力和丰富外设,可以进一步实现电池健康状态(SOH)分析和多级保护策略。这种技术组合广泛应用于智能穿戴、医疗设备和工

weixin_32349093的博客 297

STC3115电池监控芯片与STM32F745VG的高精度电池管理系统设计

电池管理系统(BMS)是确保锂离子电池安全高效运行的核心技术,其核心在于精确监测电池状态参数。现代BMS采用混合计量算法,结合库仑计数和电压测量两种方法的优势,STC3115芯片正是这一技术的典型代表。该芯片通过16位ADC实现±0.5%的电流测量精度,配合STM32F745VG微控制器的强大处理能力,可构建高精度电池监控系统。在便携式设备、储能系统等应用场景中,这种方案能实现±1%的电量测量精度,同时通过I2C接口和低功耗设计满足物联网设备的苛刻要求。系统集成时需特别注意电流检测电路和温度补偿算法的优化,

weixin_42524703的博客 308

ADP5350与PIC18F96J65构建智能电源管理系统

电源管理IC(PMIC)是现代嵌入式系统的核心组件,通过集成多路电压转换、电池管理和低功耗控制功能,显著提升系统能效比。其工作原理涉及DC-DC转换、动态电压调节等电力电子技术,在物联网终端和便携设备中具有关键应用价值。以ADP5350 PMIC为例,配合PIC18F96J65单片机可实现精确的电源轨控制、电池充放电管理和系统级低功耗优化。该方案通过I2C接口编程配置寄存器参数,支持充电状态机、动态电压调节等高级功能,特别适合需要严格电源时序控制的工业手持设备和医疗仪器。典型实现中,同步降压充电器效率可达9

weixin_29179311的博客 214

ADP5350与PIC18LF46K22构建智能电源管理系统

电源管理IC(PMIC)是现代嵌入式系统的核心组件,通过集成充电管理、电压转换和电量监测等功能,显著提升系统能效。ADP5350作为高性能PMIC,配合PIC18LF46K22低功耗MCU,可实现动态电压调节和智能功耗控制。该方案采用I2C通信接口和ADC采样电路,支持精确的电池计量和低功耗模式切换,特别适合医疗设备、工业传感器等电池供电场景。实测表明,这种架构可使设备续航延长15-20%,同时通过状态机设计和动态电压调节(DVS)技术优化能效。

weixin_30588675的博客 387

深入解析bq27750阻抗跟踪算法与充电管理,实现锂电池电量精准估算

电池管理系统是保障锂电池安全与续航的核心,其核心挑战在于如何精确估算电池的荷电状态。传统方法因电压非线性、内阻变化和容量衰减等因素,估算精度有限。阻抗跟踪算法通过将电池建模为电压源与内阻串联,动态学习并更新电池的化学容量和内阻表,从而在各种负载和温度下实现高精度估算。该技术对于提升设备续航预测可靠性、保障充电安全及延长电池寿命具有重要价值,广泛应用于智能手机、电动汽车和储能系统等领域。本文以德州仪器bq27750电量计芯片为例,深入剖析其预充电、维护充电等精细化充电管理策略,并详细解读其阻抗跟踪算法的原理、

weixin_29179311的博客 325

新能源汽车VCU、MCU、BMS三大核心技术深度解析

在新能源汽车领域,整车电子电气架构正经历从分布式向集中式的深刻变革。其核心控制原理依赖于多个电子控制单元(ECU)的协同工作,通过CAN/LIN等车载网络实现数据交换与指令传递,以实现对车辆动力、能量与状态的精准管理。这一技术体系的价值在于,它奠定了车辆高效、安全、智能运行的基础,是“软件定义汽车”理念得以落地的硬件基石。具体到工程实践中,整车控制器(VCU)、电机控制器(MCU)和电池管理系统(BMS)构成了传统分布式架构下的三大核心控制节点。VCU作为整车决策中枢,负责扭矩仲裁与能量管理;MCU作为驱动

weixin_34007886的博客 582

深入解析SOC芯片设计中DFT OCC与ATPG的协同优化策略

本文深入探讨了在复杂SOC芯片设计中,DFT(可测试性设计)的核心组件OCC(片上时钟控制器)与ATPG(自动测试向量生成)的协同优化策略。文章从基本原理出发,分析了OCC作为测试时钟管理者的关键作用,以及ATPG作为故障检测引擎的工作机制,并重点阐述了二者在测试架构选择、参数对齐、低功耗测试等场景下的协同方法与实战技巧,旨在实现更高的测试覆盖率与更低的测试成本。

efc123456的博客 1033

端侧视觉赋能手游自动化:YOLOv8+NCNN实现低风险挂机与广告拦截

本文提出一种基于端侧AI的移动游戏自动化解决方案,采用YOLOv8目标检测和NCNN推理框架,结合AutoJS实现"感知-决策-执行"闭环。方案通过轻量化模型训练、多分辨率适配和行为拟态优化,解决了传统脚本的适配性和风控问题。关键技术包括:构建游戏专属数据集、模型量化优化、广告拦截和挂机功能实现,具有本地运行、安全稳定等特点,为个人开发者提供了一套完整的自动化开发框架。

milk416666的博客 1263

在Ubuntu上通过Wine完美运行企业微信的详细指南

本文提供了在Ubuntu系统上通过Wine兼容层安装和运行企业微信的详细教程。针对官方未提供Linux版本的痛点,指南推荐使用Ubuntu Kylin团队优化打包的Wine环境,通过简单的命令行步骤即可完成部署,并涵盖启动、中文输入法配置、文件管理等常见问题的解决方案,帮助用户实现高效、稳定的办公沟通。

weixin_29306317的博客 229

深入解析Cuk、Zeta和Sepic拓扑:非隔离型开关电源的设计奥秘

本文深入解析了Cuk、Zeta和Sepic三种非隔离型开关电源拓扑的设计奥秘。它们均能实现升降压转换,但特性各异:Cuk拓扑输出反向电压,输入输出纹波极低;Sepic拓扑输出同极性电压,应用广泛;Zeta拓扑输出纹波小,适合精密供电。文章详细对比了其电路结构、工作原理、核心公式及选型指南,帮助工程师根据输入电压范围、输出极性及纹波要求,灵活选择最合适的拓扑方案。

weixin_28308325的博客 476

企业微信第三方应用014_企业微信5种第三方应用的安装方式_上架到应用市场_服务商后台点击安装测试_生成应用推广二维码安装---企业微信开发016

成员授权的意思就是,只要是这个成员扫码安装了这个应用,那么这个应用就只有这个成员可以用。安装的时候可以设置可见范围,这个地方可以设置整个公司或者是某个部门或者是某些人可以让这个应用来进行操作。创建了以后,这个二维码就可以发出来进行推广别人用户扫描了以后就可以把自己的企业微信给安装上对应的应用了。然后在对应的这个微信的企业后台就可以看到在第三方中有这个应用了。可以看到这个就是服务商的后台对应的一个应用,我们点击打开应用。可以看到这里有两个授权,一个是成员授权,一个是管理员授权。就可以去创建推广二维码了。

添柴程序猿的专栏 588

搭建自己的MQTT服务器,实现设备上云(Ubuntu+EMQX)

这篇文章教大家在ECS云服务器上部署EMQX,搭建自己私有的MQTT服务器,配置EMQX实现设备上云,设备数据转发,存储;服务器我采用的华为云的ECS服务器,系统选择Ubuntu系统。

2万+

【大模型】从0到1:DeepSeek + Coze API调用全攻略,企业,开发个人专属AI智能体使用详解,小白也能轻松上手

本文介绍了如何通过API将Coze智能体集成到自有系统中的完整步骤:1)获取API token和个人工作空间的space_id;2)通过GET请求获取bot_id;3)使用POST发起对话请求,需包含bot_id、user_id和问题内容;4)通过两次API调用异步获取响应消息。文章还解释了Coze采用异步处理机制的原因,并预告了下期将讲解Java调用Coze接口的实现方法。整个过程需要使用API工具进行调试,确保了系统集成的可行性。

qq_27246521的博客 822

某手短视频用户主页视频列表爬虫实战:从原理到完整实现

随着短视频平台的迅猛发展,某手(为保护平台隐私,本文以“某手”代指实际目标)已经成为国内最大的短视频社交平台之一,拥有数亿日活用户。对于数据分析师、内容创作者和市场营销人员而言,获取某个用户主页的视频列表具有重要的研究价值——无论是分析头部创作者的内容策略,还是监测竞品的发布频率与互动数据,爬虫技术都成为不可或缺的工具。然而,在2024-2025年的技术环境下,某手已经构建了多层次的反爬机制:包括接口签名加密、请求参数动态混淆、设备指纹检测、IP行为分析以及Web端无限滚动加载的异步数据获取方式。

2201_76125261的博客 540

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

深度学习工具包 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")

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: 32、刀具 - 工件柔度及模具镶件加工技术研究
下一篇: 21、深入探索用于软件质量保证的敏捷软件开发方法
lambda
博客等级 码龄23年 49粉丝 1303原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值