1.从电平到RISC-V:单片机与嵌入式处理器入门指南

RISC-V CH32V203 单片机定时器中断实验 沁恒 RISC-V 32 位单片机定时器中断实验 阅读详情

摘要:本文从计算机底层基础出发,系统讲解单片机与嵌入式处理器的核心概念。内容涵盖电平与二进制表示、单片机的定义与组成、计算机内核的五大部件与存储结构,并重点对比51单片机与STM32的差异,深入介绍ARM公司的发展历程、ARM处理器的分类以及RISC精简指令集技术,最后简要介绍开放指令集架构RISC-V及其应用前景。

一、电平

在计算机体系里所有存储运算都是以二进制(0/1)方式进行的

对比:

51单片机高电平:高5V

STM32高电平:3.3V

二、什么是单片机

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。

三、计算机内核

小小插入一下计算机组成(辅助理解MCU结构)

计算机之父冯诺依曼提出了计算机组成的五大部分:输入设备、输出设备、存储器、运算器、控制器

~五部分之间的关系


~三级存储结构

四、51单片机(51内核)和STM32(ARM内核)

51:内核 使用了51内核的单片机统称为51单片机 8位;STC32为32位

  • STM32

    ST:意法半导体(公司)

    M:微控制器微处理器

    32:32位单片机

    内核:ARM内核

五、谈谈什么是ARM

1.ARM是一家公司

Acorn时期


ARM成立前的历史可追溯至45年前。1978年,由Chris Curry及Hermann Hauser共同创立Acorn Computers。这家新创公司获得建构及生产BBC Micro的权利。这项英国政府计划的目标是让英国每间教室都设置电脑。Steve Furber教授及Sophie Wilson在这项计划中,设计出史上第一款ARM处理器ARM1。
这款处理器能够高效执行在Acorn电脑上运作的程序指令,例如文字处理、电子表格计算及图形渲染,为ARM应用于各式各样的技术设备和市场的现代处理器奠定基础。[11]
不过Acorn在1980年代中期遭遇财务困难,因此由Olivetti集团收购。Hauser在Olivetti集团担任研究副总裁一职,但很快就离职。Furber及Wilson则继续打造下一代ARM处理器,也就是ARM2核心。

ARM成立

Acorn剥离了ARM部门,ARM于1990年11月以Advanced RISC Machines Ltd.为名正式成立为公司,这是由Acorn Computers、苹果电脑(Apple Computer,现为Apple Inc.)及VLSI Technology(现为恩智浦半导体公司,NXP Semiconductors N.V)共同创立的合资企业。公司由12名ARM架构设计人员创立:Jamie Urquhart、Mike Muller、Tudor Brown、Lee Smith、John Biggs、Harry Oldham、Dave Howard、Pete Harrod、Harry Meekings、Al Thomas、Andy Merritt及David Seal。Robin Saxby爵士于1991年加入公司担任首任董事长暨执行长,在剑桥郡(Cambridgeshire)的I日火鸡舍率领团队改变计算领域。

2.一种处理器的统称

A:高性能的领域 手机平板

R:实时性高的领域 智能驾驶 航空航天

M:微控制器 微处理器领域

3.一种技术

体系结构


1 CISC(Complex Instruction Set Computer,复杂指令集计算机)
在CISC指令集的各种指令中,大约有20%的指令会被反复使用,占整个程序代码的80%。而余下的指令却不经常使用,在程序设计中只占20%。


2 RISC(Reduced Instruction Set Computer,精简指令集计算机)
RISC结构优先选取使用频率最高的简单指令,避免复杂指令;将指令长度固定,指令格式和寻址方式种类减少;以控制逻辑为主,不用或少用微码控制等


RISC体系结构应具有如下特点:


