TMS320F2802x GPIO与AIO寄存器级编程实战指南

TMS320F2802x GPIO与AIO寄存器深度解析与实战配置指南 在嵌入式系统开发中,GPIO(通用输入输出)是微控制器与外部世界交互的基础接口,其配置直接关系到系统的稳定性和可靠性。GPIO的工作原理涉及引脚复用、方向控制、内部上拉/下拉电阻管理以及输入信号滤波等核心机制。深入理解这些原理,对于实现高效、可靠的硬件控制至关重要,尤其是在工业控制、电机驱动等对实时性要求严苛的领域。其技术价值在于,通过精细的寄存器配置,开发者可以优化信号完整性、降低功耗并实现灵活的中断与唤醒机制。例如,合理配置`GPxPUD`上拉禁用寄存器,能有效防止输入引脚因电磁干扰而产生电平漂移,确保 阅读详情

1. 项目概述

在嵌入式开发领域,尤其是电机控制、数字电源这类对实时性和可靠性要求极高的应用中,对微控制器(MCU)的每一个I/O引脚进行精确控制是基本功。很多工程师习惯了使用厂商提供的驱动库函数,比如 GPIO_setPinConfig() 或者 GPIO_writePin() ,这确实能快速上手。但当你需要实现一些高级功能,比如在低功耗模式下通过特定引脚唤醒系统,或者需要精确控制上拉电阻以优化功耗和抗干扰能力时,仅仅调用库函数就显得力不从心了。这时,你必须深入到寄存器层面,理解每一个控制位的含义。

TMS320F2802x系列作为TI C2000平台中广泛应用的一款微控制器,其GPIO和模拟I/O(AIO)子系统设计得非常灵活且强大。它的强大之处在于,几乎每个引脚的功能、方向、电气特性都可以通过一组精心设计的寄存器进行配置。然而,官方技术参考手册(TRM)内容浩如烟海,寄存器描述分散,对于新手甚至是有经验的工程师来说,快速掌握其精髓并避免踩坑并非易事。

本文将从实际项目开发的角度出发,抛开库函数的“黑箱”,直接聚焦于GPIO和AIO的核心控制寄存器。我会结合自己多年在电机驱动板卡设计中的经验,不仅告诉你每个寄存器位是干什么的,更会重点解释“为什么要这么配置”以及“配置错了会怎样”。我们将深入探讨GPIO上拉禁用寄存器(GPBPUD)、模拟I/O复用选择寄存器(AIOMUX1)、方向控制寄存器(AIODIR)以及数据寄存器(GPADAT/GPBDAT)等关键组件,并穿插讲解EALLOW保护机制、低功耗唤醒配置等高级主题。目标是让你读完本文后,能够自信地进行寄存器级编程,优化你的硬件设计,并有效排查相关的硬件问题。

2. GPIO与模拟I/O系统架构解析

在深入每个寄存器之前,我们必须先建立起对TMS320F2802x I/O系统整体架构的认知。这就像看地图前先了解地形,能让你后续的每一步操作都心中有数。

2.1 物理引脚与逻辑映射关系

TMS320F2802x的I/O引脚主要分为两大类: GPIO(通用输入/输出) 和 AIO(模拟输入/输出) 。需要注意的是,许多物理引脚是复用的,即一个物理引脚既可以作为GPIO,也可以作为某个外设功能(如PWM、ADC、SCI)的引脚,甚至在某些型号上可以作为AIO。

  • GPIO Port A (GPIO0-GPIO31) :这是主要的通用I/O端口,数量多,功能复用最复杂。每个引脚都通过 GPAMUX1/2 寄存器来选择其功能模式(GPIO或特定外设)。
  • GPIO Port B (GPIO32-GPIO38) :端口B的引脚数量较少,其配置寄存器独立于Port A,例如有自己的复用选择寄存器 GPBMUX1 和上拉控制寄存器 GPBPUD 。
  • AIO (AIO2, AIO4, AIO6, AIO10, AIO12, AIO14) :这是一组特殊的引脚,它们 只能 用作数字输入/输出,但 不 支持外设复用功能。它们的优势在于,当GPIO引脚被配置为ADC输入等模拟功能时,AIO引脚可以作为额外的数字I/O来使用,提供了设计的灵活性。AIO的配置完全独立于GPIO寄存器组,使用 AIOMUX1 、 AIODIR 等专属寄存器。

