ESP32S3学习——i2c,点亮0.96寸oled

ESP32配置0.96寸OLED显示屏 编译报错:libraries\Adafruit-GFX-Library-master\Adafruit_GrayOLED.h:30:32: fatal error: Adafruit_I2CDevice.h: No such file or directory为开发板 ESP32 Dev Module 编译时出错。解决方法:如果使用较早版本的 Arduino IDE1.8.10 之前,请找到并安装 Adafruit_BusIO,较新版本会自动处理此先决条件。在您的 Arduino IDE 中,转到。 阅读详情
AI摘要

本文介绍了ESP32-S3芯片上的I2C驱动程序,包括概述、功能、配置流程、主机和从机模式通信、中断处理、自定义配置和错误处理。示例代码展示了如何初始化I2C、读写寄存器以及删除驱动程序。此外,还提及了OLED显示屏的驱动知识,如初始化、地址设置和清屏操作。

芯片:esp32s3

开发环境:espidfv4.4

一、官网相关资料(哎嘿嘿,中文的I2C 驱动程序 - ESP32-S3 - — ESP-IDF 编程指南 v4.4.2 文档)

1)概述

ESP32-S3 有两个 I2C 控制器(也称为端口),负责处理在 I2C 两根总线上的通信。每个控制器都可以设置为主机或从机。例如,可以同时让一个控制器用作主机,另一个用作从机。

2)功能

I2C 驱动程序管理在 I2C 总线上设备的通信,该驱动程序具备以下功能:

  • 在主机模式下读写字节

  • 支持从机模式

  • 读取并写入寄存器,然后由主机读取/写入

3)如何使用

  1. 配置驱动程序 - 设置初始化参数(如主机模式或从机模式,SDA 和 SCL 使用的 GPIO 管脚,时钟速度等)

  2. 安装驱动程序- 激活一个 I2C 控制器的驱动,该控制器可为主机也可为从机

  3. 根据是为主机还是从机配置驱动程序,选择合适的项目

    1. 主机模式下通信 - 发起通信(主机模式)

    2. 从机模式下通信 - 响应主机消息(从机模式)

  4. 中断处理 - 配置 I2C 中断服务

  5. 用户自定义配置 - 调整默认的 I2C 通信参数(如时序、位序等)

  6. 错误处理 - 如何识别和处理驱动程序配置和通信错误

  7. 删除驱动程序- 在通信结束时释放 I2C 驱动程序所使用的资源

4)配置流程

设置 i2c_config_t 结构中的几个参数
  • 设置 I2C 工作模式 - 从 i2c_mode_t 中选择主机模式或从机模式

  • 设置 通信管脚

    • 指定 SDA 和 SCL 信号使用的 GPIO 管脚

    • 是否启用 ESP32-S3 的内部上拉电阻

  • (仅限主机模式)设置 I2C 时钟速度

  • (仅限从机模式)设置以下内容:

    • 是否应启用 10 位寻址模式

    • 定义 从机地址

然后,初始化给定 I2C 端口的配置,请使用端口号和 i2c_config_t 作为函数调用参数来调用 i2c_param_config() 函数。在此阶段,i2c_param_config() 还将其他 I2C 配置参数设置为 I2C 总线协议规范中定义的默认值。有关默认值及修改默认值的详细信息

5) 时钟选择

增加了 时钟源分配器,用于支持不同的时钟源。时钟分配器将选择一个满足所有频率和能力要求的时钟源(如 i2c_config_t::clk_flags 中的要求)。

当 i2c_config_t::clk_flags 为 0 时,时钟分配器将仅根据所需频率进行选择。如果不需要诸如 APB 之类的特殊功能,则可以将时钟分配器配置为仅根据所需频率选择源时钟。为此,请将 i2c_config_t::clk_flags 设置为 0。有关时钟特性,请参见下表

时钟名称 时钟频率 SCL 的最大频率 时钟功能
XTAL 时钟 40 MHz 2 MHz /
RTC 时钟 20 MHz 1 MHz I2C_SCLK_SRC_FLAG_AWARE_DFS, I2C_SCLK_SRC_FLAG_LIGHT_SLEEP

时钟功能是嘛

对 i2c_config_t::clk_flags 的解释如下:

  1. I2C_SCLK_SRC_FLAG_AWARE_DFS:当 APB 时钟改变时,时钟的波特率不会改变。