1采用固定长度的指令格式,指令规整、简单,基本寻址方式有2~3种。
2使用单周期指令,便于流水线操作执行。
3大量使用寄存器,数据处理指令只对寄存器进行操作,只有加载/存储指令可以访问存储器,以提高指令的执行效率。除此以外,ARM体系结构还采用了一些特别的技术,在保证高性能的前提下尽量缩小芯片的面积,并降低功耗;
4所有的指令都可根据前面的执行结果决定是否被执行,从而提高指令的执行效率。
5可用加载/存储指令批量传输数据,以提高数据的传输效率。
6可在一条数据处理指令中同时完成逻辑处理和移位处理。
7在循环处理中使用地址的自动增减来提高运行效率。

六、RISC-V

RISC-V是一种开放的指令集架构(ISA),由加州大学伯克利分校的研究团队于2010年首次发布,基于精简指令集计算(RISC)原则。作为一个开源标准,RISC-V允许任何个人或组织自由使用、修改和扩展,无需支付专利费用,其设计目标是提供一个简单、可扩展且灵活的指令集,适用于从微控制器到高性能计算在内的广泛应用领域。RISC-V的开放性和灵活性促进了创新和竞争,使其在学术研究、教育和商业应用中迅速获得广泛关注和采用。

2026年3月26日,在中关村论坛年会——RISC-V生态科技论坛上发布的“香山”开源高性能RISC-V处理器性能达到国际先进水平。

七、总结

本文从计算机底层基础出发,系统梳理了单片机与嵌入式处理器的核心知识。电平与二进制是计算机存储运算的基石,51单片机高电平为5V,STM32为3.3V;单片机是将CPU、RAM、ROM及多种外设集成于一块硅片上的微型计算机系统;计算机内核由输入设备、输出设备、存储器、运算器、控制器五大部分组成。51单片机采用51内核,STM32则基于ARM内核,二者在位数、性能和应用场景上各有侧重。ARM既是公司,也是处理器统称与RISC技术的代表,其CISC与RISC指令集各有特点。RISC-V作为开放指令集架构,凭借免费、可扩展的优势正快速崛起。建议初学者先夯实数字电路与计算机组成原理基础,再动手实践51与STM32开发板,逐步深入ARM与RISC-V生态。

黑马程序员2025嵌入式单片机入门视频理论总结 本文介绍了电流、单片机分类与功能、输入输出、管、串口、时钟周期等。 阅读详情

相关推荐

CH32V307 RISC-V开发入门:GPIO驱动LED实战指南

RISC-V架构作为开源指令集正在嵌入式领域快速普及,其模块化设计允许厂商灵活定制处理器内核。GPIO(通用输入输出)是嵌入式系统最基础的外设接口,通过配置工作模式可直接控制LED等外部设备。CH32V307作为国产RISC-V MCU代表,其GPIO控制器支持8种工作模式,翻转速度高达50MHz,配合MounRiver Studio开发环境能快速实现LED驱动。本文以LED控制为例,详解GPIO的推挽输出模式配置、精准延时实现及常见问题排查方法,特别适合从ARM架构转向RISC-V的开发者参考。通过Sys

www.itmmd.com 444

TCP/IP数据报格式