理解这个映射关系至关重要。例如,当你需要更多数字I/O但GPIO已被ADC占满时,AIO就是你的备用资源。配置时,你必须清楚你操作的是哪个“域”的寄存器,张冠李戴会导致配置无效。

2.2 寄存器访问框架与EALLOW保护机制

TMS320F2802x的寄存器分布在不同的外设帧(Peripheral Frame)中,这影响了它们的访问速度和保护方式。根据你提供的资料:

  • Peripheral Frame 1 (地址 0x6F80 - 0x6FFF) : GPIO控制寄存器 所在区域。这个区域支持16位和32位访问。 关键点 :对Frame 1寄存器的背靠背写操作会产生1个周期的延迟(1-cycle stall)。在编写对时序要求极高的代码(例如高速切换GPIO)时,需要留意这个特性,必要时插入 NOP 指令或调整代码顺序。
  • Peripheral Frame 2 (地址 0x7010 - 0x702F等) : 系统控制寄存器 (如PLL、看门狗、时钟控制)所在区域。这个区域 只允许16位访问 。尝试进行32位访问会被忽略,可能导致写入失败或读取到无效数据,这是一个常见的隐蔽错误来源。

EALLOW保护机制 是C2000系列的一个核心安全特性。为了防止跑飞的程序意外修改关键系统配置(比如时钟、Flash等待周期、GPIO复用设置),TI将许多重要寄存器标记为“EALLOW保护”。在芯片复位后,默认处于保护状态。此时,CPU尝试写入这些寄存器是无效的(写入被忽略,但读取正常)。

要修改它们,你必须执行 EALLOW 汇编指令(在C语言中通常封装为宏 EALLOW ),这将设置状态寄存器ST1中的EALLOW位。修改完成后,应立即执行 EDIS 指令(宏 EDIS )关闭写权限,重新锁住寄存器。在调试时,通过JTAG(如CCS的调试器)访问会绕过此保护,这解释了为什么在线调试时能改,但独立运行时却不行。你提供的列表中, GPAMUX1 、 GPBPUD 、 AIOMUX1 、 GPIOLPMSEL 等都属于EALLOW保护范围。

实操心得 :养成好习惯,在修改任何寄存器前,先查手册或头文件确认其是否受EALLOW保护。对于受保护的寄存器,使用 EALLOW 和 EDIS 宏将其包裹。一个典型的代码片段如下:

EALLOW; // 解除保护
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // 将GPIO0配置为EPWM1A功能
GpioCtrlRegs.GPBPUD.bit.GPIO32 = 1; // 禁用GPIO32的内部上拉
EDIS; // 重新启用保护

忘记 EDIS 虽然不会导致立即错误,但会降低系统抗干扰能力,是不规范的做法。

3. 核心寄存器

深入TI C2000 DSP的硬件保护链:从CMPSS比较器到TZ封波的信号路径全解析 本文深入解析TI C2000 DSP硬件保护链的设计与实现,重点介绍从CMPSS比较器到PWM封波的信号路径。通过内部DAC阈值生成、比较器同步滤波、事件路由选择及PWM封波逻辑等关键环节,实现纳秒级保护响应,适用于电机控制等需要高速保护的场景。特别探讨了逐波限流(CBC)与一次性关断(OST)的差异化设计及优化建议。 阅读详情

相关推荐

VGUS 串口屏 0x80-0x83 指令实战:3 步实现变量读写与寄存器控制

