单片机/嵌入式修行之路

第一阶段:基础筑基

这个阶段的目标是建立坚实的计算机和电子技术基础,为后续学习扫清障碍。

1、C语言编程

为什么? C语言是嵌入式开发的母语,效率高、贴近硬件。

学什么?

  • 基本语法:变量、运算符、流程控制、函数。
  • 核心重点:指针、数组、结构体、内存管理(malloc/free)、位运算。 这是C语言的灵魂,必须深刻理解。
  • 预处理器、头文件、多文件编程。

怎么学? 在PC上编写程序,使用GCC编译,用调试器(如GDB)调试。可以做一些小练习,如学生管理系统、字符串处理工具等。

推荐:小甲鱼---带你学C带我飞:

带你学c带你飞【小甲鱼c语言入门教学】_哔哩哔哩_bilibili

2、计算机基础

数字电路: 了解与、或、非等逻辑门,触发器、寄存器、组合逻辑和时序逻辑的概念。这是理解CPU和外围电路如何工作的基础。

**计算机组成原理:**了解CPU是如何工作的(取指、译码、执行)、内存、总线、I/O接口的概念。

3、基础硬件知识

电路分析基础: 欧姆定律、电容、电感、二极管、三极管(开关作用)的基本概念。

工具使用: 学会使用万用表,初步了解示波器。

模拟电子技术---郑益慧

模电教程---郑益慧_哔哩哔哩_bilibili

数字电路---王红

视频去哪了呢?_哔哩哔哩_bilibili

第二阶段:入门实战

这个阶段的目标是选择一个具体的单片机平台,亲手操作,建立嵌入式开发的直观感受。

选择一款主流单片机,推荐: STM32系列(基于ARM Cortex-M内核)。这是当前绝对的主流,资料丰富,就业需求大。备选: ESP32(适合物联网方向,自带Wi-Fi/蓝牙),或者从经典的51单片机入门(简单,但已逐渐被淘汰)。

零基础入门学习arduino单片机_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ni4y157p9?spm_id_from=333.999.0.0

江科大:51单片机入门(好评最多)

江科大单片机https://blog.csdn.net/qq_40838412/article/details/124656716

开发环境搭建

STM32: 安装 STM32CubeIDE。这是ST官方推出的免费集成开发环境,集成了编译器、调试器和图形化配置工具,对新手非常友好。

stm32入门 正点原子mini板精英板教学视频完整版_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1at4y1Y7bv?spm_id_from=333.999.0.0

【野火】stm32 零基础入门 霸道/指南者/MINI 入门篇 中级篇_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1mT4y1T7ad?spm_id_from=333.999.0.0

【野火】stm32 零基础入门 霸道/指南者/MINI 提高篇 大师篇_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1Ut4y1673t?spm_id_from=333.999.0.0

核心技能突破

  • GPIO(通用输入输出): 实现经典的"点灯"(输出),以及读取按键状态(输入)。理解推挽、开漏等模式。
  • 中断系统: 理解中断的概念,学会配置外部中断,这是事件驱动编程的基础。
  • 定时器/计数器: 学会使用定时器实现精准延时、产生PWM波(控制舵机、电机调速)、捕获脉冲。
  • 串口通信: 学会配置串口,实现单片机与PC(通过串口助手)或其他设备的数据收发。这是最基础的调试和通信方式。
  • 调试技巧: 学会使用仿真器(如ST-Link)进行在线调试,设置断点、单步执行、查看变量和寄存器。这是最重要的技能之一,能极大提高解决问题效率。

第三阶段:进阶与外设

掌握了核心功能后,开始学习与各种外部设备传感器进行通信,让单片机具备"感知"和"控制"的能力。

常用通信协议:

  • I2C: 理解主从设备、SCL、SDA线。学会驱动OLED屏幕、MPU6050陀螺仪等I2C设备。
  • SPI: 理解主从设备、MISO、MOSI、SCK、CS线。学会驱动FLASH芯片、TFT屏幕等高速设备。
  • ADC/DAC: 模拟与数字世界的桥梁。学会读取电位器的电压值(ADC),输出模拟电压(DAC)。

常用传感器与执行器

  • 传感器: 温湿度传感器(DHT11、SHT30)、光照传感器、超声波测距模块、红外接收等。
  • 执行器: 舵机、直流电机(通过电机驱动模块如TB6612控制)、继电器。

项目实践

  • 制作一个智能温湿度计,在OLED上显示数据。
  • 制作一个循迹/避障小车。
  • 制作一个通过手机APP控制的智能台灯。

第四阶段:软件工程与操作系统

当项目变得复杂时,你需要更强大的软件架构和系统来管理它。

1、模块化与软件设计
  • 将代码按功能拆分为独立的 .c.h 文件。
  • 学习状态机编程,处理复杂的业务流程。
2、实时操作系统

为什么需要RTOS?

