HTTP学习笔记#1

单片机(MCU, Microcontroller Unit)

是一种集成电路(IC, Integrated
Circuit)
,其实应当叫微控制器,单片机这多少个名字根本是指此前的SCM(Single
Chip Micyoco, 嗯…
Micyoco是个神奇的单词)。而现行MCU是由SCM发展而来的,在高级点就可以说是SoC(System
on
Chip)。但背后的自身所波及的单片机就是说MCU啦(因为自身根本玩了下51单片机,那一个是什么鬼我后边会说)。

说正事儿,单片机可以说是“浓缩的微机”而不是“浓缩的CPU”,首先维基百科对她的解释是:

a small computer on a integrated circuit。

说不上是因为它里面不仅仅有运算器、控制器和寄存器这种CPU三件套,他还常封装有RAM、ROM这种存储器部件,还有I/O口供人们编程及操作。所以总计来说,他有统计机、存储器和I/O,也终究符合冯诺依曼系列的“浓缩总括机”

  • 应用领域
    说到这种“浓缩总计机”的接纳,可以说是广到没朋友。智能仪表、实时工控、通讯设备、导航系统、家用电器等等。随着物联网(IoT)时代的赶来,单片机可谓再一回大展敢于,大家手中的控制端可能是手机这种高档玩意儿,可是用来控制设备电路的接收端就是单片机要做的事务了。让家用电器接入网络,就是在其中间放一块带Wifi模块的单片机即可。
  • 封装类型
    刚才说到它算一个总结机,他的这一个部件都是怎么放在一起的?这就提到到封装问题了。以下列出紧要的单片机封装情势。
封装 全称 中文名称
DIP Dual In-Line Package 双列直插式封装
PLCC Plastic Leaded Chip Carrier 带引线的塑料芯片封装
QFP Quad Flat Package 塑料方形扁平式封装
PGA Pin Grid Array Package 插针网络阵列封装
BGA Ball Grid Array Package 球栅阵列封装

这边不做详细描述,具体资料可点击封装名称进入查看。


  • 恳请报文与响应报文的协会
  • 编码进步传输速率(可是,编码操作需要总计机来成功,回消耗更多的CPU等资源)
  • 报文主体与实业中央的差别
    • 报文:
    • 实体:
    • 普普通通报文主体等于实体中央。惟有当传输中开展编码操作时,实体大旨的情节暴发变化,才造成他们发生距离。
  • 减去传输的情节编码
    • gzip
    • compress
    • deflate
    • identity
  • 分块传输编码
  • 多局部目的集合包含的指标:
    • multipart/form-data
    • multipart/byteranges
  • 赢得部分内容的限定请求:具体接纳,断点下载
  • 内容协商重临最符合的情节

一个软工狗的总括