本文深入解析VGUS串口屏的0x80-0x83指令集,详细介绍了寄存器读写与变量存储器的操作实践。通过代码示例和场景演示,帮助开发者掌握底层通信协议,实现高效的HMI交互系统,适用于工业控制和智能设备开发。

hideto 585

Unity动画系统Mecanim深度解析:从核心架构到性能优化实战

在游戏开发中,动画系统是赋予角色生命、提升沉浸感的核心模块。其原理基于数据驱动与状态机逻辑,通过分离动画数据与游戏逻辑,实现高效的可视化创作与程序控制。这一架构的技术价值在于大幅提升了动画制作的迭代效率和团队协作流畅度,使得复杂的状态切换、动作融合与角色重定向成为可能。典型的应用场景包括角色移动、战斗连招、表情交互以及过场动画等,是构建高质量3D游戏体验的基石。本文聚焦于Unity的Mecanim系统,深入剖析其Clip、Controller、Avatar、Component四要素构成的工作流,并针对动画重

hideto 514

2.9元喇叭+1元蓝牙模块:低成本DIY蓝牙音箱制作全流程

蓝牙音频技术通过无线传输实现设备间的音频数据通信,其核心原理基于2.4GHz频段的射频信号调制解调。在电子制作领域,Class D功放因其高效率、低功耗的特点成为便携音频设备的首选方案。通过合理的电路设计和元件选型,即使是低成本元件也能实现不错的音质效果。本项目以2.9元喇叭和1元蓝牙模块为基础,详细介绍了从元件测试、电路设计到组装调试的全过程,涵盖了蓝牙5.0协议应用、电源管理方案以及音频优化技巧,为电子爱好者提供了一个极具性价比的入门实践案例。

hideto 489

系统分析师 2026版备考:3个月70小时通关策略与3类真题解析

本文详细解析系统分析师2026版备考策略,提供3个月70小时高效通关方案,涵盖综合知识、案例分析和论文写作三类真题解析。重点分享科学时间分配、高频考点突破及应试技巧,帮助考生系统掌握软件工程、系统架构等核心知识,提升通过率。

hideto 393

嵌入式笔试面试题库 250 题|13 章从 C 语言到 FreeRTOS,每题带追问

面试里有两类问题。第一类问「static 有几个作用」,第二类问「串口丢数据你怎么查」。第一类决定你能不能进二面,第二类决定二面之后还有没有下文。 这份合并版 250 题、13 章,把上篇与下篇收在一本: · 上篇 130 题(一至六章):单片机与体系结构、C 语言关键字、指针与内存、位运算与寄存器、中断与并发、编译链接与内存布局; · 下篇 120 题(七至十三章):GPIO 与时钟、定时器与 ADC、串口 I2C SPI、DMA 与中断、FreeRTOS、通信协议与总线、项目与工程实践。 每题结构一致:一段分点参考答案(①②③ 给要点骨架),紧跟一条追问,写明面试官往下会挖哪一层。答案尽量落到三层——现象、根因、验证方法。比如「PWM 出不来波形」,不只列六项检查顺序,还说清为什么 TIM1 容易漏掉 MOE 这一位、怎么用示波器确认。 三个附录:A 是 40 天复习路线(每天 40 分钟,标每天题量与当章重点);B 是十三章自测评分表(现象 / 根因 / 验证三列打分);C 是按现象查题的排障索引,遇到具体问题直接定位到题号。 交付:Word 可编辑版 + PDF 打印版(A4 / 70 页)+ 使用说明。题号连续 Q001–Q250,目录与附录各一套,跨篇追问能顺着查。 说明:寄存器位定义与分频关系按 STM32F103 系列整理,换 F4/F7/G0 需按对应手册核对;FreeRTOS 部分按 10.x 之后接口描述。题库不替代动手调试。

政府科技管理者如何提升科技成果评估的准确性与透明度?.docx

政府科技管理者如何提升科技成果评估的准确性与透明度?

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。

ATE测试基础——直流参数测试