IP数据报格式 图1.IP数据报格式 版本字段长度为4,用来表明建立数据报的IP版本,目前的IP版本是IPv4,IPv6正在发展中。IPv4的字段为0100 。 首部长度(报头长度)指的是首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为60个字节。15x32/8=60字节.IP首部始终是32 bit的整数倍.IP数据报报头的最小长度为20个字(不含填充字段和IP选项字段的IP报头是最常见的IP报头,为20个字节)     服务类型TOS(Type Of Service

阳光岛主 9020

Arduino、ARM、树莓派与单片机:从入门到精通的嵌入式开发指南

本文深入解析了Arduino、ARM、树莓派与单片机的核心区别与定位,为嵌入式开发新手提供清晰的学习路径指南。文章指出,单片机是控制核心,ARM是处理器架构,Arduino是快速原型平台,而树莓派则是微型电脑。针对不同基础与目标,推荐了从Arduino快速入门、STM32专业进阶到树莓派探索物联网的实战选择,帮助读者避免迷茫,高效开启嵌入式开发之旅。

weixin_29248611的博客 420

盘点国产RISC-V内核的单片机

RISC-V就不必多说了,它是一个基于精简指令集的开源指令集架构。与主流的主流的架构为x86与ARM架构不同,其特点就是完全开源。今天跟大家一起盘点一下国产RISC-V内核的单片机。

zhang062061的专栏 8888

全志D1s RISC-V开发板实战:硬件设计与Linux启动全流程解析

RISC-V架构开发板正逐步降低嵌入式Linux的学习门槛,其核心原理在于通过BootROM、SPL和U-Boot等多阶段引导,完成DDR初始化与内核加载。全志D1s将DDR集成于芯片内部,简化了硬件设计,使开发者能聚焦于电源规划、存储选型与设备树配置。在工程实践中,掌握串口调试、DDR时序调整和根文件系统挂载等技能,能有效排查启动故障。这类开发板适用于从单片机进阶Linux嵌入式、或从ARM转向RISC-V的开发者,帮助深入理解从芯片上电到系统运行的完整链路。

weixin_30954817的博客 320

MCU“历代蜘蛛侠”:从8051到RISC-V的嵌入式演进

微控制器(MCU)是嵌入式系统的核心单元,从早期8位8051到如今ARM Cortex-M、RISC-V与异构SoC并存,其架构演进始终围绕算力、功耗、成本与生态的平衡。理解MCU架构原理,是工程师进行选型和开发的基础。随着汽车电子与智能硬件对实时性、安全性要求提升,汽车嵌入式MCU开发需掌握CAN、功能安全与底层驱动;而IIC通信、ADC采集等基础外设应用,仍贯穿各类MCU工程实践。从经典8051寄存器编程到现代HAL库、VSCode+Claude Code辅助开发,工具链在变,但对硬件时序和信号链的认知

weixin_33801856的博客 379

分享国产RISC-V单片机通用

RAMSUN提供的RISC-V单片机,开源指令集架构,针对低功耗和高速响应等应用优化扩展,免费配套IDE等开发工具软件,免除第三方内核技术的授权费和提成费,通过内置和组合USB、PD、低功耗蓝牙、以太网等专业接口外设,构建了既有全球未来生态又能自主可控、且极具长期竞争力的MCU产品线。RISC-V 赋予技术创新,开放的指令集、开源的设计实现、开源的工具和开放的流程等正在改变着芯片设计的方法,未来芯片中包含开源 IP 的比例将会不断提高,芯片设计方法的变革将会引领新一轮商业模式的创新。

EVERSPIN的博客 957

从零构建RISC-V SoC:开源硬件设计与Arduino生态实践

片上系统(SoC)设计是现代嵌入式系统的核心技术,它通过将处理器、存储器和外设集成在单一芯片上实现完整功能。其原理基于硬件描述语言(如Verilog)和总线架构,将开源处理器核心与自定义外设模块互联。这一技术价值在于提供了从底层硬件到上层软件的完全透明与可控性,打破了传统单片机黑盒限制。在应用场景上,SoC设计广泛应用于物联网设备、定制化控制器和教育实验平台。本文以RISC-V开源指令集为核心,详细解析如何构建一个兼容Arduino生态的单核SoC,涵盖CPU选型、外设集成、FPGA验证等关键实践,为嵌入式

weixin_34080571的博客 453

RISC-V MCU应用教程之赤菟V307多UART通信

RISC-VMCU应用教程之赤菟V307多UART通信 本文章介绍使用CH32V307单片机实现主机轮回接收从机传输的数据,并在串口软件显示。您需要的资料:CH32V307单片机数据手册及例程一、单片机串口部分简介 由上图可知,CH32V307有8个串口(USART+UART)。 由数据手册可知,USART有3个,USART1挂接在APB2总线上,USART2和USART2以及7个UART挂接在APB1总线上。为了方便插拔引脚转接线,将数据手册中有关串口引脚陈列如下表格中。 防止原...

RISCVnet的博客 1026

基于51单片机与ESP8266的WiFi无线控制实验实战项目

在嵌入式物联网系统中,51单片机凭借其高稳定性与成熟生态,常作为主控单元负责传感器采集、外设驱动及逻辑控制;而ESP8266则以其集成Wi-Fi能力承担网络通信任务。两者通过UART实现串行数据交互,形成“主控+通信”协作架构。ESP8266之所以能够在嵌入式领域广泛应用,根本原因在于其高度集成的设计理念。该芯片内置了一个主频最高可达160MHz的32位CPU,支持运行FreeRTOS或裸机程序;

weixin_28931507的博客 1438

PE启动盘结合360杀毒离线版:深度清除顽固病毒实战指南

在系统安全维护领域,离线查杀是一种在独立于宿主操作系统的环境下进行病毒扫描和清除的核心技术。其原理是通过一个预启动环境(如PE)加载杀毒软件,从而绕过可能已被感染或受保护的系统核心,直接访问和扫描磁盘文件。这项技术的核心价值在于能够彻底处理那些在正常系统运行时难以清除的深度隐藏病毒、Rootkit和驱动级木马。典型的应用场景包括应对勒索软件、顽固感染型病毒以及系统启动项被劫持等情况。本文以“PE启动盘”和“360杀毒离线版”这一经典组合为例,详细解析了从工具选型、环境部署到深度查杀策略的全流程,为系统维护人

weixin_29741447的博客 411

点亮一颗 LED: 单片机 ch32v003 (RISC-V) 使用 rust 编写固件

相关链接:单片机 (也叫 MCU, 微控制器) 是低成本嵌入式系统的核心部件, 在单个芯片上集成了一整台计算机 (包括 CPU, RAM, flash, 输入输出设备 (GPIO, UART, I2C, SPI, ADC, DAC, OPA, USB) 等), 体积小, 功耗低, 使用方便, 只需要搭配很少的外围器件即可运行.ch32v003 是国产芯片, 是南京沁恒微电子股份有限公司 (WCH) 推出的一款 32 位通用 RISC-V CPU 的单片机.为什么选择 ch32v003?

穷人小水滴的博客 3415

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

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

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

兆易创新推出RISC-V架构的GD32VF103,这是MCU界的“小欢喜”

今年在MCU界,最受热议的话题非“RISC-V”莫属。从探讨它的指令集到生态系统,很多MCU公司都在摩拳擦掌,生怕错过属于MCU下一个十年的这场“盛宴”。在国际MCU大...

5218

qt5.14.2+vs2019配置msvc2017编译器

qt5.14.2+vs2019配置msvc2017编译器 在使用qt编译程序时此前一直使用的是自带的MinGW 32-bit和64-bit,现在想使用msvc编译器。本次使用的是qt5.14.2,vs2019,需要配置msvc2017的32-bit和64-bit编译器。 1、首先安装好qt5.14.2和vs2019,其次在visual studio installer选择修改,然后选择msvc2017对应的组件,本次安装的是这两个 2、打开qt creator的工具–选项–kits–编译器,选择Manu

bangtanhui的博客 1万+

【ESP32】ESP32连接JY61P并通过WIFI发送给电脑

ESP32S连接JY61P并通过WIFI把姿态数据发送给电脑1.采用Arduino IDE编译器;需要安装ESP32的开发板管理器;2.电脑接受数据是基于python的;

Doudou_Nai的博客 1134

Maix Duino开发板:基于K210的RISC-V边缘AI实战入门指南

嵌入式AI开发正成为物联网和智能设备领域的核心技术,它通过在本地设备上直接运行人工智能模型,实现了低延迟、高隐私和低功耗的数据处理。其原理依赖于专用硬件加速器(如KPU)对卷积神经网络进行优化,从而在资源受限的嵌入式环境中高效执行图像识别、语音唤醒等任务。这项技术的核心价值在于将AI能力从云端下沉至设备边缘,显著降低了网络依赖和响应时间,为智能安防、工业质检和交互式装置等场景提供了可行方案。本文以**Maix Duino**开发板为例,深入剖析其搭载的**K210 RISC-V芯片**的硬件特性,并通过实战

weixin_29189381的博客 318

【系统架构设计师-2025上半年真题】综合知识-参考答案及详解(75题完全回忆版)

【系统架构设计师-2025上半年真题】案例分析-参考答案及部分详解

数据知道的博客 1万+

整理了120道单片机嵌入式面试题与答案,覆盖了硬件电路和C语言等核心领域。

整理了**120道**单片机嵌入式面试题与答案,覆盖了硬件电路和C语言等核心领域。为了方便你快速掌握重点

qq_29458665的博客 9224

点到面点云配准(Point To Plane)算法知识详解和详细推导,C++代码实现

点到面 ICP (Iterative Closest Point) 是在 3D 点云配准中常见的一种变体,通过最小化点到对应面(由法向量定义的局部平面)的距离来提高收敛速度和精度。

qq_36812406的博客 1811

Eplan设计师必会—伺服安全回路的设计方法

本文介绍了在EPLAN中设计伺服STO安全回路的方法。首先需查阅伺服驱动器说明书确定STO接线端子,重点关注双通道配置。设计步骤包括:使用黑盒子功能绘制驱动器外形,正确标注STO接线点,并连接安全继电器或PLC的安全输出。关键注意事项有:必须采用双通道独立布线,确保同步动作,遵循故障安全原则,使用常闭触点串联回路。文中以西门子V90和汇川伺服为例说明具体接线要求,并附有项目实例参考。

Qinmingyue13的博客 436

2.1嵌入式微处理器的结构和类型

2.1嵌入式微处理器的结构和类型 2.1.1 嵌入式微处理器的分类   1、嵌入式硬件系统一般由嵌入式微处理器、存储器和输入/输出部分组成。 2、嵌入式微处理器是嵌入式硬件系统的核心,通常由控制单元、算术逻辑单元和寄存器 A、控制单元:主要负责取指、译码和取数等基本操作并发送主要的控制指令。 B、算术逻辑单元:主要处理数值型数据和进行逻辑运算工作。 C、寄存器:

shenghua 2933

OsgEarth —— 笔记1 - 创建地球的earth文件

效果         正文      1、准备一张全球的渲染图(tif格式)、一张全球的高程图(tif格式)        2、创建并编写.earth文件           在步骤1目录下创建china-simple.earth,并将如下内容写入。 <map name="Globe" type="geocentric" version="2"> <!-- 全球影像图 --> <image name="GlobeImage" driver="gdal"> &l

7681

C语言与RISC-V架构融合开发:必须掌握的7种内存映射优化技巧

掌握C语言RISC-V开发板适配核心方法,提升嵌入式系统性能。本文详解7种内存映射优化技巧,涵盖启动加载、外设访问与缓存控制,适用于物联网与边缘计算场景,显著提高代码执行效率与硬件兼容性,值得收藏。

QuickTrans的博客 848

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

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

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

常用单片机介绍

单片机(Single-Chip Microcomputer)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。 一、51单片机 51单片机是对所有兼容Intel 803

我本傲骄的博客 1万+

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

[RISC-V MCU 应用开发]基于AG32开发板的NTC温度测控与记录功能实现

该数据记录模块是一种串口设备,在使用时其工作的波特率为9600bps,在接收到开发板所发送的数据时,就将数据完整地记录到TF卡的文件中。该开发板的功能布局如图3所示,在初识状况下,其上电后除电源指示灯被点亮外,下方的4个绿色LED也在不停地闪烁,见图4所示。AG32开发板在外接NTC热敏电阻模块的情况下,可进行温度的检测,其电路如图8所示,它与开发板的连接如图9所示。在接入数据记录模块的情况下,其记录数据的状态如图14所示,即写指示灯在不停地闪亮,数据被不断地写入TF卡。

ic2121的博客 386

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

上一篇: 潘多拉STM32L4 96 IoT开发板(HAL库) 6.通过USART1串口完整实现信息接收与发送
下一篇: 2.STM32开发方式全解析:寄存器、HAL库、LL库与STD库怎么选?
硅基造物主
博客等级 码龄4年 17粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值