一、CPU......

最小系统:能够使51单片机工作所需最少器件

(电源、晶振、复位)

1.CPU

中央处理器(Central Processing Unit)

完成数据运算

2.MCU

微控制器(Micro controller Unit)

功能:集成了 CPU + 内存 (少量) + 外设。

特点:集成度高、成本低、简单控制领域

3.MPU

微处理器(Micro processor Unit)

功能:仅包含 CPU 核心,需要外接内存、外设、存储才能工作。

特点:集成度低,成本高,需要外接功能模块

4.GPU

图像处理单元(Graphics Processing Unit)

功能:图像、视频处理

5.NPU

神经网络处理器(Neural Processing Unit)

功能:AI推理

6.FPU

浮点运算单元(Floating Point Unit)

功能:CPU 的子模块,负责处理小数运算(没有 FPU 的 CPU 只能算整数)

缩写 全称 核心含义 & 通俗解释 典型应用场景
CPU Central Processing Unit 中央处理器,通用计算核心,负责执行指令、统筹全局 所有电子设备的 “大脑”(电脑、手机、单片机)
MCU Microcontroller Unit 微控制器,集成了 CPU + 内存 (少量) + 外设 (GPIO/UART 等) + 存储 的单片芯片,主打 “控制” 智能家居、传感器、小家电(比如空调遥控器)
MPU Microprocessor Unit 微处理器,仅包含 CPU 核心,需要外接内存、外设、存储才能工作 早期电脑、简单工控板
GPU Graphics Processing Unit 图形处理器,擅长并行计算,主打图像 / 视频处理 显卡、手机屏幕渲染、游戏
NPU Neural Processing Unit 神经网络处理器,专为 AI 算法优化 手机人脸识别、智能摄像头、自动驾驶
FPU Floating Point Unit 浮点运算单元,CPU 的子模块,负责处理小数运算(没有 FPU 的 CPU 只能算整数) 需要精准计算的场景(比如传感器数据校准)
SOC System on Chip 片上系统,高度集成(CPU+GPU+NPU + 内存控制器 + 外设等),是 “超级集成芯片” 手机、平板、高端嵌入式设备(比如树莓派)

7.SOC

片上系统(System on Chip)

功能:(CPU+GPU+NPU + 内存控制器 + 外设等),是 “超级集成芯片”

二、RAM和ROM

1.RAM

随机访问内存(random access memory)

cpu访问变量地址,变量地址随机

2.ROM

只读存储器——程序运行期间只读

存放单片机程序、代码、指令

3.区别

RAM(随机存取存储器) ROM(只读存储器)
掉电数据 丢失(易失性) 保留(非易失性)
读写速度 极快 较慢(部分 ROM 仅能读)
读写权限 可读可写 出厂写入后,普通场景只读(比如单片机的 Flash 属于可擦写 ROM)
核心用途 运行时临时存储数据(比如程序运行的变量、缓存) 永久存储程序、固件、常量(比如单片机的程序烧录到 ROM 里)
通俗例子 电脑的内存条、手机的运行内存(8G/12G) 电脑的硬盘、手机的存储(128G/256G)、单片机的 Flash

外存 -> 内存 -> CPU

CPU -> 内存-> 外存

 三、外设寄存器

寄存器是芯片内部的一小块高速存储单元,外设寄存器就是 “专门用来控制外设(比如 GPIO、UART、LED)的寄存器”

能够操作硬件,有固定地址

四、LED操作的寄存器

AT89C51:P2寄存器

五、GPIO

GPIO(General Purpose Input/Output)

通用输入输出口,是单片机 / 芯片对外的 “通用接口引脚”。

六、中断

1.概念

        当cpu执行某个任务,外界发生紧急事件,暂停当前任务,去处理紧急事件,处理结束后再回到原任务被打断的地方继续向下执行

1.1中断源

        打断cpu执行当前任务的源头事件

  • 外部中断0
  • 外部中断1
  • 定时器0
  • 定时器1
  • 串 口

1.2中断优先级

        多个中断源同时向cpu申请中断,会执行优先级高的中断

1.3中断处理流程

  • 中断源发送中断请求
  • 检查CPU是否响应中断(总开关)以及某中断源是否被屏蔽    (子开关)
  • 比较中断优先级
  • 保护现场
  • 执行中断服务函数
  • 恢复现场

2.配置

2.1  IE:中断允许寄存器

IE |= (1 << 7);

IE |=  (1 << 0);

2.2   TCON 定时器/计数器  中断控制寄存器 

//外部中断0的初始化函数

#include <reg51.h>

void int0_init(void)
{
    P3 |= (1 << 2);

    IE |= (1 << 7);
    IE |= (1 << 0);

    TCON |= (1 << 0);

}

3.中断向量表&中断向量

中断向量表:本质是一个数组,存放中断服务函数入口地址

中断向量:一个标号,可以通过标号再中断向量表中找到中断服务函数的入口地址

4.定时器/计数器

4.1 timer0

16位模式定时器 65535 自增型定时器