从I2C地址之谜到点亮屏幕:ESP32-S3与SH1106 OLED的深度对话 本文深入解析ESP32-S3与SH1106 OLED屏幕的I2C通信问题,重点解决地址配置错误、引脚选择及协议差异导致的屏幕不亮问题。通过详细对比SH1106与SSD1306的差异,提供硬件调试与兼容性解决方案,帮助开发者快速点亮屏幕并优化显示性能。 阅读详情

相关推荐

嵌入式人工智能ESP32(7-OLED显示中英文)

硬件驱动开发专注于实现硬件的功能。而最难的是芯片设计,他要为硬件功能的实现提供芯片级的支持,就是利用MOS管的开关作用(门电路)实现芯片的底层功能,比如带进位加法器实现,RS触发器实现存储功能等,同学们在数字电路课程中也有一定的了解,这里我们还是回到OLED实验上来吧。由于ESP32开发板的RAM和ROM无法和树莓派媲美,我们不得不改变一下文件存放的位置,如果把所有的文件都放到根目录/下面,文件一多不太好管理,我们还是把各自的驱动放到各自的目录里面。注意OLED使用的引脚,如果不是22和21,请更换。

u010152658的博客 2732

ESP32S3点亮0.96寸OLED:从I2C协议到SSD1306驱动实战

嵌入式显示系统的核心不在于堆砌代码,而在于对通信协议与底层驱动机制的透彻理解。I2C总线作为一种仅需两根信号线即可实现多设备通信的串行协议,凭借其极简的接线和可靠的寻址机制,成为小尺寸显示屏与微控制器交互的理想选择。理解起始条件、地址帧与应答信号的时序关系,是掌握任何I2C设备驱动的关键。SSD1306作为0.96寸OLED模组的常见控制芯片,内置显存与电荷泵,通过I2C接口即可完成像素数据的写入,配合ESP32S3的硬件外设与Arduino生态,能够快速实现文字、图形及传感器数据的可视化。在环境监测、低功

weixin_29171087的博客 242

ESP32S3与SSD1306:用I2C点亮0.96寸OLED完整指南

在嵌入式系统开发中,总线通信协议是连接主控与外设的桥梁。I2C作为最基础且应用广泛的双线制通信协议,仅需数据线SDA和时钟线SCL即可挂载多个从设备,其开漏结构与上拉电阻机制构成了通信的物理基础。理解I2C的时序逻辑,如起始条件、地址帧与应答位,是解决设备通信问题的关键。对于显示需求,SSD1306驱动的0.96寸OLED凭借自发光、低功耗、高对比度等优势,成为物联网终端、智能仪表和DIY项目的理想选择。借助ESP32S3的硬件I2C外设与Arduino生态中的U8g2、Adafruit SSD1306等成

weixin_32349093的博客 228

ESP32S3驱动0.96寸OLED屏SPI接口完整指南

嵌入式显示技术中,微控制器与显示屏的接口通信是基础且关键的环节。SPI作为一种高速同步串行协议,常用于驱动小尺寸OLED屏幕。本文从SPI通信原理与OLED驱动芯片识别切入,讲解ESP32S3与0.96寸屏幕的连接方式,重点分析SSD1306与SH1106的驱动差异,并对比硬件SPI与软件SPI的适用场景。通过Arduino IDE结合U8g2库的配置,展示从初始化到显示Hello World的完整流程,同时系统排查点不亮、花屏、上传失败等常见故障。内容覆盖引脚映射、供电复位、总线降频等工程细节,适用于物联

weixin_34174105的博客 717

ESP32S3驱动0.96寸OLED:I2C协议与SSD1306实战解析

在嵌入式开发中,I2C总线是连接主控与外设的常见桥梁,仅需两根线即可完成多设备通信。理解其地址、ACK及控制字节等原理,是排查通信故障的基础。OLED显示屏作为典型I2C从设备,广泛应用于智能硬件的人机交互。以0.96寸OLED为例,手把手演示如何用ESP32S3通过I2C协议驱动SSD1306芯片,并分享完整代码与实战踩坑经验,帮助开发者从底层原理到工程应用全面掌握。

weixin_30363285的博客 290

ESP32-S3驱动SH1106 OLED:从零点亮1.3寸屏的避坑指南

本文详细介绍了ESP32-S3微控制器驱动SH1106 OLED屏幕的完整流程,包括硬件连接、开发环境搭建、I2C地址识别、初始化配置及常见问题解决方案。重点提供了引脚定义、库安装调试和中文显示等实用技巧,帮助开发者快速点亮1.3寸屏并规避常见陷阱。

