单片机---单片机编程语言与开发基础

自我意识的多元宇宙 2026-04-29 23:41:30

一、单片机常用编程语言

1. 汇编语言
底层机器语言的符号化表示,和硬件高度绑定。
优点:执行速度最快、占用资源极小、时序精准。
缺点:可读性差、代码冗长、移植性极差,不同单片机汇编不能通用。
适用:底层驱动、高精度时序、极小资源场景,现在教学仅作了解,很少实际开发。
2. C 语言(主流必学)
目前单片机绝对主力语言,51、STM32、GD32 全部以 C 开发为主。
优点:语法通用、可读性强、开发效率高、可跨系列轻微移植、不用纠结硬件底层寄存器细节。
特点:兼顾底层控制和上层逻辑,嵌入式入门首选。
3. 其他高级语言
Python:ESP32 支持 MicroPython,适合快速做物联网项目,性能一般。
汇编 + C 混合编程:复杂项目底层用汇编,业务逻辑用 C。


二、单片机 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 打印变量、看程序运行状态

...全文
23 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

151

社区成员

发帖
与我相关
我的任务
社区描述
这里专为新疆政法学院的探索者而建,英雄不问出处。起跑线是起点,热忱与坚持为加速器,无论bug缠身的项目,还是攻克的算法顿悟,每滴汗水皆被珍藏。执炬前行,终将照亮彼此峰顶,我们携手同行。
课程设计笔记经验分享 高校 新疆·图木舒克市
社区管理员
  • 雲中203
  • SHAO060706
  • 三叶草.
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

英雄不问出处

试试用AI创作助手写篇文章吧