芯片测试在发展过程中诞生了许多术语,初次接触的人大部分都会被绕晕。因此为方便广大读者理解,在开始介绍测试项之前,需要对测试领域的名词进行解释。还有部分较为抽象的内容,需要略作展开。DUT——Device Under Test,正在被测试的器件Pin——器件引脚,信号引脚分为输入,输出,三态和双向四类,负责与外界进行信息交互;电源引脚分为电源和地两类,结构与信号引脚不同,负责给器件内部运行和外部输出提供电平。输入:在外部信号和器件内部逻辑之间起缓冲作用的信号输入通道;

你骄傲地飞远的博客 1万+

DVWA全级别详细通关教程

dvwa全级别详细通关教程,暴力破解,命令注入,CSRF跨站请求伪造,文件包含,文件上传​,SQL注入,XSS

m0_62063669的博客 1万+

从牛顿冷却定律到热传导方程:一维热传导方程的物理直觉与数学推导

本文从牛顿冷却定律出发,结合傅里叶热传导定律和能量守恒原理,系统推导了一维热传导方程的数学形式。通过微元分析和物理直觉,揭示了温度随时间变化与空间二阶导数之间的关系,并阐释了热扩散率α的物理意义。文章还探讨了方程的边界条件、数值解法及其在材料科学和工程中的应用,为理解热量传递提供了清晰的物理图像和数学框架。

palm99的专栏 837

深度学习|卷积神经网络

介绍卷积神经网络基本理论,包括卷积层、池化层和全连接层,并阐述LeNet卷积神经网络的构建过程。

weixin_58243219的博客 5722

【科研学习】Demo3D2015安装包以及图文安装步骤

安装包 点击下图的.exe文件,安装 不需要解压,打开注册机 如下图: 点击上图的.exe文件,出现下图 先点击 patch 打开安装目录下的Demo3D.licensing.dll文件,然后点击Generate,生成dvt-license文件,保存即可 打开安装完成的Demo3D 2015(64-bit),一般破解没完成的,会出现一个request a license 的问题,点击find license 的那一行 点击后找到自己Generate,生成dvt

KaelCui的博客 1万+

Kafka 入门篇(一)

初识 Kafka 什么是 Kafka Kafka 的基本术语 Kafka 的特性(设计原则) Kafka 的使用场景 Kafka 的消息队列 点对点模式的消息队列 发布-订阅模式的消息队列 Kafka 系统架构 核心 API Kafka 为何如此之快 broker 端配置 broker.id port zookeeper.connect log.dirs num.recovery.threads.per.data.dir auto.create.topics.enable topic默认配置 num.par

1232

【人工智能】在 cc-switch 中配置 AnyRouter 接入 Claude Code 完整指南

本文介绍了在cc-switch工具中配置AnyRouter中转服务以接入Claude Code的详细步骤。主要内容包括:1) 准备API令牌和端点地址;2) 填写基础信息和模型参数;3) 保存配置并重启终端生效;4) 常见问题排查方法。重点强调了API地址格式、模型ID准确性以及配置写入的必要性,帮助用户顺利完成中转服务配置,实现Claude 4.5版本的正常使用。

奶爸的编程之路,也就一周冷个三天 3103

多线程开发的基本概念

在Android开发中,我们常常会遇到多线程开发的需求。由于Android中的,我们不能在主线程处理耗时逻辑,否则会导致卡顿,甚至出现ANR(应用无响应)等异常情况。因此,我们需要将网络请求等耗时操作放到中去执行,完成后再更新UI。多线程开发因此成为Android开发中的一个重要部分。随着Android开发技术的不断进步,从早期的使用Handler,到后来的RxJava,再到如今的Kotlin协程,切换线程以及并发编程的代码写起来是越来越简洁了。

喻志强的博客 1018

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

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

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

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

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

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: 2025年深圳中考录取线解析与志愿填报策略
下一篇: AI工程四根承重柱:数据契约、可验证抽象、可观测性、确定性思维
hidetobj
博客等级 码龄19年 16粉丝 301原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值