很多刚接触嵌入式或单片机(MCU)的小伙伴,在点亮第一颗 LED 灯后,往往会陷入迷茫:除了写 while(1) { LED = 1; delay(); LED = 0; delay(); } 之外,这个小芯片还能干什么?
其实,单片机的核心(CPU)虽然强大,但它就像一个“只有大脑、没有五官和四肢”的思想家。它要感知外部世界、控制硬件设备,必须依赖芯片内部集成的外设(Peripherals)。
掌握外设的使用,才是真正跨入嵌入式开发大门的钥匙。今天这篇文章,我们就来系统梳理一下,在几乎所有单片机(从经典的 8051 到强大的 Cortex-M 系列)中,最常使用、也是最基础的几大外设。
简单来说,外设就是单片机芯片内部,围绕在 CPU 核心周围,专门负责特定功能的硬件模块。
它们与 CPU 共享同一个芯片,通过系统总线连接。CPU 通过读写外设的寄存器来配置其工作模式、读取数据或发送指令。外设通常也是单片机耗电的主要来源(所以低功耗设计往往是关闭未使用的外设)。
如果把 CPU 比作市长,外设就是市政府下面的各个职能部门:环保局(感知温度)、交通局(数据传输)、市政规划局(精确计时)。
1. GPIO (General Purpose Input/Output) —— 通用输入/输出口
这是最基础、最直观的外设,几乎每个引脚都可以配置为 GPIO。也是大家“点灯”用的那个模块。
功能: CPU 直接控制引脚的电平状态(高电平或低电平)。
常用模式:
推挽输出 (Push-Pull Output): 最常用的输出模式,能输出强的高低电平,适合驱动 LED、继电器、蜂鸣器等。
浮空输入 (Floating Input): 引脚处于“悬空”状态,专门读取外部数字信号(0 或 1)。适合读取开关、传感器开关信号。
复用功能 (Alternate Function): 许多 GPIO 引脚兼任其他外设的功能(如串口的 TX/RX),此时需要配置为复用模式。
应用场景: 控制 LED、按键检测、片选信号、软件模拟简易通信协议。
2.UART (Universal Asynchronous Receiver/Transmitter) —— 串口
这是工程调试(Debugging)的灵魂外设。通常被称为“串口”或“SCI”。
功能:实现单片机与外部设备(如电脑、GPS、蓝牙模块)之间的全双工、异步串行通信。只需三根线:TX(发送)、RX(接收)、GND(地)。
特点: 配置灵活(波特率、数据位、停止位、校验位),但速度相对较慢。是工程调试中打印 printf("Current Temp: %d", temp); 的绝对主力。
应用场景: 电脑上位机调试(如串口助手)、连接蓝牙/Wi-Fi 透传模块、GPS 模块数据读取。
如果说 GPIO 是单片机的四肢,定时器就是单片机的闹钟和心跳。它不仅仅是 delay
功能:
定时 (Timing): 基于精确的时钟源计数,产生固定的时间间隔。
计数 (Counting): 统计外部引脚上的脉冲个数。
中断触发 (Interrupt Request): 定时时间到,强制 CPU 暂停当前工作,去执行紧急任务(如 1ms 刷新一次显示)。
输入捕获 (Input Capture): 精确测量外部信号的频率或脉宽(比如测量遥控器的红外信号)。
应用场景: 1ms 软件定时、实现精确的 delay、计算外部脉冲频率。
4. PWM (Pulse Width Modulation) —— 脉冲宽度调制
PWM 常常是定时器的一个附属功能模式,但因其极为重要,往往被视为独立外设对待。
功能: 通过改变方波信号的占空比(一个周期内高电平所占的比例),来模拟电压的变化。
原理: 对于像电动机或 LED 这种有惯性的设备,快速地开关电压,它们感知到的是一个“平均电压”。
应用场景: LED 亮度调节(呼吸灯)、舵机角度控制、直流电机转速控制、D 类功放。
5. ADC (Analog-to-Digital Converter) —— 模数转换器
单片机是数字设备(只能识别 0 和 1),但我们生活的物理世界是模拟的(温度、压力、光照是连续变化的)。
功能: 将外部引脚上的模拟电压信号(如 0V ~ 3.3V)转换为单片机能处理的数字量(如 0 ~ 4095,12 位 ADC)。
关键参数: 分辨率(精度,如 10 位、12 位、16 位)、采样率(转换速度)。
应用场景: 读取温度传感器(NTC)、监测电池电量、读取电位器(旋钮)位置、光敏电阻感光。
6. I2C (Inter-Integrated Circuit)
一种非常经典、简单的低速同步串行总线,由飞利浦公司开发。
功能: 只需两根线(SDA 数据、SCL 时钟),就可以在同一总线上挂载多个设备(多主多从模式,通过地址识别)。
特点: 适合短距离、低速器件间的连接,引脚占用极少。
应用场景: 连接 OLED 屏幕、EEPROM 存储器(AT24C02)、温湿度传感器(AHT20)、陀螺仪(MPU6050)。
7. SPI (Serial Peripheral Interface)
功能: 通常需要四根线(MISO 主入从出、MOSI 主出从入、SCK 时钟、CS 片选)。
特点: 速度非常快(常用于驱动彩色屏幕和外部 Flash),协议简单,但引脚占用较多(每增加一个从设备需要一根 CS 线)。
应用场景: 驱动 TFT 彩色屏幕、读取高速外部 Flash 存储器(W25Q64)、SD 卡读写、高速 AD 芯片。
以上 7 个外设,构成了单片机与外界交流的基础框架。
GPIO(彻底明白输出/输入/浮空/推挽)
UART(学会通过串口打印调试信息,极大地优化后续开发体验)
Timer & PWM(掌握定时中断和基本调光)
ADC(学习采集外部模拟信号)
I2C & SPI(掌握一种常用的通信协议)
等你把这 7 个外设都玩透了,再去看一些更高级的外设(如 DMA、CAN、USB、Ethernet)或者深入研究 RTOS(实时操作系统),就会感觉水到渠成了。
嵌入式开发是一门实践性极强的学科,每一个外设,请务必手写代码(不要只复制粘贴)在开发板上跑通一次!
— 完 —
来源:知乎(哈桑)
链接:https://zhuanlan.zhihu.com/p/2019014315672347904
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处
扫码添加免费领取资料
资料介绍:10G必备工控资料礼包+电工必备热门软件
</b></b></b></b>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!