作为一个软工狗,我对咱们规范的明白是更小心于一个软件的工程项目标始终而不是技巧实现,偏向于“工”。而单片机开发是更为靠近总计机底层的一种开发,更偏向于“理”,而且也不会采取面向对象的想想。所以,比起往日所做的网页开发可以,客户端支出也罢,都显得越发不友善。

  • 内存可能不够用
    在开发进程中会先导考虑内存够不够用那种题材,这多少个是当代IT学子几乎不会考虑的题目,不说电脑,手机的内存都大的一腿,但是来到单片机的地盘,你就得考虑了,考虑好不要动不动就上个double(我当下用的最长的变量类型也就是unsigned
    int),而且为了举办范围长度还要考虑是不是要把变量讲明称无符号类型,更严重的状态或许还要掰指头数清楚你的变量有没有扬言的太多。
  • 整个从优
    也是因为硬件资源的限制,所以在做一些落实的时候你不可以只考虑咋样兑现,还要考虑单片机吃不吃得起你的代码。所以在这多少个小圈子,面向对象这种考虑是骨干弃用的(面向对象的考虑一向是对程序员友好,对机器不太融洽的)。考虑好您程序的时间及空间复杂度,因为单片机不仅内存小,主频一般也专门低。
  • 二进制是五伯
    大好的巩固一下事先所学的C语言吧,还有二进制操作才是岳父级其它操作。说到那一点莫过于依旧因为硬件资源的限制。各类且或非、异或、移位会让代码变得快速,即便我们事先并不习惯这样做。其实过多牛逼的程序员都会很善于使用二进制操作,因为如此很对机械的脾胃(1024吗,凑个整)。
  • 很好玩!
    不像客户端或web开发,我们只是在调用,很少有思想上的突破。我觉得单片机开发会更灵敏,你可以去网上花十块钱不到买各个小部件添加上去调用着玩。自己统筹小型自动电路是自个儿觉着再有趣然则的政工了。
  • 怎么个伊始
    假如没学过C语言,先去把C学了。倘诺学好了,这就询问基础知识后直接实战。关于实战,我的指出是,先在Proteus上模拟,等稍微熟谙再往实体开发板里写。一个是因为Proteus模拟,能大概实践一下画板子,可以学学简单的路线,但又不像真正画板子这样麻烦。另一个是因为单片机的顺序存储器的擦写次数是简单的,即便这些次数也不用专门专注,可是能少三次就少一回嘛。到了实体开发板阶段,就不是为了证实你的程序逻辑了,而是解决实际问题,因为Proteus并不会完善模拟出实际情形,这也是由模拟到执行的真正过度。最后,可以协调买各个工具(洞洞板、锡丝、松香、烙铁、吸锡器、烙铁架)来焊个板子,在融洽焊的板子上编程。这样就做到了从焊到编再到贯彻的一条龙DIY。

自我很推荐软工狗们品尝单片机开发,因为这足以让您对电脑原理和底部有更深的认识,还是可以够体会到规划并促成各样DIY小器件的野趣。望各位就着汗珠尽情释放成立力吧!

玩的戏谑~

二、 HTTP探究基础

什么是51单片机

百度健全的摘假若这么说的:

51单片机是对拥有兼容Intel8031指令系统的单片机的统称。该体系单片机的高祖是英特尔的8004单片机,后来趁着Flash
rom技术的前行,8004单片机取得了迅速的拓展,成为应用最广大的8位单片机之一,其代表型号是ATMEL公司的AT89类别,它广泛应用于工业测控系统内部。很多集团都有51雨后春笋的非凡机型推出,今后很长的一段时间内将占据大量市面。51单片机是基础入门的一个单片机,仍旧利用最普遍的一种。需要小心的是51多重的单片机一般不抱有自编程能力。

维基百科是这么说的:

The page
51-MCU
does not exist. You can ask for it to be created, but consider
checking the search results below to see whether the topic is already
covered.

啊,看来这个词是国内出来的。依照百度周全上的始末我们得以明白到如下信息

Key Value
指令集 8031
始祖 Intel 8004 单片机
处理器 8位
I/O线 32条
  • 这跟“51”有个蛋的涉嫌啊?!
    后来打探到,这款单片机的起源是AMD的MCS51层层单片机,此体系包括:8031,8051,8751,8032,8052,8752等,后来AMD普度众生,将技艺传了下去。人们将新生的这一个单片机都统称为51单片机。

  • 那为毛我入个门就给我个51单片机啊?!
    因为此款单片机应用分外广,而且匡助在线编程(ISP, In-System
    Programmability)
    ,用它可以搭建相比为复杂性的系列,相较于其他8位单片机(AVR、PIC)而言,他出现较早,可以博得大量学学资料。所以…

四、HTTP状态码

计算机(Computer)