定时器赋初值  -> 开启定时器 -> 以固定频率自增到65535 ->溢出后产生中断

eg:晶振频率为12MHZ,求定时器初值

        12MHZ / 12 = 1MHZ

        T = 1 / 1MHZ = 1us

        完成1ms定时 :

        1ms = 1000us

        1000us / 1us = 1000次

        初值 = 65535 - 1000  

4.2配置

TCON |= (1 << 4);        //允许timer0计数

//配置定时器工作模式

#include <reg51.h>
#include "timer.h"

#define HZ_200 63035

void timer0_init(void)
{
	// 1. 配置定时器0工作模式
	TMOD &= ~(0x0F << 0);
	TMOD |= (1 << 0);
	TMOD &= ~(1 << 1);

	// 2. 向定时器0赋初值
	TH0 = HZ_200 >> 8;
	TL0 = HZ_200;

	// 3. 允许定时器0开始计数
	TCON |= (1 << 4);

	// 4. 允许CPU响应中断
	IE |= (1 << 7);

	// 5. 允许定时器0产生中断
	IE |= (1 << 1);
}

三、PWM

脉冲宽度调制

  • 能够使引脚产生一个方波, pwm让引脚电平周期性翻转
  • 周期:一个下降沿到下一个下降沿所经历的时间
  • 占空比:高电平在一个周期内所占比例

四、蜂鸣器

  • 有缘蜂鸣器:内部存在震荡源,上电后蜂鸣器会发出固定频率
  • 无缘蜂鸣器:内部无震荡源,要手动赋频率

五、通信协议

1.单工模式

  • 数据接收方和发送方是固定的
  • 数据通过一根信号线实现
  • 数据传输方向单一

2.半双工

  • 通信双方既可以作为数据发送方,也可以作为数据接收方
  • 数据传输通过一根信号线实现
  • 传输方向可以是双向(同一时刻数据传输呈现单一性)

3.全双工

  • 通信双方既可以作为数据发送方,也可以作为数据接收方
  • 数据通过2根信号线实现
  • 双向传输

4.UART

universal async receiver transmitter,通用异步收发器 :全双工、串行、异步

RXD:数据接/收信号线
TXD:数据发/送信号线

遵循LSB优先发送

4.1串行、并行

  • 串行:通过一根信号线逐个bit发送数据
    • 传输慢;
    • 硬件成本低、实现简单;
    • 传输距离远,抗干扰性好
  • 并行:通过多根信号线多个bit同时发送
    • 传输速度快
    • 硬件成本高,实现复杂
    • 传输距离近,抗干扰性差

4.2 TTL; RS232; RS485; CH340

TTL: 高电平15V 低电平0V,传输距离近


RS232:负逻辑(MAX232)
高电平: -3V - -15V
低电平:3V - 15V


RS485:
差分信号 A - B > 2V A - B < -2V
高电平: 2V - 6V
低电平:-6V - -2V

CH340:电平转换芯片(TTL -> USB电平)

4.3奇偶校验

奇偶校验: 无法检测偶数个 bit 出错的问题

  • 奇校验 :校验位为 '1',若 数 据位 中'1'的个 加上 校验位 的 '1'  保持 '1'的总个数为奇数 个 , 则代表奇校验通过

  • 偶 校验 :校验位'0', 若数据位中 '1'的个数加上 校验位的 '0'  保持 '1'的总个数为偶数个 , 则代 表偶校验通过

4.4同步、异步

  • 同步通信 : 通信双方通过一根共享的时钟信号线 规定 数据传输的 频率
  • 异步通信 :通信双方没有 共享时钟信号线 规定 数据传输 频率
  1. 作为常用的串行通信方式,以TTL为例,串口通信在不同主机之间的数据格式为:

  1. 空闲时数据线为高电平;
  2. 发送一个低电平表示起始位;
  3. 发送的第一个比特是最低位(最右边);
  4. 校验位分为奇校验,偶校验和无校验。奇校验是指确保数据位加上校验位中"1",1的总数为奇数;偶校验是指确保数据位加上校验位中"0",1的总数为偶数;
  5. 为保证下一个字节发送前的起始位能够表现出来,校验位之后发送一个停止位1。

4.5串口配置初始化函数

#include<reg51.h>

void uart_init(void)
{
	//配置串口工作模式
	SCON &= ~(3 << 6);  //bit6 bit7清0
	SCON |= (1 << 6);
	SCON &= ~(1 << 7);

	//允许串口接收数据
	SCON |= (1 << 4);

	PCON &= ~(3 << 6);
	PCON |= (1 << 7);
	PCON &= ~(1 << 6); //复位

	 //工作模式:8位自动重装载定时器
	TMOD &= ~(0x0F << 4);
	TMOD |= (1 << 5);
	TMOD &= ~(1 << 4);

	//定时器初值
	TL1 = 230;
	TH1 = 230;

    //初值计算 2^8 - 2 * f晶振 /32 / bps /12

	//允许计数
	TCON |= (1 << 6);

	IE |= (1 << 7);
	IE |= (1 << 4);	  
}

Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