单片机基础:从历史到内核,搞懂你手里的芯片
做嵌入式这些年,我见过不少新手一上来就盯着寄存器手册猛啃,结果越看越懵。其实,想用好单片机,得先知道它从哪来、里面到底装了啥。这一章,咱们就把这些底层的概念捋清楚。
1. 单片机的发展历史:从几个芯片到一颗SoC
单片机,说白了就是一台微型计算机,只不过把CPU、内存、I/O接口全塞进了一个芯片里。这个想法最早出现在1970年代。
- 1971年:Intel 4004 —— 世界上第一个微处理器,4位,主要用于计算器。严格来说它还不是单片机,但开了个头。
- 1976年:Intel 8048 —— 真正意义上的单片机雏形,用于键盘、家电。我记得当时一个8048的价格能买好几斤猪肉。
- 1980年:Intel 8051 —— 这就是咱们常说的51单片机。它定义了单片机的标准架构:CPU + ROM + RAM + I/O + 定时器 + 中断。直到今天,51内核还在大量出货。
- 1990年代:AVR、PIC崛起 —— 这些芯片更便宜、功耗更低,适合消费电子。我入行时用的第一块开发板就是AVR的ATmega16。
- 2004年:ARM Cortex-M系列发布 —— 这彻底改变了单片机市场。32位、高主频、低功耗、统一架构,让单片机从8位时代跨入了32位时代。
现在,Cortex-M系列几乎统治了中高端嵌入式市场。但51和AVR在简单控制场景里依然活得很好。你想想看,一个电饭煲需要跑Linux吗?不需要,一个8位单片机就够了。
2. 常见单片机系列:选型时你该知道的事
很多初学者会问:“我该学51还是STM32?”我的回答是:都学,但先学51打基础,再学ARM Cortex-M做产品。
| 系列 | 位数 | 典型型号 | 主频 | 特点 | 适合场景 |
|---|---|---|---|---|---|
| 51 | 8位 | AT89C51, STC89C52 | 12~40 MHz | 结构简单,资料多,教学首选 | 小家电、简单控制、教学 |
| AVR | 8位 | ATmega328P, ATtiny85 | 8~20 MHz | 单周期指令,功耗低,Arduino核心 | 传感器节点、无人机、DIY |
| PIC | 8/16位 | PIC16F877A, PIC24F | 8~64 MHz | 抗干扰强,工业级稳定 | 汽车电子、工业控制 |
| ARM Cortex-M | 32位 | STM32F103, LPC1768 | 48~480 MHz | 高性能,丰富外设,生态完善 | 物联网、电机控制、复杂产品 |
3. 单片机内部结构:拆开芯片看五脏六腑
不管是什么系列的单片机,内部结构都离不开这五大模块。咱们一个一个说。
3.1 CPU(中央处理器)
CPU是单片机的大脑。它负责取指令、译码、执行。8位CPU一次处理8位数据,32位一次处理32位。你想想看,同样算一个32位整数,8位CPU要拆成4次运算,32位一次搞定。这就是为什么Cortex-M比51快那么多。
3.2 存储器
存储器分两种:程序存储器和数据存储器。
- Flash(程序存储器):存放你的代码。掉电不丢失。51的Flash通常几KB到64KB,STM32可以到2MB。
- RAM(数据存储器):存放变量、堆栈。掉电就没了。51的RAM只有128字节到256字节,写个复杂点的程序就得省着用。STM32的RAM通常是几十KB到几百KB。
3.3 I/O口(输入输出端口)
I/O口是单片机跟外界打交道的通道。每个I/O引脚可以配置成输入(读按键、传感器)或输出(驱动LED、继电器)。
这里有个细节:51的I/O口是准双向口,输出高电平时驱动能力很弱,需要外部上拉电阻。而AVR和STM32的I/O口可以配置成推挽输出,直接驱动LED都没问题。
3.4 定时器
定时器就是单片机内部的“秒表”。它可以用来产生精确延时、PWM波形、捕获外部脉冲宽度等。
- 51的定时器:通常有2个16位定时器,工作模式有4种。我刚开始学的时候,被模式1和模式2的区别绕晕过。
- STM32的定时器:高级定时器、通用定时器、基本定时器,功能强大到可以输出6路互补PWM带死区插入。
3.5 中断系统
中断是单片机的“紧急通道”。当外部事件(比如按键按下、定时器溢出)发生时,CPU暂停当前任务,跳去处理中断服务函数,处理完再回来继续干活。
中断系统有几个关键概念:
- 中断源:谁可以触发中断?外部引脚、定时器、串口等。
- 中断优先级:多个中断同时发生,先处理谁?51只有两级优先级,STM32可以设置16级。
- 中断嵌套:高优先级中断可以打断低优先级中断。嗯,这里要注意,嵌套太深容易导致堆栈溢出。
4. 知识体系总览:一张图看懂单片机内部结构
下面这张SVG图,把单片机的核心模块和它们之间的关系画了出来。你可以把它当作本章的“知识地图”。
5. 本章小结:你该带走什么?
这一章咱们聊了单片机从4位到32位的发展历程,对比了51、AVR、PIC、ARM Cortex-M这四大系列的特点,最后拆解了单片机的五大内部模块。
我个人觉得,理解单片机内部结构比背寄存器地址重要得多。你只要搞懂CPU怎么取指令、中断怎么响应、定时器怎么计数,剩下的就是查手册、写代码的事了。