a1b2c3d的博客 1040

ESP32-S3驱动0.96寸OLED单色屏(IIC接口)移植与显示实战

本文详细介绍了ESP32-S3微控制器驱动0.96寸OLED单色屏的完整实战流程。内容涵盖基于SSD1306驱动芯片的硬件IIC与软件IIC两种连接方式、驱动库的工程移植方法,以及显示英文字符串和中文汉字的代码示例,并提供了常见问题的调试心得,帮助开发者快速实现信息显示功能。

weixin_32005771的博客 284

ESP32驱动0.96寸OLED入门:SSD1306+I2C+MicroPython实战

OLED显示屏是嵌入式人机交互的基础输出设备,其核心原理基于驱动芯片(如SSD1306)控制显存映射与I2C/SPI协议通信;技术价值在于低成本、低功耗、高响应,可作为硬件链路验证的‘黄金标尺’;广泛应用于ESP32等MCU的传感器数据显示、调试信息输出及小型GUI构建。本文聚焦0.96寸SSD1306 OLED模块,结合MicroPython开发环境,详解I2C物理连接、固件烧录、驱动原理与中文显示等工程实践要点,助力零基础开发者快速实现稳定点亮与动态可视化。

weixin_29192211的博客 224

Grove OLED 0.96寸显示屏应用指南:从I2C/SPI驱动到ESP32项目实战

在嵌入式开发中,OLED显示屏因其自发光、高对比度和低功耗特性,成为显示传感器数据、系统状态和用户界面的理想选择。其核心原理是通过I2C或SPI等串行通信协议与主控芯片(如Arduino、ESP32)连接,由驱动芯片(如SSD1306)控制像素点阵。这项技术为物联网设备、便携式仪表和交互式原型提供了直观的信息输出能力,极大地提升了项目的完成度和用户体验。本文聚焦于Grove生态的0.96寸OLED模块,深入解析其硬件接口选择、驱动库配置(如Adafruit_SSD1306和U8g2),并演示如何与ESP32

weixin_29188043的博客 242

【史上最全面esp32教程】oled显示篇

esp32-arduino Oled屏幕的使用

m0_62599305的博客 1万+

ESP32 IDF驱动0.96寸OLED:SSD1306初始化与I2C调优指南

在嵌入式开发中,微控制器与显示模组的驱动是常见基础任务。I2C总线因引脚少、协议简单,成为OLED屏幕等外设最经典的接口标准。SSD1306作为0.96寸OLED最常用的驱动芯片,其初始化序列、寻址模式和显存布局共同决定了显示效果是否正常。在ESP-IDF框架下,开发者需要完整掌握从I2C设备枚举、寄存器配置到帧缓冲管理的工程化流程。这类技术广泛用于调试信息面板、传感器数值显示及网络状态指示等场景,能够大幅提升原型开发效率。本文以HS96L03W2C03模组为对象,逐步讲解在ESP32平台上完成OLED驱动

weixin_29194817的博客 262

股票分时数据获取-东方财富

获取下股票分时数据,分时均价下线,分时成交额等,用于量化t0交易条件还是很不错了的。

meiaoxue1234的博客 1万+

(MATLAB)一维信号峰值检测findpeaks

一维信号波峰波谷检测,峰值、峰宽、到达时间计算。MATLAB自带的findpeaks函数能完成这一任务,在这里分享其基本用法与特殊用法。

HPC_ZY 2万+

大连理工大学中文情感词汇本体库(含情绪分析代码)

中文文本数据的情绪计算昨天如何对微博推文进行情绪分析(细粒度情感分析)介绍了英文的NRC情绪词典。虽然支持中文,但由于制作问题,导致并不完全适应中文场景。今天介绍大连理工大学中文情感...

大邓和他的Python 4万+

EDKII实战:手把手调试PciHostBridge.c,看UEFI如何分配你的PCIe设备资源(IO/Memory空间)

本文深入解析EDKII中PciHostBridge.c模块的工作原理,详细指导如何调试PCIe设备资源分配(IO/Memory空间)。通过实战案例展示UEFI环境下Root Bridge初始化、地址空间转换及协议安装等核心流程,提供常见问题排查方法与性能优化建议,帮助开发者解决PCIe设备兼容性问题。

weixin_29201933的博客 208

【AI 赋能:Python 人工智能应用实战】16. BERT微调实战:中文新闻分类全流程(附模型蒸馏+ONNX部署完整代码)

