151
社区成员
发帖
与我相关
我的任务
分享1. 汇编语言
底层机器语言的符号化表示,和硬件高度绑定。
优点:执行速度最快、占用资源极小、时序精准。
缺点:可读性差、代码冗长、移植性极差,不同单片机汇编不能通用。
适用:底层驱动、高精度时序、极小资源场景,现在教学仅作了解,很少实际开发。
2. C 语言(主流必学)
目前单片机绝对主力语言,51、STM32、GD32 全部以 C 开发为主。
优点:语法通用、可读性强、开发效率高、可跨系列轻微移植、不用纠结硬件底层寄存器细节。
特点:兼顾底层控制和上层逻辑,嵌入式入门首选。
3. 其他高级语言
Python:ESP32 支持 MicroPython,适合快速做物联网项目,性能一般。
汇编 + C 混合编程:复杂项目底层用汇编,业务逻辑用 C。
多了寄存器操作:直接操作单片机内部外设地址。
新增位操作:单独控制某一个 IO 引脚。
没有电脑端的头文件、屏幕打印复杂库,面向硬件控制。
程序结构固定:主函数 + 初始化 + 死循环 + 中断服务函数。
不支持系统多进程,默认裸机轮询 / 中断调度。
// 1. 头文件引入
#include 单片机内核头文件
// 2. 全局变量定义
// 3. 函数声明
// 4. 主函数
void main(void)
{
系统初始化; // IO、定时器、串口、中断初始化
外设初始化;
while(1) // 死循环,单片机永久运行
{
业务逻辑代码; // 按键检测、LED控制、传感器读取
}
}
// 5. 中断服务函数 / 子函数
void 中断名(void)
{
中断处理逻辑;
}
核心口诀:初始化一次,死循环一直跑,中断来了插队跑。
1. 51 单片机专用
软件:Keil C51
烧录:STC-ISP 下载工具、USB 转串口
2. STM32 单片机专用
软件:Keil MDK、STM32CubeIDE、IAR
配置工具:STM32CubeMX(图形化配置外设、自动生成初始化代码)
烧录:ST-Link、J-Link、DAP-Link
3. 通用工具
USB 转 TTL:串口调试、打印信息、简易烧录
万用表、示波器:看电平、测波形、排查时序问题
编写代码 → 编译链接 → 生成 HEX/BIN 文件
通过下载器把文件写入单片机 Flash
上电复位,单片机从固定地址读取程序
执行初始化 → 进入 while (1) 死循环
有中断触发时,跳出循环执行中断函数,结束后返回继续循环
1. 轮询模式
在死循环里依次不断检测:按键、传感器、状态标志。
优点:简单好写、逻辑直观
缺点:实时性差,任务多了容易卡顿
2. 中断模式
平时主程序正常运行,有事触发中断再处理。
优点:实时性强、不占用循环资源
缺点:需要掌握中断配置、注意中断优先级和嵌套
二进制、十六进制、进制转换(单片机寄存器全用十六进制)
位运算:与、或、非、异或、移位(配置 IO 和寄存器必用)
延时函数原理:软件延时、定时器硬件延时区别
引脚高低电平逻辑:高电平 = 1,低电平 = 0
串口调试:printf 打印变量、看程序运行状态