依照冯诺依曼体系,总结机的五大组成部件为运算器、控制器、存储器、输入设备和输出设备。其中运算器和控制器合起来就是CPU;存储器又有何不可拆分为内存和外存;输入和输出设备就是键盘、鼠标、呈现器等。

  • 处理器
    运算器和控制器可以合称为总括机,CPU首要就是这多少个部件。前者肩负数据处理,后者发表命令。
  • 存储器
    存储器紧假诺指内存(RAM,Random Access
    Memory,随机存取存储器)
    ,靠电容的充放电存储电容信号进而可在逻辑上代表数字信号。由于电容充放电速度迅猛,所以内存的读写速度低于CPU中的缓存。但又因为是电容,所以无法在不通电的气象下存储这么些音讯。这样就催生了ROM,为了保存数据但不得不写入三遍的只读存储器。再后来为了能擦了重写就出现了EPROMEEPROM等可擦写ROM。硬盘、U盘等都是前者的衍生物,他们都统称为外存(external
    storage),其首要性功效就是在断电的时候可以保留数据。因为涉嫌到大体动作(掰硬盘里面的小磁针、在光盘上烫洞),所以相对于内存的快慢要慢上要几个档次。
  • I/O
    I/O就是与之相互的基础了,通过输入设备来报告它,通过输出设备来告诉你。就是机器交互的耳根和嘴了。
  • web是行使一种名为HTTP(HyperText Transfer
    Protocol,超文本传输协议)的磋商作为正式,Web是白手起家在HTTP协议上简报的。
  • 平时使用的网络实在TCP/IP协议族的基本功上运行的。HTTP属于它的一个子集。
  • TCP/IP协议族按层次划分为:应用层、传输层、网络层和数据链路层。
  • TCP/IP协议族分层的便宜:
    • 各样层可以随心所欲转移,甚至替换而不会潜移默化到此外层。
    • 处于拔取层上的运用可以只考虑分派给协调的职责,而不需要澄清对方在哪个地方,怎么来,传输是否正确等题材。
  • TCP/IP协议族各层效能:
    • 应用层:决定了向用户提供应用服务时报道的运动(HTTP、FTP、HTTP协议)
    • 传输层:为上层应用层提供处于网络连接中的两台微机之间的多少传输(TCP:传输控制协议、UDP:用户数量报协议)
    • 网络层:用来处理在网络上流动的数据包。规定通过怎么样的途径到达对方电脑,并把数据包传送给对方。(拔取传输线路)
    • 链路层:用来拍卖连接网络的硬件部分。(控制操作系统、硬件的装置驱动,NIC:网卡、光纤等硬件范畴的)
  • TCP/IP通信传输流:[客户端]HTTP客户端(应用层)<->TCP(传输层)<->IP(网络层)<->网络(链路层)<->IP(网络层)<->TCP(传输层)<->HTTP服务器(应用层)[服务器]。
  • 与HTTP关系密切的情商
    • IP协议:负责传输,三个重点尺度-IP地址(指明节点被分配的地点)和MAC地址(网卡所属的固化地方)
    • TCP协议:确保数量能到达目的。三次握手策略
    • DNS协议:负责域名解析。位于应用层,提供域名到IP地址的剖析服务。
  • URI与URL

引脚

单片机的操作从来靠引脚,51多重也不除外。常见的是40脚DIP封装,以此为例说说以下几类引脚。

  • 电源
引脚 说明
Vcc 电源,用于引入正电平
GND 地线,引入负电平

至于电平的资料请参见:逻辑电平

  • 时钟
引脚 说明
XTAL2 片内震荡电路输出端
XTAL1 片内震荡电路输入端
  • 编程控制
引脚 说明
RST 用于复位
PSEN 当有扩展ROM时用,在读外部ROM时,低电平有效
ALE/PROG 当有扩展RAM时用
EA/Vpp 当有扩展ROM时用,高电平读取内部ROM,低电平读取外部ROM
  • I/O
引脚 说明
P0 双向,8位,三态
P1 准双向,8位
P2 准双向,8位
P3 准双向,8位,拥有第二功能

P3次之效用定义:

标号 第二功能 说明
P3.0 RXD 串行输入口
P3.1 TXD 串行输出口
P3.2 INT0 外部中断0
P3.3 INT1 外部中断1
P3.4 T0 定时器/计数器0外部输入端
P3.5 T1 定时器/计数器1外部输入端
P3.6 WR 外部数据存储器写脉冲
P3.7 RD 外部数据存储器读脉冲
  • HTTP是一种无状态协议。HTTP协议本身不对请求和响应期间的报导状态举办封存。为了实现保存情状功用引入了Cookie技术。
  • HTTP请求方法
    • GET:获取资源
    • POST:传输实体主旨
    • PUT:传输文件
    • HEAD:拿到报文首部,与GET方法一致,只是不回去报文主体部分。
    • DELETE:删除文件,与PUT相反
    • OPTIONS:询问帮忙的法子,查询针对请求URI指定的资源襄助的办法
    • TRACE:追踪路径,让web服务器端将从前的请求通信环会给客户端的法门
    • CONNECT:要求在于代理服务器通信时确立隧道,实现用隧道协议举办TCP通信(SSL、TLS)
  • 请求方法分别轻重缓急写,注意用大写字母
  • 从头到尾连接
    • HTTP协议先河版本每举办HTTP通信,就要断开四次TCP连接。浪费
    • 在HTTP/1.1本子中,所有的连续默认都为持久连接(管道化、请求并行)
  • 行使库克(Cook)ie管理状态

推而广之的最首要字

单片机编程襄助汇编和C,其他的本身没用过也不太知道。假诺入门的话最好的选料就是C啦,首先你很有可能学过C,即便没学过也很好上手,去买本谭浩强的《C程序设计》吧。

除开正式的ANSI
C
重在字外,单片机编程还扩张了之类多少个类型的重点字:

  • 位标量表明
关键字 说明
bit 声明一个位标量或位类型函数
sbit 声明一个可位寻址变量,必须定义为外部变量
  • 新鲜效用寄存器表明
关键字 说明
sfr 声明一个特殊功能寄存器,必须定义为外部变量
sfr16 声明一个16位的特殊功能寄存器,必须定义为外部变量
  • 存储器类型表达
关键字 说明
data 直接寻址的内部数据存储器
bdata 可位寻址的内部数据存储器
idata 间接寻址的内部数据存储器
pdata 分页寻址的外部数据存储器
xdata 外部数据存储器
code 程序存储器
  • 其他
关键字 说明
interrupt 定义一个中断函数
reentrant 定义一个再入函数
using 定义芯片的工作寄存器

三、HTTP报文内的HTTP音信

CPU(Central Processing Unit, 中心处理器)

CPU由运算器、缓存器及总线构成。其中,运算器是指ALU(Arithmetic logic
unit,算术逻辑单元)
,是CPU的核心;缓存器(Cache)可分为一流缓存、二级缓存和三级缓存,容量渐渐递增,读写速度快慢递减,成本递减;总线(Bus))分为数据、控制和状态三种。典型代表:8086

  • 大体构造
    从物理构造上看,CPU可分为逻辑部件、寄存器部件和控制部件。逻辑部件紧要用以固定或浮点算术运算操作、移位操作和逻辑操作;寄存器部件可分为通用、专用和控制。每一种寄存器都有它自己的用途;控制部件首要用于指令译码和暴发控制信号。
  • 性能参数
    作为数据处理的主导,最要害的参数能够说是主频和外频了。先说外频,外频是规则频率,它决定了主板的运转速度,人们所说的超频5588葡京线路,,超的就是外频。
    *主频=外频倍频\
    主频,又叫时钟频率。由上述公式可以看出主频由外频决定。主频表示CPU内数字脉冲信号震荡的进度,它可以注解CPU的演算和处理数量的速度。简单来说,主频越高,CPU越快。CPU每做一个动作,处理数据或揭橥命令,都要随着主频的节拍来。所以这是个很有节奏感的事物。

一、 了然网络基础

STC89C52

本人的第一个实体单片机开发,就是这款了,STC89C52,可以说是增强型8051单片机。来,先看一下它的布局:

  • 处理器
Key Value
核心 MCS-51
最高运作频率 35MHz
  • 物理参数
