TUTORIAL

我的菜鸟教程

一只小菜鸟的学习历程 目前 3 个分册,共 64 节。

FreeRTOS

11 节
  1. 1 课程地图 韦东山 FreeRTOS 入门与工程实践课的全 46 集目录,以及每集对应到本教程哪一章。
  2. 2 课程导览、硬件准备与工程搭建 从 DShanMCU-F103 的硬件和模块开始,走完 STM32CubeMX 配置、FreeRTOS 中间件启用和第一次编译下载。
  3. 3 第一个多任务程序与底层基础 从两个死循环任务讲起,穿过 ARM 汇编、堆和栈,理解 FreeRTOS 为什么能给每个任务切出独立的运行现场。
  4. 4 FreeRTOS 源码与内存管理 内核源码怎么组织,heap_1 到 heap_5 差在哪,3072 字节的堆够不够用。
  5. 5 任务的创建、参数与删除 从声光色影实验出发,掌握 xTaskCreate 的参数、任务参数传递、栈估算,以及用遥控器删除音乐的完整流程。
  6. 6 优先级、任务状态与调度 用音乐任务改善实验讲清抢占、时间片、阻塞、挂起、空闲任务和两个 Delay 函数的真实差别。
  7. 7 同步、互斥与通信总览 从两个有缺陷的实验出发,分清同步、互斥、通信的边界,并认识队列、信号量、互斥量和事件组在游戏机项目中的分工。
  8. 8 队列、环形缓冲与多设备输入 从环形缓冲区讲到 FreeRTOS 队列,完成红外、旋转编码器和按键共同驱动游戏机的输入链路。
  9. 9 队列集、姿态控制与赛车游戏 当一个任务要同时等多个来源时,队列集如何工作;以及赛车项目中如何把数据分发到多个任务。
  10. 10 信号量、互斥量与优先级反转 用车辆运行控制和优先级反转实验,区分二值信号量、计数信号量与互斥量,并理解优先级继承为什么能救场。
  11. 11 事件组与车辆协同 一个写入只能唤醒一个任务,要同时通知多个任务就得靠事件组;用三辆车演示广播、等待「或」和等待「与」。

数据结构

18 节
  1. 1 课程地图 Harsha Suryanarayana 数据结构课的全 42 集目录,以及每集对应到本教程哪一章。
  2. 2 导论与抽象数据类型 数据结构在解决什么问题,以及 ADT 为什么只讲「能做什么」不讲「怎么做」——附数组实现动态列表的完整代价分析。
  3. 3 链表(一)基础与数组对比 从一段地址演算讲清数组的局限,以及链表和数组在访问、内存、插入三个维度上的完整对比。
  4. 4 链表(二)C 实现与头部插入 从建空表到插入第一个节点,以及「绝不修改 head」这条纪律和 head 该放哪里的两条路线。
  5. 5 链表(三)任意位置插入与删除 位置从 1 开始、循环跑 n−2 次、删除必须显式释放——三个最容易写错的点。
  6. 6 链表(四)反转与递归 迭代反转的四行顺序、递归逆序打印,以及一个很多人写反的结论:常规遍历用递归远不如迭代。
  7. 7 双向链表 多一个 prev 指针换来什么,以及一个真实的 bug:为什么节点必须建在堆上。
  8. 8 栈 栈 ADT、数组与链表两种实现(含边界条件写死),以及反转字符串、反转链表、括号匹配三个应用和它们的代价对比。
  9. 9 栈的应用 前缀 中缀 后缀 三种记法的来历与互相转换、求值时弹出顺序的区别,以及中缀转后缀的完整规则(含括号处理)。
  10. 10 队列 FIFO、数组实现从线性到环形的推导、链表实现为什么要两个指针,以及所有边界条件的精确写法。
  11. 11 树与二叉树 树的基本术语、二叉树的三分类、每层节点数与高度公式,以及深度和高度的区别。
  12. 12 二叉搜索树 从数组、链表、二分查找三种方案的代价讲到 BST 的卖点,以及递归插入为什么必须接住返回值。
  13. 13 内存中的栈与堆 程序内存的四个区段、栈帧的生命周期,以及为什么递归插入必须接住返回值——全部用内存模拟讲清楚。
  14. 14 BST 查找最值与二叉树的高度 最小值一路向左、最大值一路向右,以及求高度时那个递归出口为什么必须返回 −1。
  15. 15 二叉树的遍历 广度优先与深度优先的区别、前中后序的 DLR/LDR/LRD 记忆法,以及层次遍历为什么必须用队列。
  16. 16 完全二叉树 完全二叉树的定义、性质,以及为什么它适合用数组存储。
  17. 17 判断 BST 与删除节点 判断 BST 的三种方法(含一个 O(n²) 的低效法)、删除节点的三种情况,以及中序后继怎么找。
  18. 18 图 图的基本概念与术语,以及边列表、邻接矩阵、邻接表三种表示法的完整代价对比。

硬件基础

