# 尚硅谷 STM32 笔记导入实现计划 > **For agentic workers:** REQUIRED SUB-SKILL: 使用 `subagent-driven-development` 或 `executing-plans` 逐任务执行。复选框 `- [ ]` 标记跟踪进度。 **目标**:将尚硅谷 STM32 全套 4 份 DOCX 笔记 + 配套源码转换为 21 篇结构化 Markdown 笔记,存入 `X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/` **处理方法**:每批次:pandoc 转 MD → 按章节拆篇 → 逐篇扩写(参考手册引用 + 原理图引用 + 网络资料补充)→ 从源码复制代码 + 逐行注释 → 图片 API 验证 → git 提交 **参考资料**: - `docs/如何将他人文档整理为LLM-Wiki笔记.md` - `docs/superpowers/specs/2026-07-15-stm32-silicon-valley-ingest-design.md` - `X-Knowledge-Base/raw/Joplin/嵌入式+Linux/FreeRTOS学习笔记/01-*.md`(自由格式参考) **图片 API**:使用视觉模型逐张验证图片内容,仅保留寄存器位域图/框图/时序图/原理图 **最终提交**:全部 4 批次完成后,统一次提交 `ingest: 尚硅谷STM32全套笔记导入` --- ## 文件产出清单 ### 目标目录:`X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/` | 编号 | 文件名 | 来源 DOCX | 代码项目 | |------|--------|----------|---------| | 01 | `01-STM32概述与开发环境搭建.md` | 基础篇 | — | | 02 | `02-GPIO寄存器详解与三步进化法.md` | 基础篇 | — | | 03 | `03-GPIO输出:LED控制.md` | 基础篇 | stm32_base/01~04 | | 04 | `04-GPIO输入与NVIC中断系统.md` | 基础篇 | stm32_base/05~06 | | 05 | `05-系统时钟RCC详解.md` | 基础篇 | — | | 06 | `06-串口USART通信.md` | 基础篇 | stm32_base/07~12 | | 07 | `07-I2C通信与EEPROM 24C02.md` | 进阶篇 | stm32_base/13~15 | | 08 | `08-SysTick与通用定时器TIM.md` | 进阶篇 | stm32_base/16~19 | | 09 | `09-TIM高级应用:PWM与输入捕获.md` | 进阶篇 | stm32_base/20~27 | | 10 | `10-DMA数据传输.md` | 进阶篇 | stm32_base/28~31 | | 11 | `11-ADC模数转换.md` | 进阶篇 | stm32_base/32~35 | | 12 | `12-SPI通信与FSMC总线.md` | 进阶篇 | stm32_base/36~42 | | 13 | `13-CAN通信协议与bxCAN外设.md` | 高级篇 | stm32/01~04 | | 14 | `14-以太网通信与W5500.md` | 高级篇 | stm32/05~09 | | 15 | `15-WiFi通信与ESP32-C3.md` | 高级篇 | stm32/10~11 | | 16 | `16-BLE低功耗蓝牙.md` | 高级篇 | stm32/12 | | 17 | `17-LoRa远距离通信.md` | 高级篇 | stm32/13~14 | | 18 | `18-电源管理与低功耗模式.md` | 扩展篇 | stm32/15~20 | | 19 | `19-BKP备份寄存器与RTC实时时钟.md` | 扩展篇 | stm32/21~26 | | 20 | `20-看门狗IWDG与WWDG.md` | 扩展篇 | stm32/27~28 | | 21 | `21-附录:HAL库架构与Keil MDK深入.md` | 扩展篇 | — | ### 附加产出 - `X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/assets/` — 精选图片 - `wiki/source-stm32-*.md` — 资料摘要页 - `wiki/index.md` — 更新全局索引 - `wiki/log.md` — 追加变更日志 --- ## 各批次通用步骤模板 每篇笔记的处理步骤一致,以下为每篇的标准操作流程: 1. **读取 pandoc 转换后的 MD 中对应章节内容** 2. **读取对应源码项目文件**(main.c, driver.h, driver.c) 3. **处理该章节图片**:用视觉 API 验证 → 重命名 → 复制到 assets/ 4. **撰写笔记**: - 从原 DOCX 保留原意,但补充参考手册页码/原理图引用/网络资料 - 代码块直接从源文件复制,标注文件路径,每行位操作加注释 - 寄存器+HAL 双版 - 添加核心函数速查表 + 常见问题 5. **写入目标路径** 6. **追加 log 信息** --- ## 批次 1:基础篇(笔记 01~06) **来源 DOCX**:`上部-基础篇/01_笔记/01_尚硅谷嵌入式技术之STM32单片机(基础篇)1.0.2.docx` **代码目录**:`上部-基础篇/03_代码/stm32/` **参考手册**:`上部-基础篇/02_资料/02_stm32官方资料/1-STM32F10x-中文参考手册_最新.pdf` **原理图**:`上部-基础篇/02_资料/05_原理图/STM32-F103ZET6开发板.pdf` ### 任务 1.1:准备阶段 — 转换基础篇 DOCX - [ ] **步骤 1.1.1:pandoc 转换 + 提取图片** ```powershell pandoc "上部-基础篇/01_笔记/01_尚硅谷嵌入式技术之STM32单片机(基础篇)1.0.2.docx" -t markdown --wrap=none --extract-media="C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_basic_media" -o "C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_basic.md" ``` - [ ] **步骤 1.1.2:阅读转换结果概览** 读取 `stm32_basic.md` 前 500 行,确认章节结构和图片引用 ### 任务 1.2:笔记 01 — STM32概述与开发环境搭建 **来源章节**:基础篇 DOCX 第1~3章(STM32概述 + Keil安装 + 最小系统) - [ ] **步骤 1.2.1:读取相关章节内容** 从 pandoc 输出的 MD 中读取 STM32概述、ARM Cortex-M3、命名规则、Keil安装、最小系统等章节 - [ ] **步骤 1.2.2:读取参考资料** - STM32F103ZET6 数据手册 §1~3(命名规则、引脚定义) - 原理图 PDF 最小系统部分(电源/时钟/复位/下载调试电路) - Cortex-M3 权威指南(内核架构) - 代码项目 `stm32/01_led_register` 的工程结构 - [ ] **步骤 1.2.3:处理本章图片** - 定位本章节涉及的图片(image1~image33) - 视觉 API 逐张验证内容 - 筛选保留:最小系统框图、命名规则图、开发板实物图 - 删除:IDE 安装界面截图(image12~image23) - 重命名图片到 `assets/` - [ ] **步骤 1.2.4:撰写笔记 01** ```markdown --- tags: [source-summary] type: source source: "尚硅谷嵌入式技术之STM32单片机(基础篇)V1.0.2 — 第1~3章" author: "尚硅谷研究院" date: 2026-07-15 created: 2026-07-15 --- # STM32概述与开发环境搭建 > **用生活理解**:如果把STM32比作一台微型电脑——ARM内核就像电脑的CPU,而Keil MDK就像Visual Studio,开发板就是一台迷你主机。 ## STM32概述 ### 关于ARM内核 - ARM = Advanced RISC Machines - Cortex-M3 内核特性:32位RISC、3级流水线、Thumb-2指令集、NVIC中断控制器 - 参考:Cortex-M3 权威指南 第2章 ### 什么是STM32 - ST = STMicroelectronics(意法半导体) - M = Microcontroller(微控制器) - 32 = 32位处理器 - 基于 ARM Cortex-M 内核的32位MCU ### STM32应用场景 - 工业自动化、电机控制、物联网终端、消费电子、医疗设备 ### STM32系列MCU命名规则 - STM32 F 103 Z E T 6 含义逐段解析 - 参考:STM32F103xCDE 数据手册 §1(器件概览) ## 开发板简介 ### 开发板实物图 ![开发板资源图](assets/xxx.png) ### STM32F103ZET6 最小系统 最小系统 = STM32芯片 + 电源 + 时钟 + 复位 + 下载调试 **电源电路**: - 双路供电:USB Type-C (5V) → AMS1117 → 3.3V - ST-Link 直接提供 3.3V - 参考:原理图第1页(电源部分) **时钟电路**: - 外部8MHz晶振(HSE) + 32.768KHz晶振(LSE) - 原理图第2页 **复位电路**: - NRST 引脚 + 按键 + RC电路 - 原理图第3页 **下载调试电路**: - SWD接口(SWDIO/SWCLK)+ ST-Link - 参考:原理图第3页 ## STM32开发方式 三种开发方式对比: | 方式 | 特点 | |------|------| | **寄存器** | 直接操作内存地址,代码最小、最深理解硬件 | | **标准库** | 官方封装寄存器操作,函数名规范 | | **HAL库** | CubeMX图形化配置,移植性好,代码量大 | ## 开发工具 ### Keil MDK - 下载 → 安装 → 离线芯片支持包 → 注册 - 芯片包选型:STM32F103ZET6 → Keil.STM32F1xx_DFP ### 项目文件结构 ``` Project/ ├── Start/ # 启动文件 startup_stm32f10x_hd.s ├── User/ # main.c + 用户代码 ├── Hardware/ # 外设驱动(LED/KEY等) ├── Library/ # 标准库文件 ├── System/ # system_stm32f1xx.c └── Objects/ # 编译输出 ``` ### 启动文件选择 | 文件 | 适用芯片 | |------|---------| | startup_stm32f10x_ld.s | 16~32KB Flash | | startup_stm32f10x_md.s | 64~128KB Flash | | startup_stm32f10x_hd.s | 256~512KB Flash | STM32F103ZET6 = 512KB Flash → 选 **hd** ## 烧录方法 - ST-Link SWD 方式(4线:SWDIO/SWCLK/VCC/GND) ## 核心函数速查 (环境搭建篇无代码 API,但列出常用概念) ## 常见问题与避坑 - 芯片支持包在线安装太慢 → 离线下载安装 - Keil MDK 需注册 → 使用注册机 - 下载失败 → 检查 ST-Link 驱动、SWD 接线 ``` - [ ] **步骤 1.2.5:写入文件** 写入 `X-Knowledge-Base/raw/Joplin/嵌入式+Linux/STM32学习笔记/01-STM32概述与开发环境搭建.md` ### 任务 1.3:笔记 02 — GPIO寄存器详解与三步进化法 **来源章节**:基础篇 DOCX 第4~5章(点亮LED + GPIO详解) **代码项目**:`stm32/01_led_register` - [ ] **步骤 1.3.1:读取 DOCX 相关章节 + 源码** 读取:GPIO 8种模式、7个寄存器、三步进化法 读取源码:`stm32/01_led_register/User/main.c` - [ ] **步骤 1.3.2:网络补充** 搜索补充:GPIO 内部结构框图(P-MOS/N-MOS/施密特触发器)、输出速度与EMI关系 - [ ] **步骤 1.3.3:处理图片** GPIO 寄存器位域图、内部结构框图保留;IDE截图删除 - [ ] **步骤 1.3.4:撰写笔记 02** 内容要点: - GPIO 内部结构框图 + 逐部件分析 - 8种工作模式表格(推挽/开漏/浮空/上拉/下拉/模拟/复用推挽/复用开漏) - 关键寄存器表格: | 寄存器 | 地址偏移 | 功能 | | CRL | 0x00 | 低8位端口配置(MODE + CNF) | | CRH | 0x04 | 高8位端口配置 | | IDR | 0x08 | 输入数据寄存器 | | ODR | 0x0C | 输出数据寄存器 | | BSRR | 0x10 | 位设置/清除寄存器 | | BRR | 0x14 | 位清除寄存器 | | LCKR | 0x18 | 锁定寄存器 | - "三步进化法"完整演示: - 步骤1:裸地址操作(`*(uint32_t *)(0x40010800 + 0x0C)`) - 步骤2:结构体宏定义(`GPIOA->ODR`) - 步骤3:位宏定义(`GPIOA->ODR |= GPIO_ODR_ODR0`) - 代码从 `01_led_register/User/main.c` 复制 - 原生代码包含注释"改进1/改进2/改进3",保留并扩展 - 参考手册 §8 寄存器位域 - 原理图 LED 电路 - [ ] **步骤 1.3.5:写入文件** ### 任务 1.4:笔记 03 — GPIO输出:LED控制 **来源章节**:基础篇 第6章(LED流水灯) **代码项目**:`stm32/02_led_flow_register`、`stm32/03_led_flow_pro_register`、`stm32/04_led_flow_pro_hal` - [ ] **步骤 1.4.1:读取源码** - `02_led_flow_register/User/main.c` - `03_led_flow_pro_register/User/main.c` - `03_led_flow_pro_register/Hardware/LED/led.c`、`led.h` - `03_led_flow_pro_register/User/Delay.h`、`Delay.c` - `04_led_flow_pro_hal/User/main.c` - `04_led_flow_pro_hal/Hardware/LED/led.c`、`led.h` - [ ] **步骤 1.4.2:撰写笔记 03** 内容要点: - LED 电路原理(低电平点亮、限流电阻计算) - 寄存器版:流水灯三种实现(移位法/查表法/状态机法) - 模块化封装:Driver_LED.h + Driver_LED.c - Delay 模块:软件延时 vs SysTick 硬件定时差异 - HAL 版:CubeMX 配置 + HAL_GPIO_WritePin - 代码复制:从源文件复制完整 main.c/led.c/led.h,每行注释 - 位运算注释示例: ```c GPIOA->ODR &= ~GPIO_ODR_ODR0; // &=~ 按位与+取反: 保留其他位不变, 只将ODR0位清0 → PA0输出低电平 ``` - [ ] **步骤 1.4.3:写入文件** ### 任务 1.5:笔记 04 — GPIO输入与NVIC中断系统 **来源章节**:基础篇 第7章(按键 + 中断) **代码项目**:`stm32/05_key_led_register`、`stm32/06_key_led_hal` - [ ] **步骤 1.5.1:读取源码** - `05_key_led_register/User/main.c` + `Hardware/KEY/key.c` + `Hardware/LED/led.c` - `06_key_led_hal/User/main.c` - [ ] **步骤 1.5.2:撰写笔记 04** 内容要点: - 机械按键消抖(硬件RC消抖 / 软件延时10~15ms消抖) - 原理图 KEY 电路(PF10 上拉输入) - EXTI 外部中断配置流程(GPIO配置→中断线选择→触发条件→NVIC使能→中断服务函数) - NVIC 优先级分组(4种组别:NVIC_PriorityGroup_0~4) - 中断优先级 = 抢占优先级 + 子优先级 - 寄存器版代码 + HAL 版代码,分别展示 - 参考手册 §9 EXTI 寄存器、§8 NVIC 寄存器 - [ ] **步骤 1.5.3:写入文件** ### 任务 1.6:笔记 05 — 系统时钟RCC详解 **来源章节**:基础篇 第5章后半部分(RCC时钟树) **代码项目**:无需特定项目(系统初始化代码) - [ ] **步骤 1.6.1:读取参考资料** - 参考手册 §7 RCC 寄存器 - 启动文件中的 SystemInit 调用 - `system_stm32f1xx.c` 中的 SystemInit() 源码 - 原理图晶振电路 - [ ] **步骤 1.6.2:网络补充** 搜索补充:STM32F103 时钟树完整框图、PLL 配置限制 - [ ] **步骤 1.6.3:撰写笔记 05** 内容要点: - 时钟树逐级分析: ``` HSE(8MHz) → PLL(x9) → SYSCLK(72MHz) → AHB(72MHz) → APB1(36MHz) → APB2(72MHz) ``` - 5个时钟源详解:HSI/HSE/PLL/LSI/LSE - SystemInit() 源码逐行解析(参考手册 §7.2 时钟配置) - HAL 版 SystemClock_Config() 对照分析 - RCC 关键寄存器:CR(时钟控制)/CFGR(时钟配置)/BDCR/CIR - 修改主频注意事项(Flash 等待周期需同步调整) - [ ] **步骤 1.6.4:写入文件** ### 任务 1.7:笔记 06 — 串口USART通信 **来源章节**:基础篇 第8章(USART通信) **代码项目**:`stm32/07_usart_register` ~ `stm32/12_usart_printf_hal` - [ ] **步骤 1.7.1:读取源码** - `07_usart_register/User/main.c` + `Hardware/USART/usart.c` - `08_usart_iterrupt_register/User/main.c` - `11_usart_printf_register/User/main.c` - `12_usart_printf_hal/User/main.c` - [ ] **步骤 1.7.2:撰写笔记 06** 内容要点: - 异步串行通信协议帧格式(起始位+数据位+校验位+停止位) - 单工/半双工/全双工区别 - 同步/异步区别 - 波特率计算公式:`Baud = fCK / (16 × USARTDIV)` - USART 功能框图分析 - 寄存器版:轮询方式收发 + 中断方式收发 - printf 重定向原理(Keil 微库 + fputc 重写) - HAL 库版:CubeMX 配置 + HAL_UART_Transmit/Receive - 参考手册 §18 USART 寄存器(SR/DR/BRR/CR1~CR3) - [ ] **步骤 1.7.3:写入文件** ### 任务 1.8:提交批次 1 - [ ] **步骤 1.8.1:更新 wiki/source-stm32-basic.md** - [ ] **步骤 1.8.2:追加 wiki/log.md** - [ ] **步骤 1.8.3:git 提交** ```bash git add . git commit -m "ingest: 尚硅谷STM32 基础篇笔记导入(01~06)" ``` --- ## 批次 2:进阶篇(笔记 07~12) **来源 DOCX**:`上部-基础篇/01_笔记/02_尚硅谷嵌入式技术之STM32单片机(进阶篇)1.0.1.docx` **代码目录**:`上部-基础篇/03_代码/stm32/`(项目 13~42) ### 任务 2.1:转换进阶篇 DOCX - [ ] **步骤 2.1.1:pandoc 转换** ```powershell pandoc "上部-基础篇/01_笔记/02_尚硅谷嵌入式技术之STM32单片机(进阶篇)1.0.1.docx" -t markdown --wrap=none --extract-media="C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_medium_media" -o "C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_medium.md" ``` ### 任务 2.2:笔记 07 — I2C通信与EEPROM 24C02 **代码项目**:`stm32/13_i2c_software_register`、`stm32/14_i2c_hardware_register`、`stm32/15_i2c_hardware_hal` - [ ] **步骤 2.2.1:读取 DOCX 章节 + 源码** - [ ] **步骤 2.2.2:撰写笔记 07** 内容要点: - I2C 协议时序逐段分析(起始条件S、从机地址+R/W、应答ACK/非应答NACK、数据字节、停止条件P) - 软件模拟 I2C:GPIO 位操作模拟 SCL/SDA 时序 - 硬件 I2C:状态寄存器分析(SR1/SR2 事件标志) - 24C02 EEPROM:页写(最多8字节)、页写限制(跨页自动回卷)、随机读/顺序读 - 参考手册 §16 I2C 寄存器(CR1/CR2/OAR1/DR/SR1/SR2/TRISE) - 代码双版复刻 - [ ] **步骤 2.2.3:写入文件** ### 任务 2.3:笔记 08 — SysTick与通用定时器TIM **代码项目**:`stm32/16_led_twinkle_systick_register` ~ `stm32/19_led_twinkle_tim_hal` - [ ] **步骤 2.3.1:读取源码** - [ ] **步骤 2.3.2:撰写笔记 08** 内容要点: - SysTick 寄存器详解:CTRL(第0位ENABLE/第1位TICKINT/第2位CLKSOURCE)、LOAD、VAL、CALIB - SysTick 定时时间计算:`Time = (LOAD+1) / (AHB/8)` - TIM 时基单元结构框图:PSC 预分频器 → CNT 计数器 → ARR 自动重装载 → 更新事件(UEV) - 溢出时间公式:`Tout = (ARR+1) × (PSC+1) / Tclk` - TIM 与 SysTick 对比(精度/功能/用途) - 代码双版 - [ ] **步骤 2.3.3:写入文件** ### 任务 2.4:笔记 09 — TIM高级应用:PWM与输入捕获 **代码项目**:`stm32/20_led_breathe_register` ~ `stm32/27_pwm_n_cycle_hal` - [ ] **步骤 2.4.1:读取源码** - [ ] **步骤 2.4.2:撰写笔记 09** 内容要点: - PWM 频率 = Tclk / (PSC+1) / (ARR+1);占空比 = CCR / (ARR+1) - 呼吸灯原理:逐渐改变 CCR 值 → 改变占空比 → LED 亮度渐变 - 占空比/周期独立控制(ARR 固定改 CCR vs 两者都变) - PWM 模式1 vs 模式2:向上计数时 CNTT[6:0] 时喂狗 → 复位;CNT 减到 0x3F → 复位 - WWDG 早期唤醒中断(EWI):在 CNT=0x40 时产生中断,可提前处理 - 两者对比(独立 vs 窗口)和应用场景选择 - 参考手册 §14 IWDG + §15 WWDG - [ ] **步骤 4.4.3:写入文件** ### 任务 4.5:笔记 21 — 附录:HAL库架构与Keil MDK深入 **来源章节**:扩展篇 DOCX 附录 - [ ] **步骤 4.5.1:读取 DOCX 附录章节** - [ ] **步骤 4.5.2:撰写笔记 21** 内容要点: - HAL 库驱动框架:三层模式(轮询 Polling / 中断 IT / DMA) - HAL 库关键宏:UNUSED()、IS_XXX() 参数校验 - HAL 库初始化流程:HAL_Init() → SystemClock_Config() → MX_GPIO_Init() → MX_USART1_UART_Init() - HAL_StatusTypeDef 返回状态 - Keil MDK 编译四阶段: 1. 编译(armcc/armasm):源文件 → .o 目标文件 2. 链接(armlink):多个 .o + 库 → .axf(.elf) 3. 格式转换(fromelf):.elf → .bin/.hex 4. 下载:烧录到 Flash/ROM - 程序在存储器中的分布: | 段 | 含义 | 存储位置 | | Code | 程序代码 | Flash | | RO-data | 只读数据(const) | Flash | | RW-data | 已初始化全局变量 | Flash 初值 + RAM 运行 | | ZI-data | 零初始化全局变量 | RAM | - 编译输出信息解读(Code/RO/RW/ZI 大小含义) - [ ] **步骤 4.5.3:写入文件** ### 任务 4.6:提交批次 4 - [ ] **步骤 4.6.1:更新 wiki/source-stm32-extension.md** - [ ] **步骤 4.6.2:追加 wiki/log.md** - [ ] **步骤 4.6.3:git 提交** ```bash git add . git commit -m "ingest: 尚硅谷STM32 扩展篇笔记导入(18~21)" ``` --- ## 最终阶段:完成全部提交 - [ ] **步骤 5.1:更新 wiki/index.md** 添加 STM32 章节到索引页,包含全部 21 篇笔记的链接: ```markdown ## STM32 嵌入式开发(尚硅谷) > 来源:[[source-stm32-basic|尚硅谷 STM32 基础篇]] · [[source-stm32-medium|进阶篇]] · [[source-stm32-advanced|高级篇]] · [[source-stm32-extension|扩展篇]] 原始笔记(含 4 种代码 + 通俗解释): `raw/Joplin/嵌入式+Linux/STM32学习笔记/` Wiki 页面: - [[stm32-gpio|GPIO 与寄存器操作]] - [[stm32-timer|定时器与 PWM]] - [[stm32-communication|通信外设串口/I2C/SPI/FSMC]] - [[stm32-advanced-comm|物联网通信 CAN/ETH/WiFi/BLE/LoRa]] - [[stm32-power|低功耗与电源管理]] ``` - [ ] **步骤 5.2:更新 wiki/log.md 追加最终日志** ```markdown ## 2026-07-15 - `ingest`: 导入尚硅谷 STM32 全套 4 份教程笔记 原始资料归档: - `raw/Joplin/嵌入式+Linux/STM32学习笔记/01~21` 共 21 篇笔记 - `raw/Joplin/嵌入式+Linux/STM32学习笔记/assets/` 精选图片 新建 Wiki 页面: - `wiki/source-stm32-basic.md` - `wiki/source-stm32-medium.md` - `wiki/source-stm32-advanced.md` - `wiki/source-stm32-extension.md` - `wiki/stm32-gpio.md` - `wiki/stm32-timer.md` - `wiki/stm32-communication.md` - `wiki/stm32-advanced-comm.md` - `wiki/stm32-power.md` 更新 `wiki/index.md`、`wiki/log.md` ``` - [ ] **步骤 5.3:最终全部提交** ```bash git add . git commit -m "ingest: 尚硅谷STM32全套笔记导入完成(含基础篇/进阶篇/高级篇/扩展篇 共21篇笔记 + wiki更新)" ``` --- ## 执行顺序说明 整个项目按 **4 批次 + 1 次最终提交** 执行,每批次内部按笔记编号顺序串行处理。 每篇笔记的撰写是核心耗时点,遵循模板规格(FreeRTOS 风格的 frontmatter + 原 DOCX 章节结构 + 源码直接复制 + 注释扩展)。 即使某些笔记纯知识型(如 01/05/21 无对应代码),仍需要: - 参考手册页码引用 - 原理图分析 - 网络知识补充 - 图片处理