一、学习前置
1. 为什么先学 C 语言
- 单片机、STM32、嵌入式唯一主力语言
- 语法简洁、底层强、执行快
- 所有编程语言基础,学会 C 一通百通
2. 必备软件(免费)
- Dev-C++:最简单,零基础首选
- VS2022:功能强
- CodeBlocks:轻便通用
- 手机端:C 语言编译器 APP(随时练)
3. 学习顺序(必按这个来)
环境搭建 → 基础语法 → 流程语句 → 数组 → 函数 → 指针 → 结构体 → 实操刷题
二、第一个 C 语言程序(万能模板)
c
运行
- #include <stdio.h> // 引入输入输出头文件
- int main() // 主函数,程序入口
- {
- printf("Hello C语言!\n"); // 打印输出
- return 0; // 程序正常结束
- }
复制代码
必记知识点
- #include 头文件:调用库函数必备
- main():唯一入口,程序从这里开始跑
- printf():控制台打印
- ; 分号:每句代码必须结尾
- {}:代码块包裹
三、基础数据类型(最常用 5 个)
表格
| 类型 | 作用 | 示例 |
|---|
| int | 整型(整数) | int a = 10; | | float | 单精度小数 | float b=3.14; | | double | 高精度小数 | double c=2.555; | | char | 字符 | char ch='A'; | | void | 无类型 | 函数无返回值用 |
常量与变量
- 变量:值可以改 int num=1;
- 常量:值不能改 const int N=100;
输入输出
c
运行
- #include <stdio.h>
- int main()
- {
- int a;
- scanf("%d",&a); // 键盘输入整数
- printf("你输入的数:%d",a);
- return 0;
- }
复制代码
格式符速记
四、运算符(嵌入式必用)
1. 算术运算
+ - * / % % 取余:判断奇偶、定时分频常用
2. 自增自减(单片机超级常用)
c
运行
- i++; // 先使用再加1
- ++i; // 先加1再使用
复制代码
3. 关系运算
> < >= <= == != 判断条件真假
4. 逻辑运算
5. 位运算(STM32 核心重点)
plaintext
- & 按位与
- | 按位或
- ^ 异或
- ~ 取反
- << 左移 快速乘2
- >> 右移 快速除2
复制代码
点灯、寄存器配置全靠位运算
五、三大流程语句(重中之重)
1. 顺序结构
从上往下依次执行
2. 分支判断 if /else
c
运行
- if(条件)
- {
- 成立执行;
- }
- else
- {
- 不成立执行;
- }
复制代码
多分支 if else if
3. switch 多选择
适合固定选项判断
4. 循环结构(嵌入式最常用)
while 循环
c
运行
STM32 死循环标配
c
运行
for 循环
c
运行
最常用遍历、延时、批量 IO 操作
do-while
先执行再判断
循环关键字
- break 跳出整个循环
- continue 跳过本次,继续下一次
六、数组(存储批量数据)
1. 一维数组
c
运行
- int arr[5] = {1,2,3,4,5};
复制代码
下标从 0 开始
2. 字符数组(字符串)
c
运行
串口打印、LCD 显示全部用字符串
3. 二维数组
表格、矩阵数据使用
七、函数(模块化编程)
1. 作用
拆分代码,重复调用,整洁易维护
2. 格式
c
运行
- // 函数声明
- void LED_On(void);
- // 函数实现
- void LED_On(void)
- {
- // 点灯代码
- }
复制代码
分类
- 无参无返回
- 有参有返回 STM32 所有外设全部写成函数
八、指针(C 语言灵魂,嵌入式必考)
1. 基础概念
c
运行
- int a=10;
- int *p = &a; // p指向a的地址
复制代码
2. 指针用途
- 函数修改主函数变量
- 数组快速遍历
- 单片机寄存器直接操作
- 串口、中断、DMA 全部依赖指针
想学懂 STM32,指针必须吃透
九、结构体(工程必备)
把多个不同类型数据打包在一起
c
运行
- struct Student
- {
- int age;
- char name[20];
- };
复制代码
用途:
十、预处理指令(单片机高频)
c
运行
- #define LED_PIN GPIO_PIN_0 // 宏定义
复制代码
优点:改一处全局生效,工程必备
十一、C 语言学习路线(30 天零基础通关)
第 1-7 天 基础入门
环境搭建、变量、数据类型、输入输出、运算符
第 8-15 天 流程控制
if、for、while、分支循环,大量刷题
第 16-22 天 数组 + 字符串 + 函数
熟练封装函数,写简单功能模块
第 23-28 天 指针 + 结构体
攻克最难知识点,对接单片机
第 29-30 天 嵌入式 C 专项
位运算、宏定义、const、volatile、寄存器操作
十二、C 语言转 STM32 重点区别
- 电脑 C 语言有控制台,单片机没有屏幕
- 单片机 C 语言大量操作寄存器、IO 口
- 死循环 while(1) 是主程序标配
- 优先使用函数封装外设
- 极少用 scanf/printf,多用串口打印
十三、新手必避坑
- 忘记加分号 ;
- 大小写区分:C 语言严格区分大小写
- 括号不配对
- 数组下标越界
- 指针乱指导致程序崩溃
- 循环忘记自增造成死循环
十四、免费学习资源
- B 站:郝斌 C 语言(最适合零基础)
- 鹏哥 C 语言(通俗易懂)
- 菜鸟教程 C 语言(随时查语法)
- 刷题网站:牛客网 C 语言题库
十五、赠送:嵌入式 C 必背精简语法
- 无限循环:while(1){}
- 延时写法:for(i=0;i<1000;i++);
- 位操作置 1 清零
- 宏定义统一引脚
- 函数封装外设驱动
|