当需要同时处理多个任务(如一边采集数据,一边通信,一边控制)时,裸机编程会变得非常复杂且难以维护。RTOS提供了任务调度、同步、通信等机制。

学什么?

  • 任务(Task)的创建与管理。
  • 任务间通信: 信号量、消息队列、事件标志组。
  • 任务间同步: 互斥锁。
  • 内存管理: 动态内存分配。

推荐系统: FreeRTOS,它是STM32CubeIDE内置的,资料最多。或者 μC/OS。

[野火]《FreeRTOS内核实现与应用开发实战指南》_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV16K4y157Tp?spm_id_from=333.999.0.0

【野火】《uCOS-III内核实现与应用开发实战指南》视频教程_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1FA411W7UE?spm_id_from=333.999.0.0

3、项目实践

用FreeRTOS重新实现你的智能小车:一个任务控制电机,一个任务处理传感器数据,一个任务负责蓝牙通信。

第五阶段:高级与系统整合

这个阶段的目标是向更复杂的嵌入式系统迈进,并向软件底层和硬件设计延伸。

1、Linux嵌入式开发

**为什么?**对于需要复杂网络、图形界面(GUI)或大量数据处理的场景,跑Linux的系统(如ARM Cortex-A内核处理器)是更好的选择。

学什么?

  • Linux基本使用: 命令行操作、Shell脚本。
  • 嵌入式Linux开发环境搭建: 交叉编译工具链。
  • 系统移植: Bootloader(如U-Boot)、Linux内核的配置与编译、根文件系统的制作。
  • 驱动开发: 学习Linux设备驱动模型,能够编写简单的字符设备驱动。
  • 应用编程: 在嵌入式Linux上编写C/C++应用程序,进行文件操作、多进程/多线程编程、网络编程等。

野火Linux入门学习:第一期-0基础入门篇_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1g54y1x7d8?spm_id_from=333.999.0.0

2、硬件设计入门
  • 学习使用 KiCad 或 Altium Designer 等EDA软件。
  • 能够阅读和理解芯片数据手册。
  • 尝试自己设计一个简单的STM32最小系统板。
Altium Designer 17 绘制51单片机开发板PCB全程实战视频0基础入门_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1eK4y1L7BS?spm_id_from=333.999.0.0

Altium Designer16 绘制STM32 pcb开发板0基础入门_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV1hV411h7Pk?spm_id_from=333.999.0.0

3、网络编程
  • 在STM32上使用LwIP协议栈实现以太网通信。
  • 在ESP32上深度使用Wi-Fi和蓝牙。
  • 学习MQTT等物联网协议,连接云平台(如阿里云、AWS IoT)。
4、性能优化与调试
  • 使用示波器、逻辑分析仪深入分析硬件问题。
  • 学习代码性能分析、功耗优化技巧。

第六阶段:项目实战与持续学习

1、打造个人项目集

将之前做过的项目整理、优化,形成一个作品集(可以放到GitHub上)。

尝试完成一个综合性项目,例如:

  • 四轴飞行器
  • 智能家居中控
  • 基于Linux的迷你视频监控设备
  • 自定义的机械臂控制器
2、关注行业动态
  • 关注RISC-V等新兴架构。
  • 了解AIoT(智能物联网)边缘计算等前沿概念。
3、最重要的建议
  • 动手!动手!动手!
  • 善用搜索引擎和社区(如STM32中文论坛、GitHub、Stack Overflow、CSDN、知乎)。
  • 学会阅读官方文档和数据手册,这是第一手资料。
  • 不要害怕失败,调试和解决问题的过程就是你成长最快的时候。
相关推荐
Maryfang132918915513 小时前
RTL8367RB的国产P2P替代方案用JL6107-PC的可行性及实现方法
单片机·网络协议·p2p
ACP广源盛139246256733 小时前
GSV6127E(EA)#Type-C / 显示端口 1.4/HDMI 2.0 转 MIPI/LVDS 转换器(带音频提取和嵌入式微控制器)
单片机·嵌入式硬件·音视频
.普通人4 小时前
stm32f103c8t6寄存器点灯法
stm32·单片机·嵌入式硬件
电子工程师-C514 小时前
基于单片机的智能手表
单片机·嵌入式硬件·智能手表
Jerry丶Li7 小时前
二十八、STM32的USART (介绍)
stm32·单片机·嵌入式硬件
千年糊涂10 小时前
STM32使用薄膜压力传感器
stm32·单片机·嵌入式硬件
大聪明-PLUS10 小时前
Linux 中的 CPU。文章 1. 利用率
linux·嵌入式·arm·smarc
10 小时前
ADC单通道采集实验
单片机·stm中adc单通道采样
点灯小铭17 小时前
基于单片机的窗帘、灯光、空调智能家居控制系统设计
单片机·嵌入式硬件·毕业设计·智能家居·课程设计·期末大作业