一、嵌入式学习层级
- 应用层:业务代码,不碰硬件
- 操作系统层:管理硬件资源,应用访问硬件必须走驱动
- 硬件层:芯片、外设电路
裸机特点:无操作系统,代码直接读写寄存器控制硬件
BSP:板级底层驱动,led.c/h就是最简BSP
硬件:STC89C52RC,普中51开发板
二、单片机最小系统
最小系统:芯片上电运行必需电路,缺一则无法启动
- 电源:5V供电
- 复位:上电清零寄存器,PC归零,程序从Flash 0地址开始跑
- 晶振:单片机时钟节拍;常用11.0592MHz(串口)、12MHz(延时学习)
片内外设:芯片内置,GPIO、定时器、中断、串口
片外外设:板载外部器件,LED、按键、CH340
GPIO
51有P0/P1/P2/P3四组IO,每组8位Px.0~Px.7
Px本质是1字节特殊寄存器,写寄存器即修改引脚电平
普中LED:高电平熄灭,低电平点亮
P2 = 0xFF 全灭; P2 = 0x00 全亮
三、位运算(寄存器操作核心)
用途:单独修改某一位,不影响其余引脚,嵌入式通用模板
- & 按位与:清零指定位 P2 &= ~(1 << n);
- | 按位或:置1指定位 P2 |= (1 << n);
- ^ 按位异或:翻转指定位 P2 ^= (1 << n);
- ~ 按位取反:比特翻转
- << 左移:生成掩码,流水灯常用 1 << i
-
右移:提取比特
四、冯诺依曼架构、哈佛架构
冯诺依曼(PC电脑)
指令与数据共用内存、同一套总线;存在总线抢占瓶颈
哈佛架构(51单片机)
Flash(存程序,断电保存)、RAM(临时变量,断电丢失)分开,双总线,可并行取指令读数据。STC89C52:Flash 64K,RAM仅128B。
核心部件
- PC程序计数器:标记下一条指令地址,复位PC=0;程序跑飞=PC跳到非法地址
- SFR特殊功能寄存器:硬件映射到固定地址,读写地址就是操作硬件
sfr P2 = 0xA0;
#define P2 (*(unsigned char *)(0xA0))
ISP:STC内置引导程序,串口烧录hex,无需专用烧录器
五、CPU寻址方式
寻址:CPU寻找操作数的方式
- 立即寻址:数据直接写进指令 num=100
- 直接寻址:直接给出内存地址 P2=0x01
- 间接寻址:指针保存目标地址,C语言指针底层
- 寄存器寻址:数据放在CPU内部寄存器,速度最快
- 寄存器间接寻址:寄存器存放内存地址
- 基址变址寻址:基地址+偏移,数组、ARM驱动常用