一.嵌入式
以应用为中心,以计算机技术为基础,软硬件可裁剪的专用计算机系统
1. 以应用为中心
实现特定的任务设计:电子设计:手机,蓝牙耳机,
医疗设备:心率脉搏
汽车ABS,空调温控,智能手环,无人机
2. 计算机技术为基础
1. 计算机组成部分
运算器(数据运算)、控制器(指令控制)、存储器(内存外存)、输入 / 输出设备(IO)
运算器 + 控制器 = CPU(中央处理器)
**存储器:**RAM的大小和内存
输入 / 输出设备: 外设或IO,输入: 鼠标、键盘;**输出:**显示器、LED
2. 软件技术
编程语言,操作系统,数据结构,数据库
编程语言:C / C++
操作系统:Linux文件,负责管理文件、多任务、网络等资源
数据结构与数据库:处理复杂应用逻辑,如用户数据管理、通信协议
3. 硬件平台
STM32单片机:库开发(标准库,HAL库)
51单片机:硬件(PWM,中断,定时器),原理图,寄存器,外设操作(LED,按键)
ARM:设计处理器核心IP,芯片方案
三大系列:
CortexA:应用处理器,应用高端领域,用来运行Linux等复杂操作系统,处理UI,网络
等复杂任务。
CortexR:实时处理器,实时性与可靠性,用于汽车制动系统等要求响应及时的场景
CortexM:微控制器,是STM32,MCU单片机的核心,功耗低成本低
3. 软硬件可裁剪
硬件方面按需选择处理器架构与外设模块
软件方面可以剔除冗余部分,仅保留所需代码
4. 专用的计算机系统
-
通用型计算机:PC,手机,平板
-
专用型计算机:无人机,摄像机,仅实现某项功能的计算机
二、51单片机
1980年,由Intel公司MCS-51系列:8051型号单片机(工业控制领域),由MCU转型到CPU
Atmel(AT89C51)、Philip(P89V51系列单片机,增强型单片机 ISP在线编程)、STC 宏晶半导体(STC89C51 STC89C52 STC89C52RC)
三、相关概念
1. CPU
Central Processing Unit(中央处理器)数据运算、指令处理,CPU性能越高,完成指令处理和数据运算的速度越快
2. MCU
Micro Ctronller Unit(微控制器),集成度比较高,将所有功能集成到芯片中(CPU、RAM、ROM、定时器、UART、IO),简单控制, 成本低
3. MPU
Micro Processing Unit(微处理器),集成度低,只有一块单独的CPU,需外接外设、存储模块,复杂应用领域,跑Linux操作系统,成本高
4. GPU
Graphics Processing Unit(图形处理器),图形处理、图形渲染(GPU性能越好,图形显示的质量越好)
5. NPU
Neural Processing Unit(神经网络处理器),AI推理、硬件加速,神经网络处理(卷积运算)-> 华为Mate60 达芬奇NPU AI自动优化照片
6. FPU
Floating Point Unit(浮点数运算单元),完成浮点数的运算和处理(完全遵循IEEE 754),大部分集成在CPU内部
7. SOC
System On Chip(片上系统),集成度比较高,将多个芯片集成到一块芯片上(存储芯片、外设芯片)
四、ROM 和 ARM
1. 内存和外存
外存:
主要存放程序、代码、指令,掉电数据不丢失,读写速度慢,价格便宜(移动盘 1T 300)
内存:
主要存放程序运行过程中的临时变量、掉电数据丢失,读写速度快,价格贵内存条16G 300)
2. ROM 和 ROM
ROM:
Read-Only Memory,只读存储器,存放单片机程序,指令,掉电数据不丢失
RAM:
Random Access Memory,随机访问存储器,存放临时变量、临时数据,掉电数据丢失
五、单片机芯片内部结构
CPU、RAM、ROM、Timer、PWM、IO、中断、UART
三大总线:
地址总线:用来寻找RAM中的地址,所能寻址的最大范围2^8,256byte,单向
数据总线:通过地址总线去获取数据,数据交互双向
控制总线:时序控制、IO控制、中断
六、原理图与部分概念
1. MCU单片机芯片
STC89C52RC、DIP40 封装:双列直插式,40个引脚,划分成4组(端口 寄存器)
2.网络编号
在实际电路中的一个编号,避免物理连线,相同网络的编号的引脚在实际电路中是彼此互通
3. LED模块
发光二极管:具有单向导通性,分为共阳极和共阴极二极管
4. 共阳极发光二极管的特性
将所有发光二极管的阳极接到电源正极(VCC),阴极接到单片机的引脚。
此时发光二级管阳极会输出高电平(VCC 5V),如果发光二级阴极输出一个低电平(0V), 阳极和阴极之间会形成一个正向的电压差,满足发光二极管的单向导通性,发光二级管被点亮
七、位运算:
1、|
将二进制中的对应位的bit进行比较,有1为1,全0为0
eg:指定位置1
将bit0和bit7置1:t |= (1 << 0) | (1 << 7);
2、 &
将二进制中的对应位的bit进行比较,有0为0,全1为1
eg:指定位清0
将bit 0 和 bit7 清0: t &= ~(1 << 0); t &= ~(1 << 7);
3、^
将对应位的bit进行比较,相同为0,相异为1
八、LED练习
main.c
led.c

delay.c

九、数码管练习
main.c

digiter.c