中文新闻分类是NLP领域的经典实用任务,BERT模型凭借双向上下文建模能力,能有效解决中文歧义与长文本依赖问题,但存在推理速度慢、资源占用高的痛点。本文以THUCNews中文新闻数据集为核心,提供从数据预处理、BERT微调、模型蒸馏到生产部署的全流程实操指南。首先详解THUCNews的多编码读取与清洗(解决gbk/utf-8兼容问题);然后实现BERT微调,加入早停机制与混淆矩阵可视化,验证准确率达93.8%;接着用DistilBERT完成模型蒸馏,在仅损失0.6%准确率的前提下,将推理速度提升2.7倍。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1098

代码复现1——Matterport3d数据集下载

进入“Dataset Download”部分,下载申请书,填写之后发送到指定邮箱(matterport3d@googlegroups.com),之后会收到回信,回信中附有一个download_mp.py的脚本文件。,大小约15G,并不是所有的Mp3d datasets,所有大小约1.3T。下载完成后如下图所示:我这边显示大小为16.1G。

qq_44100524的博客 8054

多物理场耦合仿真-主题032-电磁-流体耦合

电磁-流体耦合,即磁流体动力学(MHD, Magnetohydrodynamics),是研究导电流体在电磁场中运动规律的学科,涉及电磁场与流体力学的深度耦合。本主题系统阐述磁流体动力学的基本理论、控制方程和数值方法。首先介绍MHD的基本概念和物理基础,包括导电流体的性质、电磁场基本方程;然后详细推导MHD控制方程组,包括连续性方程、动量方程、能量方程和电磁场方程;接着讨论MHD流动的特征参数,如Hartmann数、磁雷诺数、相互作用参数等;最后通过六个典型工程案例展示MHD分析的实际应用,包括电磁泵、磁流体

2401_87715305的博客 425

【系统分析师】写作框架:软件设计模式及其应用

本文围绕"软件设计模式及其应用"展开论述。首先介绍了近三年参与的某软件开发项目背景及个人承担的系统设计工作。其次系统阐述了设计模式的三大分类:创建型(如工厂方法、单例模式)、结构型(如适配器、装饰器模式)和行为型(如观察者、策略模式),重点分析了各类模式的特点和典型应用场景。最后结合项目实践,详细说明了采用的三种设计模式的具体实施过程及效果,包括提高代码复用性、降低耦合度等优势。文章还总结了项目经验,指出存在的不足及改进方向,强调合理运用设计模式对构建高质量软件系统的重要性。全文通过理论

数据知道的博客 5062

汉书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&#39;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(&#39;DeepLearnToolbox&#39;));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(&#39;state&#39;,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&#39;); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand(&#39;state&#39;,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 = &#39;sigm&#39;;%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, &#39;Too big error&#39;);```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(&#39;state&#39;,0)sae = saesetup([784 100]);sae.ae{1}.activation_function = &#39;sigm&#39;;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)&#39;)% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;;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, &#39;Too big error&#39;);```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x&#39;,28,28,60000))/255;test_x = double(reshape(test_x&#39;,28,28,10000))/255;train_y = double(train_y&#39;);test_y = double(test_y&#39;);%% 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&#39;ll get around 1.2% errorrand(&#39;state&#39;,0)cnn.layers = { struct(&#39;type&#39;, &#39;i&#39;) %input layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 6, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 2) %sub sampling layer struct(&#39;type&#39;, &#39;c&#39;, &#39;outputmaps&#39;, 12, &#39;kernelsize&#39;, 5) %convolution layer struct(&#39;type&#39;, &#39;s&#39;, &#39;scale&#39;, 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, &#39;Too big error&#39;);```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(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex2 neural net with L2 weight decayrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex3 neural net with dropoutrand(&#39;state&#39;,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, &#39;Too big error&#39;);%% ex4 neural net with sigmoid activation functionrand(&#39;state&#39;,0)nn = nnsetup([784 100 10]);nn.activation_function = &#39;sigm&#39;; % 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, &#39;Too big error&#39;);%% ex5 plotting functionalityrand(&#39;state&#39;,0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);%% 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(&#39;state&#39;,0)nn = nnsetup([784 20 10]); nn.output = &#39;softmax&#39;; % 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, &#39;Too big error&#39;);```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

上一篇: ESP32——PCNT 驱动EC11
下一篇: ESP32S3学习——SPI
HandBAI
博客等级 码龄5年 27粉丝 23原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值