|
|
@@ -0,0 +1,788 @@
|
|
|
+# 尚硅谷 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(器件概览)
|
|
|
+
|
|
|
+## 开发板简介
|
|
|
+
|
|
|
+### 开发板实物图
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+### 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:向上计数时 CNT<CCR 输出有效电平
|
|
|
+ - 输入捕获:测量外部信号频率/脉宽
|
|
|
+ - TIM_CCMR/TIM_CCER/TIM_CNT/TIM_DIER 寄存器详解
|
|
|
+- [ ] **步骤 2.4.3:写入文件**
|
|
|
+
|
|
|
+### 任务 2.5:笔记 10 — DMA数据传输
|
|
|
+
|
|
|
+**代码项目**:`stm32/28_dma_mem2mem_register` ~ `stm32/31_dma_mem2uart_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 2.5.1:读取源码**
|
|
|
+- [ ] **步骤 2.5.2:撰写笔记 10**
|
|
|
+ 内容要点:
|
|
|
+ - DMA 框图:5个总线矩阵 + 仲裁器 + DMA1(7通道)/DMA2(5通道)
|
|
|
+ - 传输流程:外设请求→CPU 让出总线→DMA 传输→完成中断
|
|
|
+ - 存储器到存储器(M2M):Flash → SRAM 复制
|
|
|
+ - 存储器到外设(M2P):SRAM → USART DR 寄存器(自动发送)
|
|
|
+ - DMA 通道映射表:
|
|
|
+ | 通道 | 外设请求 |
|
|
|
+ | TIM1_CH1 | ADC1 |
|
|
|
+ | SPI1_RX/TX | USART1_TX |
|
|
|
+ | ... |
|
|
|
+ - 关键寄存器:CCR/CNDTR/CPAR/CMAR
|
|
|
+ - 增量模式 vs 固定模式
|
|
|
+- [ ] **步骤 2.5.3:写入文件**
|
|
|
+
|
|
|
+### 任务 2.6:笔记 11 — ADC模数转换
|
|
|
+
|
|
|
+**代码项目**:`stm32/32_adc_single_register` ~ `stm32/35_adc_double_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 2.6.1:读取源码**
|
|
|
+- [ ] **步骤 2.6.2:撰写笔记 11**
|
|
|
+ 内容要点:
|
|
|
+ - SAR ADC 工作原理(逐次逼近:二分法比较)
|
|
|
+ - STM32F103ZET6: 3个ADC(ADC1/2/3),12位精度,18个通道
|
|
|
+ - 采样时间 = 采样周期 × ADC 时钟周期;采样周期可编程(1.5~239.5 个周期)
|
|
|
+ - 转换时间 = 采样时间 + 12.5 个周期(12位精度)
|
|
|
+ - 规则组(最多16通道)vs 注入组(最多4通道)
|
|
|
+ - 单次转换 / 连续转换 / 扫描模式
|
|
|
+ - 定时器触发 ADC + DMA 传输
|
|
|
+ - 参考手册 §11 ADC 寄存器(SR/CR1/CR2/SMPR1~2/SQR1~3/DR)
|
|
|
+- [ ] **步骤 2.6.3:写入文件**
|
|
|
+
|
|
|
+### 任务 2.7:笔记 12 — SPI通信与FSMC总线
|
|
|
+
|
|
|
+**代码项目**:`stm32/36_spi_software_register` ~ `stm32/42_lcd_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 2.7.1:读取源码**
|
|
|
+- [ ] **步骤 2.7.2:撰写笔记 12**
|
|
|
+ 内容要点:
|
|
|
+ - SPI 四种模式(CPOL/CPHA 组合)时序图
|
|
|
+ - 3线/4线 SPI(NSS 片选管理)
|
|
|
+ - 软件模拟 SPI(GPIO 位操作)vs 硬件 SPI(寄存器配置)
|
|
|
+ - W25Q64 Flash:读(03h)/写(02h)/擦除(D8h/D7h)/状态寄存器(05h) 指令集
|
|
|
+ - FSMC 地址映射:Bank1(0x60000000~0x6FFFFFFF) → NOR/PSRAM/SRAM/LCD
|
|
|
+ - FSMC 时序参数配置(地址建立时间/数据保持时间)
|
|
|
+ - 参考手册 §23 SPI + §19 FSMC
|
|
|
+- [ ] **步骤 2.7.3:写入文件**
|
|
|
+
|
|
|
+### 任务 2.8:提交批次 2
|
|
|
+
|
|
|
+- [ ] **步骤 2.8.1:更新 wiki/source-stm32-medium.md**
|
|
|
+- [ ] **步骤 2.8.2:追加 wiki/log.md**
|
|
|
+- [ ] **步骤 2.8.3:git 提交**
|
|
|
+
|
|
|
+```bash
|
|
|
+git add .
|
|
|
+git commit -m "ingest: 尚硅谷STM32 进阶篇笔记导入(07~12)"
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 批次 3:高级篇(笔记 13~17)
|
|
|
+
|
|
|
+**来源 DOCX**:`下部-高级篇/2-笔记/1.笔记/03_尚硅谷嵌入式技术之STM32单片机(高级篇)2.0.1.docx`
|
|
|
+**代码目录**:`下部-高级篇/3-代码/stm32/`(项目 01~25)
|
|
|
+
|
|
|
+### 任务 3.1:转换高级篇 DOCX
|
|
|
+
|
|
|
+```powershell
|
|
|
+pandoc "下部-高级篇/2-笔记/1.笔记/03_尚硅谷嵌入式技术之STM32单片机(高级篇)2.0.1.docx" -t markdown --wrap=none --extract-media="C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_advanced_media" -o "C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_advanced.md"
|
|
|
+```
|
|
|
+
|
|
|
+### 任务 3.2:笔记 13 — CAN通信协议与bxCAN外设
|
|
|
+
|
|
|
+**代码项目**:`stm32/01_can_test_register` ~ `stm32/04_can_rx_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 3.2.1:读取 DOCX + 源码**
|
|
|
+- [ ] **步骤 3.2.2:网络补充**
|
|
|
+ CAN 2.0A vs 2.0B 标准补充、CAN FD 后续发展
|
|
|
+- [ ] **步骤 3.2.3:撰写笔记 13**
|
|
|
+ 内容要点:
|
|
|
+ - CAN 协议基础:车用总线、多主从仲裁、广播式通信
|
|
|
+ - CAN 数据帧逐位分析:帧起始(SOF) 1位 → 仲裁段(11/29位ID+RTR) → 控制段(IDE+res+r0+DLC) → 数据段(0~8字节) → CRC段(15位CRC+界定符) → ACK段(2位) → 帧结束(EOF 7位)
|
|
|
+ - 位时序 & 同步(同步段/传播段/相位缓冲段1/2)
|
|
|
+ - bxCAN 外设:3个发送邮箱 + 2个3级深度FIFO + 14个过滤器组
|
|
|
+ - 三种工作模式:初始化/正常/睡眠
|
|
|
+ - 三种测试模式:静默/环回/环回静默
|
|
|
+ - 过滤器配置:列表模式(精确匹配)vs 掩码模式(模糊匹配)
|
|
|
+ - 寄存器版:双机通信(一收一发)
|
|
|
+ - HAL 版:CubeMX 配置 + HAL_CAN_Start/HAL_CAN_AddTxMessage
|
|
|
+ - 参考手册 §22 bxCAN 寄存器
|
|
|
+- [ ] **步骤 3.2.4:写入文件**
|
|
|
+
|
|
|
+### 任务 3.3:笔记 14 — 以太网通信与W5500
|
|
|
+
|
|
|
+**代码项目**:`stm32/05_ethernet_test_register` ~ `stm32/09_ethernet_webserver_register`
|
|
|
+
|
|
|
+- [ ] **步骤 3.3.1:读取源码**
|
|
|
+- [ ] **步骤 3.3.2:撰写笔记 14**
|
|
|
+ 内容要点:
|
|
|
+ - OSI 7层模型 vs TCP-IP 4层模型
|
|
|
+ - 以太网 vs 互联网概念区分
|
|
|
+ - W5500 芯片:全硬件 TCP/IP 协议栈,SPI 接口,8个独立 Socket
|
|
|
+ - W5500 内部架构:SPI口 → 寄存器管理 → 内核 → MAC/PHY → 以太网口
|
|
|
+ - 可变长数据帧模式(VDM) vs 固定长数据帧模式(FDM)
|
|
|
+ - 官方库移植步骤:wizchip_conf.h → SPI 读写注册函数 → socket API
|
|
|
+ - 实验:Ping 通测试 → TCP Server → TCP Client → UDP → WebServer
|
|
|
+ - 参考:W5500 数据手册
|
|
|
+- [ ] **步骤 3.3.3:写入文件**
|
|
|
+
|
|
|
+### 任务 3.4:笔记 15 — WiFi通信与ESP32-C3
|
|
|
+
|
|
|
+**代码项目**:`stm32/10_wifi_test_hal`、`stm32/11_wifi_tcp_server_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 3.4.1:读取源码**
|
|
|
+- [ ] **步骤 3.4.2:撰写笔记 15**
|
|
|
+ 内容要点:
|
|
|
+ - ESP32-C3 规格:RISC-V 32位、2.4GHz WiFi + BLE 5.0
|
|
|
+ - AT 指令模式:通过串口发送 AT 指令控制
|
|
|
+ - 常用 AT 指令表:AT+CWMODE(Station/AP/Station+AP)、AT+CWJAP(连接WiFi)、AT+CIPSTART(建立TCP)、AT+CIPMODE(透传)、AT+CIPSEND(发送数据)
|
|
|
+ - 实验1:AT 指令交互测试
|
|
|
+ - 实验2:TCP 通信(AT+CIPSTART 建立连接 → 数据收发)
|
|
|
+ - 透传模式 vs 非透传模式
|
|
|
+- [ ] **步骤 3.4.3:写入文件**
|
|
|
+
|
|
|
+### 任务 3.5:笔记 16 — BLE低功耗蓝牙
|
|
|
+
|
|
|
+**代码项目**:`stm32/12_ble_server_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 3.5.1:读取源码**
|
|
|
+- [ ] **步骤 3.5.2:撰写笔记 16**
|
|
|
+ 内容要点:
|
|
|
+ - BLE vs 经典蓝牙(功耗/吞吐量/应用场景)
|
|
|
+ - BLE 协议栈架构:Physical → Link Layer → HCI → L2CAP → SMP → ATT → GATT → GAP
|
|
|
+ - GAP 角色:Broadcaster/Observer/Peripheral/Central
|
|
|
+ - GATT 角色:Server/Client,Service → Characteristic → Descriptor 层级
|
|
|
+ - BLE 通信流程:广播 → 扫描 → 连接 → 数据收发 → 断开
|
|
|
+ - STM32 + BLE 模块(AT 指令控制)
|
|
|
+- [ ] **步骤 3.5.3:写入文件**
|
|
|
+
|
|
|
+### 任务 3.6:笔记 17 — LoRa远距离通信
|
|
|
+
|
|
|
+**代码项目**:`stm32/13_lora_node_hal`、`stm32/14_lora_gateway_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 3.6.1:读取源码**
|
|
|
+- [ ] **步骤 3.6.2:撰写笔记 17**
|
|
|
+ 内容要点:
|
|
|
+ - LPWAN 技术阵营对比(LoRa vs NB-IoT vs Sigfox)
|
|
|
+ - LoRa 扩频技术:SF(扩频因子)、BW(带宽)、CR(编码率) 三参数决定速率/灵敏度
|
|
|
+ - CAD(信道活动检测):低功耗监听模式
|
|
|
+ - 星型组网拓扑:节点 ↔ 网关 ↔ 服务器
|
|
|
+ - AT 指令配置:频率/功率/扩频因子/数据速率
|
|
|
+ - 节点 → 网关 数据发送 + 接收确认
|
|
|
+- [ ] **步骤 3.6.3:写入文件**
|
|
|
+
|
|
|
+### 任务 3.7:提交批次 3
|
|
|
+
|
|
|
+- [ ] **步骤 3.7.1:更新 wiki/source-stm32-advanced.md**
|
|
|
+- [ ] **步骤 3.7.2:追加 wiki/log.md**
|
|
|
+- [ ] **步骤 3.7.3:git 提交**
|
|
|
+
|
|
|
+```bash
|
|
|
+git add .
|
|
|
+git commit -m "ingest: 尚硅谷STM32 高级篇笔记导入(13~17)"
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 批次 4:扩展篇(笔记 18~21)
|
|
|
+
|
|
|
+**来源 DOCX**:`下部-高级篇/2-笔记/1.笔记/04_尚硅谷嵌入式技术之STM32单片机(扩展篇)1.0.0.docx`
|
|
|
+**代码目录**:`下部-高级篇/3-代码/stm32/`(项目 15~28)
|
|
|
+
|
|
|
+### 任务 4.1:转换扩展篇 DOCX
|
|
|
+
|
|
|
+```powershell
|
|
|
+pandoc "下部-高级篇/2-笔记/1.笔记/04_尚硅谷嵌入式技术之STM32单片机(扩展篇)1.0.0.docx" -t markdown --wrap=none --extract-media="C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_extension_media" -o "C:\Users\Administrator\AppData\Local\Temp\opencode\stm32_extension.md"
|
|
|
+```
|
|
|
+
|
|
|
+### 任务 4.2:笔记 18 — 电源管理与低功耗模式
|
|
|
+
|
|
|
+**代码项目**:`stm32/15_lowpower_sleep_register` ~ `stm32/20_lowpower_standby_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 4.2.1:读取 DOCX + 源码**
|
|
|
+- [ ] **步骤 4.2.2:撰写笔记 18**
|
|
|
+ 内容要点:
|
|
|
+ - 电源框图逐区域分析:Vdda(模拟) → Vdd(数字) → 1.8V(内核) → Vbat(备份)
|
|
|
+ - 电压调节器三种模式:运转/停止(低功耗)/待机(关闭)
|
|
|
+ - 上电复位(POR) vs 掉电复位(PDR):阈值电压及迟滞
|
|
|
+ - PVD 可编程电压检测器:PLS[2:0] 选择阈值 → 电压低于阈值产生中断
|
|
|
+ - 三种低功耗模式对比:
|
|
|
+ | 模式 | 唤醒源 | 功耗 | 恢复时间 |
|
|
|
+ | 睡眠 | 任意中断/事件 | ~mA | 几μs |
|
|
|
+ | 停止 | 任意EXTI | ~μA | 几μs |
|
|
|
+ | 待机 | RTC/WKUP/NRST | ~nA | 几ms |
|
|
|
+ - 睡眠模式:SLEEP-NOW vs SLEEP-ON-EXIT
|
|
|
+ - 停止模式:调压器配置(正常工作 vs 低功耗)
|
|
|
+ - 待机模式:SRAM/寄存器全部丢失,仅备份域保留
|
|
|
+ - 低功耗设计建议(时钟门控/外设禁用)
|
|
|
+ - 参考手册 §5 PWR 寄存器
|
|
|
+- [ ] **步骤 4.2.3:写入文件**
|
|
|
+
|
|
|
+### 任务 4.3:笔记 19 — BKP备份寄存器与RTC实时时钟
|
|
|
+
|
|
|
+**代码项目**:`stm32/21_bkp_test_register` ~ `stm32/26_rtc_calendar_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 4.3.1:读取源码**
|
|
|
+- [ ] **步骤 4.3.2:撰写笔记 19**
|
|
|
+ 内容要点:
|
|
|
+ - 备份域电路:Vbat 引脚供电 → RTC + LSE + BKP 寄存器 在 Vdd 断电后继续工作
|
|
|
+ - BKP:42 个 16 位备份寄存器 + 防侵入功能(TAMPER)
|
|
|
+ - BKP 访问使能:PWR_CR.DBP = 1 后允许读写
|
|
|
+ - RTC 三时钟源选择:LSE(32.768KHz) / LSI(~40KHz) / HSE(8MHz 分频)
|
|
|
+ - RTC 预分频器:异步分频(7位) + 同步分频(15位) → 精确的 1Hz
|
|
|
+ - RTC 闹钟:RTC_ALR 与 RTC_CNT 比较匹配 → 中断
|
|
|
+ - Unix 时间戳:1970-01-01 起秒数
|
|
|
+ - 日历实验:初始化 → 读取 → 显示 年月日时分秒
|
|
|
+ - 参考手册 §6 BKP + §17 RTC
|
|
|
+- [ ] **步骤 4.3.3:写入文件**
|
|
|
+
|
|
|
+### 任务 4.4:笔记 20 — 看门狗IWDG与WWDG
|
|
|
+
|
|
|
+**代码项目**:`stm32/27_iwdg_test_register`、`stm32/28_iwdg_test_hal`
|
|
|
+
|
|
|
+- [ ] **步骤 4.4.1:读取源码**
|
|
|
+- [ ] **步骤 4.4.2:撰写笔记 20**
|
|
|
+ 内容要点:
|
|
|
+ - IWDG 独立看门狗:LSI(~40KHz) 时钟源,完全独立
|
|
|
+ - IWDG 超时时间计算:`Tout = (RL+1) × 4 × 2^PR / 40KHz`
|
|
|
+ - IWDG 预分频系数-超时速查表:
|
|
|
+ | PR[2:0] | 分频系数 | 最大超时(RL=0xFFF) |
|
|
|
+ | 000 | 4 | ~0.82s |
|
|
|
+ | 011 | 32 | ~6.55s |
|
|
|
+ | 111 | 256 | ~52.43s |
|
|
|
+ - WWDG 窗口看门狗:APB1 时钟,有窗口限制(必须在窗口内喂狗)
|
|
|
+ - WWDG 窗口机制:CNT>T[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 无对应代码),仍需要:
|
|
|
+- 参考手册页码引用
|
|
|
+- 原理图分析
|
|
|
+- 网络知识补充
|
|
|
+- 图片处理
|