关键字 说明
I/O 39
工作温度 商业级:0°C75°C;工业级:-40°C85°C
封装 DIP
  • 存储器
关键字 说明
RAM 512B
ROM 8KB
EEPROM 4KB
  • 功能
关键字 说明
定时器 3个
串口 1个,全双工
外部中断 4个
看门狗 支持
内置复位 支持
ISP/IAP 支持
  • 可选情势
关键字 说明
掉电模式 支持
空闲模式 支持

自我的这款的具体型号为:STC89C52_35I_PDIP40_1550HHT352.C90C
有关标识命名规则请参阅:STC全系列芯片命名规则表达


  • 2xx 成功
    200 OK
    204 No Content
    代表呼吁处理成功,但重回的响应报文中不含实体的侧重点部分。
    206 Partial Content
    表示客户端举办了限定请求,服务器处理该有的GET请求成功。
  • 3xx 重定向
    301 Moved Permanently
    表示请求的资源已被分配了新的URI,将来应使用资源现在所指的URI。
    302 Found
    临时重定向,表示请求的资源已被分配了新的URI,希望用户这次能利用新的URI访问。
    303 See Other
    与302拥有一样的功能,但303状态吧明确表示客户端应当拔取GET方法拿到资源。
    304 Not Modified 服务器端资源为改变,可径直食用客户端为过期的缓存。
    307 Temporary Redirect 临时重定向,与302持有相同的意思。
  • 4xx 客户端错误
    400 Bad Request 表示请求报文中留存语法错误。
    401 Unauthorized
    表示发送的伸手需要有经过HTTP认证(BASIC认证、DIGEST认证)的求证音信。
    403 Forbidden 表示请求资源被服务器拒绝访问。
    404 Not Found 找不到资源。
  • 5xx服务器错误
    500 Internal Server Error 注脚服务器端在实践请求时发出了不当。
    503 Service Unavailable
    注脚服务器暂时处于过火或正在举办停机维护,不能处理请求。

51单片机

您如果初学单片机,并且一直上网去查“单片机入门”之类的最首要词,你相对会师到“51单片机什么怎么的”。何人知道51单片机是什么东西,一开首自我还觉得51是个词牌,然后就从头吐槽满世界的广告啊,能无法安安静静的学个单片机啊。

前言

正在编写这篇随笔的作者是一名大四的软件工程学生,因为实习工作的需要,奉命琢磨单片机开发,所以自己所扯的情节恐怕更切合跟自家的事态相比相同的人。
比方您懂一些总计机原理和C语言开发,读上面的篇章就不会很棘手。但假诺不懂也没涉及,那就陆续学习啊。


软件准备

既然如此要编程,我们就需要开发环境,你可以采取Keil,也得以选拔加载Keil插件的Eclipse。
代码写好后,通过编译器编译成单片机可以识另外机器码。机器码通常会保留为.hex文件,这么些文件可以用那一个十六进制文件查看器查看。那个文件的多少要写入到单片机的次序存储器中,平日为一个ROM。通常买的开发板都会集成串口及其芯片,还有配套的下载软件。你只需要安装好它的串口芯片的驱动程序,然后用下载器直接下载就好。假如是投机焊的板子就会麻烦一些了。这里不做表明,因为作者还没干过。
还有一种就是透过Proteus模拟,在未曾实体板的场所下得以设想这种措施。Proteus可以效仿单片机的逻辑线路和演示效果。向里面的逻辑单片机下载程序的话,更是这么些造福,在Proteus内可以很方便的操作完成。倘诺要效仿单片机与PC通信,这你就需要一个效仿串口连接的主次了—VSPD(Virtual
Serial Port Driver)。

  • 列个清单
程序 说明
Keil 单片机开发的IDE,支持编译c、asm、c++。
单片机串口驱动 用于让计算机识别单片机
Proteus 模拟集成电路,可以演示效果
VSPD 模拟串口连接
程序下载程序 用于将编译好hex文件下载到单片机

怎么着是单片机

从CPU说起。