35 节
  1. 1 课程地图 凡亿教育硬件工程师零基础入门课的全 127 集目录,以及每集对应到本教程哪一章。
  2. 2 电路设计安全要点 零基础学硬件最该先记住的一集:真正电人的是电流不是电压,以及为什么不要碰市电。
  3. 3 欧姆定律 实战电路里 90% 以上的电阻都是用它算出来的,以及为什么万用表一串进去电流就变了。
  4. 4 电阻的阻值识别与功率 色环和丝印怎么读,以及为什么算完阻值还得算功率——附烧电阻实验的温度数据。
  5. 5 电阻的三大功能 限流 分流 分压 限流电阻怎么算、为什么并联十个 100Ω 而不是十个 10Ω、以及分压公式为什么和初中课本不一样。
  6. 6 电容基础与常见特性 电容的结构、极性、种类,以及炸电容实验——25V 的电容到底能扛到多少伏。
  7. 7 电容两端电压不能突变 电容最重要的一条性质,以及一个能把复杂电路瞬间看穿的等效方法:电压为 0 时把电容当导线。
  8. 8 电容的延时应用 时间常数 τ 怎么用,上电延时和断电延时两个经典电路,以及选型时为什么先定电容再调电阻。
  9. 9 电容的稳压与滤波 电压跌落是怎么发生的,以及为什么芯片旁边非要加一堆电容。
  10. 10 容抗与低通滤波 容抗公式怎么来的、为什么电容隔直通交、截止频率和 -3dB 是什么、低通滤波的两种理解方式。
  11. 11 高通滤波电路 只把低通的输出位置换一下,就变成了高通——以及工频干扰该怎么处理。
  12. 12 电感基础与基本特性 电感的镜像特性「电流不能突变」,以及一个必须记牢的边界:电感只改变速度,不改变电流最大值。
  13. 13 电感回路、感抗与滤波 断开电感回路为什么会打出几百伏、感抗怎么算、LR 滤波和 RC 滤波该怎么选、LC 谐振为什么会放大。
  14. 14 二极管基础与整流电路 导通压降不是恒定值、为什么二极管不能直接并联电压源、半波与全波整流。
  15. 15 二极管的钳位、方向控制与耐压 钳位电路怎么保护芯片、反接保护为什么不能接在 GND 端、以及耐压标称的余量到底有多少。
  16. 16 稳压二极管 唯一一种「故意让它击穿」的二极管——稳压管怎么用、工作电流取多少、为什么必须反接。
  17. 17 三极管的基本结构与开关功能 三极管本质是一个电子开关,以及为什么不能拿两个二极管拼出一个三极管。
  18. 18 三极管开关电路设计与计算 基极电阻为什么不能随便取 1K/10K,以及两个电阻对比实验的温度数据。
  19. 19 N 管与 P 管的选择 什么时候用 N 管、什么时候用 P 管——这一集的结论必须记准,后面 MOS 管完全沿用。
  20. 20 三极管的反相、下拉电阻与耐压 集电极输出为什么是反相的、基极下拉电阻为什么「非常重要」、以及三个耐压里该关注哪个。
  21. 21 实战模块 水龙头 温控风扇 人体感应灯 光控灯 四个真实产品的电路原理,以及比较器为什么要加上拉电阻。
  22. 22 MOS 管的基本结构与导通条件 MOS 管由四部分组成、寄生体二极管怎么来的,以及 Vgs 导通条件为什么 P 管是负值。
  23. 23 MOS 开关电路设计与寄生参数 栅极为什么不用限流电阻、断开后灯还亮是为什么、以及 G-S 电阻该取多大。
  24. 24 NMOS 与 PMOS 电源开关设计 N 管源极不接地会掉进放大状态、自举电路怎么把电压顶上去、PMOS 防反接,以及 MOS 电流为什么能双向流。
  25. 25 MOS 的体二极管、Vgs 与耐压 体二极管抵消的仿真实测、Vgs 与 Id 的实测曲线,以及 G-S 耐压击穿的全过程。
  26. 26 比较器 推挽和开漏的区别、上拉电阻怎么取、输入范围限制,以及颤振为什么要加正反馈。
  27. 27 运放基础与虚短虚断 虚短的两个前提条件、虚断为什么成立,以及为什么外部电阻不能取太大。
  28. 28 四种放大电路推导 同相、反相、单电源反相、差分——用虚短虚断加欧姆定律全部推一遍。
  29. 29 电流采样电路 低端、高端、仪表放大器、跨阻放大——四种电流采样方案的取舍,以及 VOS 怎么校准。
  30. 30 恒流源电路 恒流源怎么让电流不随负载变化、两个限制因素、自激振荡怎么解决,以及高端反馈的两种方案。
  31. 31 直流稳压电源 带反馈和不带反馈两种稳压电源的原理对比,以及为什么线性电源效率低。
  32. 32 开关电源 BUCK 与 BOOST 从「开关 + 电阻 + 电容」一步步推出 BUCK 拓扑,以及 BOOST 怎么靠电感升压。
  33. 33 电感饱和电流与电荷泵 电感饱和为什么烧开关,以及用电荷泵升压和产生负压。
  34. 34 实战项目 纯硬件循迹小车 从原理到原理图,把前面学的所有知识点拼成一台真正能跑的小车。
  35. 35 PCB 设计全流程 从画原理图库封装到打板,Altium Designer 的完整操作流程和所有关键数值。